From df0cf31cc2b31aaa177da54d4fe4cea14fb15264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Rodr=C3=ADguez?= Date: Mon, 16 Dec 2024 15:18:33 +0100 Subject: [PATCH] File content type support (#725) * File content type support * Fix broken import * Fix lint * Fix lint * fix unmocked test --- apps/gateway/package.json | 2 +- apps/web/next.config.mjs | 2 +- apps/web/package.json | 4 +- .../documents/runDocumentInBatchAction.ts | 2 +- apps/web/src/actions/evaluations/runBatch.ts | 2 +- .../dashboard/_components/EvaluationStats.tsx | 2 +- .../Editor/Playground/Preview.tsx | 2 +- .../Editor/Playground/index.tsx | 2 +- .../_components/DocumentationModal/index.tsx | 2 +- .../RunPromptInBatchModal/index.tsx | 2 +- .../useRunBatchForm.ts | 2 +- .../evaluations/[evaluationId]/layout.tsx | 2 +- .../_components/SharedDocument/index.tsx | 2 +- .../_components/SharedDocument/usePrompt.ts | 1 + .../web/src/components/EditorHeader/index.tsx | 2 +- .../src/hooks/useDocumentParameters/index.ts | 2 +- .../recalculateInputs/index.test.ts | 2 +- .../recalculateInputs/index.ts | 2 +- apps/web/src/hooks/useMetadata.ts | 2 +- apps/web/src/workers/readMetadata.ts | 2 +- docs/promptl/advanced/chains.mdx | 2 +- docs/promptl/advanced/snippets.mdx | 2 +- docs/promptl/syntax/messages.mdx | 4 + docs/promptl/usage/adapters/anthropic.mdx | 2 +- docs/promptl/usage/adapters/openai.mdx | 2 +- docs/promptl/usage/adapters/overview.mdx | 2 +- docs/promptl/usage/quick-start.mdx | 4 +- examples/chat-app/package.json | 4 +- examples/sdks/typescript/package.json | 4 +- package.json | 12 +- packages/compiler/src/types/message.ts | 9 + packages/core/package.json | 26 +- .../batchEvaluations/runEvaluationJob.test.ts | 17 + packages/core/src/services/ai/index.test.ts | 2 +- .../ai/providers/rules/custom.test.ts | 24 +- .../src/services/ai/providers/rules/custom.ts | 17 +- .../ai/providers/rules/vercel.test.ts | 74 +++ .../src/services/ai/providers/rules/vercel.ts | 55 +- .../services/chains/ChainValidator/index.ts | 2 +- packages/core/src/services/chains/run.ts | 2 +- .../commits/RunDocumentChecker/index.ts | 2 +- .../documents/recomputeChanges/index.ts | 2 +- packages/core/src/services/documents/scan.ts | 2 +- .../evaluations/EvaluationRunChecker/index.ts | 2 +- .../services/evaluations/prompt/index.test.ts | 2 +- .../core/src/services/evaluations/run.test.ts | 2 +- packages/core/src/services/prompts/run.ts | 2 +- .../providerLogs/serializeForEvaluation.ts | 2 + .../serializeForEvealuation.test.ts | 32 + .../src/tests/factories/evaluationResults.ts | 2 +- packages/sdks/typescript/package.json | 6 +- packages/sdks/typescript/rollup.config.mjs | 2 +- packages/sdks/typescript/src/index.ts | 4 +- .../sdks/typescript/src/tests/render.test.ts | 2 +- .../adapters/adaptPromptConfigToProvider.ts | 2 +- .../utils/adapters/getAdapterFromProvider.ts | 2 +- packages/sdks/typescript/src/utils/types.ts | 2 +- packages/telemetry/package.json | 2 +- packages/web-ui/package.json | 2 +- .../src/ds/molecules/Chat/Message/index.tsx | 259 +++++--- .../DocumentTextEditor/Editor/index.tsx | 2 +- .../ds/molecules/DocumentTextEditor/types.ts | 2 +- pnpm-lock.yaml | 627 ++++-------------- 63 files changed, 579 insertions(+), 692 deletions(-) diff --git a/apps/gateway/package.json b/apps/gateway/package.json index cd87a94ad..093c17ad9 100644 --- a/apps/gateway/package.json +++ b/apps/gateway/package.json @@ -21,7 +21,7 @@ "@latitude-data/constants": "workspace:^", "@latitude-data/core": "workspace:^", "@latitude-data/env": "workspace:^", - "@latitude-data/promptl": "^0.3.2", + "promptl-ai": "^0.3.3", "@sentry/cli": "^2.37.0", "@sentry/node": "^8.30.0", "@t3-oss/env-core": "^0.10.1", diff --git a/apps/web/next.config.mjs b/apps/web/next.config.mjs index 2e664a3be..c3a1f4edf 100644 --- a/apps/web/next.config.mjs +++ b/apps/web/next.config.mjs @@ -13,7 +13,7 @@ const nextConfig = { transpilePackages: INTERNAL_PACKAGES, serverExternalPackages: [ '@latitude-data/sdk', - '@latitude-data/promptl', + 'promptl-ai', '@latitude-data/compiler', '@sentry/nextjs', 'bullmq', diff --git a/apps/web/package.json b/apps/web/package.json index d3436f211..e706f4013 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -21,7 +21,7 @@ "@latitude-data/constants": "workspace:*", "@latitude-data/core": "workspace:*", "@latitude-data/env": "workspace:^", - "@latitude-data/promptl": "^0.3.2", + "promptl-ai": "^0.3.3", "@latitude-data/sdk": "workspace:*", "@latitude-data/web-ui": "workspace:*", "@lucia-auth/adapter-drizzle": "^1.0.7", @@ -31,7 +31,7 @@ "@sentry/utils": "^8.30.0", "@sindresorhus/slugify": "^2.2.1", "@t3-oss/env-nextjs": "^0.10.1", - "ai": "^3.2.42", + "ai": "^4.0.18", "bullmq": "^5.8.5", "date-fns": "^3.6.0", "drizzle-orm": "^0.33.0", diff --git a/apps/web/src/actions/documents/runDocumentInBatchAction.ts b/apps/web/src/actions/documents/runDocumentInBatchAction.ts index 57e7b3317..d4e8a9ac7 100644 --- a/apps/web/src/actions/documents/runDocumentInBatchAction.ts +++ b/apps/web/src/actions/documents/runDocumentInBatchAction.ts @@ -4,7 +4,7 @@ import { readMetadata } from '@latitude-data/compiler' import { publisher } from '@latitude-data/core/events/publisher' import { setupJobs } from '@latitude-data/core/jobs' import { CommitsRepository } from '@latitude-data/core/repositories' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { z } from 'zod' import { diff --git a/apps/web/src/actions/evaluations/runBatch.ts b/apps/web/src/actions/evaluations/runBatch.ts index 6211e28d5..6cbd19c30 100644 --- a/apps/web/src/actions/evaluations/runBatch.ts +++ b/apps/web/src/actions/evaluations/runBatch.ts @@ -4,7 +4,7 @@ import { readMetadata } from '@latitude-data/compiler' import { publisher } from '@latitude-data/core/events/publisher' import { setupJobs } from '@latitude-data/core/jobs' import { EvaluationsRepository } from '@latitude-data/core/repositories' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { nanoid } from 'nanoid' import { z } from 'zod' diff --git a/apps/web/src/app/(private)/evaluations/(evaluation)/[evaluationUuid]/dashboard/_components/EvaluationStats.tsx b/apps/web/src/app/(private)/evaluations/(evaluation)/[evaluationUuid]/dashboard/_components/EvaluationStats.tsx index 27ee5cf5e..49db75059 100644 --- a/apps/web/src/app/(private)/evaluations/(evaluation)/[evaluationUuid]/dashboard/_components/EvaluationStats.tsx +++ b/apps/web/src/app/(private)/evaluations/(evaluation)/[evaluationUuid]/dashboard/_components/EvaluationStats.tsx @@ -8,7 +8,7 @@ import { EvaluationMetadataType, } from '@latitude-data/core/browser' import { ConnectedDocumentWithMetadata } from '@latitude-data/core/repositories' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { Skeleton, Text } from '@latitude-data/web-ui' import { formatCostInMillicents } from '$/app/_lib/formatUtils' import useConnectedDocuments from '$/stores/connectedDocuments' diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/Preview.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/Preview.tsx index 2623cc2ce..92a32a5d1 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/Preview.tsx +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/Preview.tsx @@ -18,7 +18,7 @@ import { Adapters, ConversationMetadata, Chain as PromptlChain, -} from '@latitude-data/promptl' +} from 'promptl-ai' import { Alert, Button, diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/index.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/index.tsx index 775d68ef6..f5d787b77 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/index.tsx +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/Playground/index.tsx @@ -4,7 +4,7 @@ import { useState } from 'react' import { useDocumentParameters } from '$/hooks/useDocumentParameters' import { DocumentVersion } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { AppLocalStorage, SplitPane, diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentationModal/index.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentationModal/index.tsx index 697f2670c..75ee1a751 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentationModal/index.tsx +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentationModal/index.tsx @@ -11,7 +11,7 @@ import { import { readMetadata } from '@latitude-data/compiler' import { ApiKey } from '@latitude-data/core/browser' -import { scan, type ConversationMetadata } from '@latitude-data/promptl' +import { scan, type ConversationMetadata } from 'promptl-ai' import { Modal } from '@latitude-data/web-ui' import { useCurrentDocument } from '$/app/providers/DocumentProvider' import useDocumentVersions from '$/stores/documentVersions' diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/batch/_components/RunPromptInBatchModal/index.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/batch/_components/RunPromptInBatchModal/index.tsx index 11c428207..1a3f94096 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/batch/_components/RunPromptInBatchModal/index.tsx +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/batch/_components/RunPromptInBatchModal/index.tsx @@ -4,7 +4,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react' import { readMetadata } from '@latitude-data/compiler' import { Dataset, DocumentVersion } from '@latitude-data/core/browser' -import { scan, type ConversationMetadata } from '@latitude-data/promptl' +import { scan, type ConversationMetadata } from 'promptl-ai' import { Button, CloseTrigger, diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/_components/Actions/CreateBatchEvaluationModal/useRunBatchForm.ts b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/_components/Actions/CreateBatchEvaluationModal/useRunBatchForm.ts index a3056222d..0507f1ed2 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/_components/Actions/CreateBatchEvaluationModal/useRunBatchForm.ts +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/_components/Actions/CreateBatchEvaluationModal/useRunBatchForm.ts @@ -1,7 +1,7 @@ import { useCallback, useMemo, useState } from 'react' import { Dataset, DocumentVersion } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { SelectOption, useCurrentCommit } from '@latitude-data/web-ui' import { useMappedParametersFromLocalStorage } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/batch/_components/RunPromptInBatchModal/useMappedParametersFromLocalStorage' import useDatasets from '$/stores/datasets' diff --git a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/layout.tsx b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/layout.tsx index 1c8016d6f..bc3f95a9a 100644 --- a/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/layout.tsx +++ b/apps/web/src/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/evaluations/[evaluationId]/layout.tsx @@ -6,7 +6,7 @@ import { EvaluationResultableType, } from '@latitude-data/core/browser' import { env } from '@latitude-data/env' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { Breadcrumb, BreadcrumbItem, diff --git a/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/index.tsx b/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/index.tsx index afca10ee7..a4a6b28ff 100644 --- a/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/index.tsx +++ b/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/index.tsx @@ -11,7 +11,7 @@ import { import { capitalize } from 'lodash-es' import { PublishedDocument } from '@latitude-data/core/browser' -import { ConversationMetadata } from '@latitude-data/promptl' +import { ConversationMetadata } from 'promptl-ai' import { Button, Card, CardContent, cn, TextArea } from '@latitude-data/web-ui' import { Container } from '../Container' diff --git a/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/usePrompt.ts b/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/usePrompt.ts index 3fabc5062..3200ef505 100644 --- a/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/usePrompt.ts +++ b/apps/web/src/app/(public)/share/d/[publishedDocumentUuid]/_components/SharedDocument/usePrompt.ts @@ -46,6 +46,7 @@ function getDeltas({ return content.flatMap((c) => { if (c.type === ContentType.image) return [] + if (c.type === ContentType.file) return [] if (c.type === ContentType.toolCall) return splitInWords(JSON.stringify(c)) if (c.type === ContentType.toolResult) diff --git a/apps/web/src/components/EditorHeader/index.tsx b/apps/web/src/components/EditorHeader/index.tsx index 5d0c21dd0..46faebeca 100644 --- a/apps/web/src/components/EditorHeader/index.tsx +++ b/apps/web/src/components/EditorHeader/index.tsx @@ -9,7 +9,7 @@ import { findFirstModelForProvider, ProviderApiKey, } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { AppLocalStorage, DropdownMenu, diff --git a/apps/web/src/hooks/useDocumentParameters/index.ts b/apps/web/src/hooks/useDocumentParameters/index.ts index de9e72c44..68d7da68e 100644 --- a/apps/web/src/hooks/useDocumentParameters/index.ts +++ b/apps/web/src/hooks/useDocumentParameters/index.ts @@ -2,7 +2,7 @@ import { useCallback, useMemo } from 'react' import { recalculateInputs } from '$/hooks/useDocumentParameters/recalculateInputs' import { DocumentLog, ParameterType } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { AppLocalStorage, useLocalStorage } from '@latitude-data/web-ui' export const INPUT_SOURCE = { diff --git a/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.test.ts b/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.test.ts index f397dfba3..6f8e3f17f 100644 --- a/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.test.ts +++ b/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.test.ts @@ -1,5 +1,5 @@ import { ParameterType } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { describe, expect, it } from 'vitest' import { recalculateInputs } from './index' diff --git a/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.ts b/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.ts index 2a14c93ef..42d157098 100644 --- a/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.ts +++ b/apps/web/src/hooks/useDocumentParameters/recalculateInputs/index.ts @@ -1,6 +1,6 @@ import { Inputs, InputSource } from '$/hooks/useDocumentParameters' import { ParameterType } from '@latitude-data/core/browser' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' const ParameterTypes = Object.values(ParameterType) as string[] diff --git a/apps/web/src/hooks/useMetadata.ts b/apps/web/src/hooks/useMetadata.ts index 8c631739a..b306cfd8d 100644 --- a/apps/web/src/hooks/useMetadata.ts +++ b/apps/web/src/hooks/useMetadata.ts @@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from 'react' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' import { useDebouncedCallback } from 'use-debounce' import type { ReadMetadataWorkerProps } from '../workers/readMetadata' diff --git a/apps/web/src/workers/readMetadata.ts b/apps/web/src/workers/readMetadata.ts index fa504acaa..2e6d5a3c3 100644 --- a/apps/web/src/workers/readMetadata.ts +++ b/apps/web/src/workers/readMetadata.ts @@ -1,6 +1,6 @@ import { readMetadata } from '@latitude-data/compiler' import { type DocumentVersion } from '@latitude-data/core/browser' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' export type ReadMetadataWorkerProps = Parameters[0] & { promptlVersion: number diff --git a/docs/promptl/advanced/chains.mdx b/docs/promptl/advanced/chains.mdx index b37a4e791..94fdf54b9 100644 --- a/docs/promptl/advanced/chains.mdx +++ b/docs/promptl/advanced/chains.mdx @@ -159,7 +159,7 @@ To run a step, execute the `step` method of the chain instance. The first time ` ### Example: Using the Chain Class ```javascript -import { Chain } from '@latitude-data/promptl'; +import { Chain } from 'promptl-ai'; import OpenAI from 'openai'; // Initialize the OpenAI client diff --git a/docs/promptl/advanced/snippets.mdx b/docs/promptl/advanced/snippets.mdx index a2de1c5d7..9e7077e8d 100644 --- a/docs/promptl/advanced/snippets.mdx +++ b/docs/promptl/advanced/snippets.mdx @@ -76,7 +76,7 @@ function getPrompt(relativePath, currentPath) { ### Using the `resolveFn` Pass your `resolveFn` to the `render` function: ```javascript -import { render } from '@latitude-data/promptl'; +import { render } from 'promptl-ai'; import getPrompt from './getPrompt'; // Import your custom resolve function const { messages, config } = await render({ diff --git a/docs/promptl/syntax/messages.mdx b/docs/promptl/syntax/messages.mdx index ce3405589..2166aeb4a 100644 --- a/docs/promptl/syntax/messages.mdx +++ b/docs/promptl/syntax/messages.mdx @@ -105,6 +105,7 @@ Messages can contain different types of content. By default, all plain text is c - **Text (default)**: `` or ``. - **Image**: `` or ``. Add the image URL or base64-encoded string – depending on your provider's requirements – as the content inside the tag. +- **File**: `` or ``. Add the file URL or base64-encoded string – depending on your provider's requirements – as the content inside the tag. Requires a MIME type `mime` attribute to specify the file type. - **Tool Call**: `` or ``. Represents a tool invocation with attributes like `id`, `name`, and `arguments` (optional). Only allowed inside assistant messages. @@ -116,6 +117,9 @@ Messages can contain different types of content. By default, all plain text is c Take a look at this image: [image url] + + And this PDF: + [file url] diff --git a/docs/promptl/usage/adapters/anthropic.mdx b/docs/promptl/usage/adapters/anthropic.mdx index d95ac8ce8..bbdfbfa36 100644 --- a/docs/promptl/usage/adapters/anthropic.mdx +++ b/docs/promptl/usage/adapters/anthropic.mdx @@ -22,7 +22,7 @@ Here’s how to use PromptL with Anthropic’s API: ```typescript import Anthropic from '@anthropic-ai/sdk' -import { Adapters, render } from '@latitude-data/promptl' +import { Adapters, render } from 'promptl-ai' const prompt = ` --- diff --git a/docs/promptl/usage/adapters/openai.mdx b/docs/promptl/usage/adapters/openai.mdx index 84415b718..b761daa6d 100644 --- a/docs/promptl/usage/adapters/openai.mdx +++ b/docs/promptl/usage/adapters/openai.mdx @@ -14,7 +14,7 @@ PromptL seamlessly integrates with OpenAI's API. By default, PromptL formats pro Here’s how to generate a response from OpenAI using PromptL: ```typescript -import { render } from '@latitude-data/promptl' +import { render } from 'promptl-ai' import OpenAI from 'openai' const prompt = ` diff --git a/docs/promptl/usage/adapters/overview.mdx b/docs/promptl/usage/adapters/overview.mdx index 392439211..09a3a3f21 100644 --- a/docs/promptl/usage/adapters/overview.mdx +++ b/docs/promptl/usage/adapters/overview.mdx @@ -30,7 +30,7 @@ By using an adapter, you don’t need to worry about these differences—PromptL Here’s how to use an adapter in your project. For this example, we’ll use OpenAI: ```javascript -import { render, Adapter } from '@latitude-data/promptl'; +import { render, Adapter } from 'promptl-ai'; const { messages, config } = await render({ prompt, diff --git a/docs/promptl/usage/quick-start.mdx b/docs/promptl/usage/quick-start.mdx index e572fc86d..f87f4ece1 100644 --- a/docs/promptl/usage/quick-start.mdx +++ b/docs/promptl/usage/quick-start.mdx @@ -41,7 +41,7 @@ Here’s how to use PromptL to generate a dynamic prompt and interact with an LL ### Example Code ```javascript -import { render } from '@latitude-data/promptl' +import { render } from 'promptl-ai' import OpenAI from 'openai' // Define your PromptL prompt @@ -84,7 +84,7 @@ console.log(response.choices[0].message.content) For production environments, add error handling to manage unexpected issues: ```javascript -import { render } from '@latitude-data/promptl' +import { render } from 'promptl-ai' import OpenAI from 'openai' async function generateResponse(prompt, parameters) { diff --git a/examples/chat-app/package.json b/examples/chat-app/package.json index f2f1f2854..cadee5581 100644 --- a/examples/chat-app/package.json +++ b/examples/chat-app/package.json @@ -9,13 +9,13 @@ "dev": "tsx watch server.ts" }, "dependencies": { - "@ai-sdk/openai": "^0.0.54", + "@ai-sdk/openai": "^1.0.8", "@anthropic-ai/sdk": "^0.32.1", "@latitude-data/sdk": "workspace:^", "@latitude-data/telemetry": "workspace:^", "@types/morgan": "^1.9.9", "@vercel/otel": "^1.10.0", - "ai": "^4.0.9", + "ai": "^4.0.18", "axios": "^1.7.8", "dotenv": "^16.4.5", "express": "^4.21.1", diff --git a/examples/sdks/typescript/package.json b/examples/sdks/typescript/package.json index af24268ed..47208ad6c 100644 --- a/examples/sdks/typescript/package.json +++ b/examples/sdks/typescript/package.json @@ -8,12 +8,12 @@ "author": "", "license": "ISC", "dependencies": { - "@ai-sdk/openai": "^0.0.54", + "@ai-sdk/openai": "^1.0.8", "@anthropic-ai/sdk": "^0.32.1", "@latitude-data/sdk": "workspace:^", "@latitude-data/telemetry": "workspace:^", "@vercel/otel": "^1.10.0", - "ai": "^4.0.3", + "ai": "^4.0.18", "openai": "^4.68.4", "zod": "^3.23.8" } diff --git a/package.json b/package.json index 38e0068ec..fa5c29d1e 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ } }, "dependencies": { - "@ai-sdk/anthropic": "^0.0.48", - "@ai-sdk/azure": "^0.0.32", - "@ai-sdk/google": "^0.0.51", - "@ai-sdk/mistral": "^0.0.38", - "@ai-sdk/openai": "^0.0.54", + "@ai-sdk/anthropic": "^1.0.5", + "@ai-sdk/azure": "^1.0.10", + "@ai-sdk/google": "^1.0.10", + "@ai-sdk/mistral": "^1.0.5", + "@ai-sdk/openai": "^1.0.8", "@aws-sdk/client-s3": "^3.645.0", "@aws-sdk/s3-request-presigner": "^3.679.0", "@monaco-editor/react": "^4.6.0", @@ -59,7 +59,7 @@ "@react-email/components": "^0.0.23", "@sindresorhus/slugify": "^2.2.1", "@t3-oss/env-core": "^0.11.1", - "ai": "^3.2.42", + "ai": "^4.0.18", "argon2": "^0.41.0", "bullmq": "^5.12.11", "class-variance-authority": "^0.7.0", diff --git a/packages/compiler/src/types/message.ts b/packages/compiler/src/types/message.ts index 4913d88ab..66fd6628a 100644 --- a/packages/compiler/src/types/message.ts +++ b/packages/compiler/src/types/message.ts @@ -1,6 +1,7 @@ export enum ContentType { text = 'text', image = 'image', + file = 'file', // Not supported but it is here because almost all code uses legacy compiler types toolCall = 'tool-call', toolResult = 'tool-result', } @@ -34,6 +35,13 @@ export type ImageContent = IMessageContent & { image: string | Uint8Array | Buffer | ArrayBuffer | URL } +// Not supported but it is here because almost all code uses legacy compiler types +export type FileContent = IMessageContent & { + type: ContentType.file + file: string | Uint8Array | Buffer | ArrayBuffer | URL + mimeType: string +} + export type ToolContent = { type: ContentType.toolResult toolCallId: string @@ -52,6 +60,7 @@ export type ToolRequestContent = { export type MessageContent = | TextContent | ImageContent + | FileContent // Not supported but it is here because almost all code uses legacy compiler types | ToolContent | ToolRequestContent diff --git a/packages/core/package.json b/packages/core/package.json index 0354cf0b4..181e5e2bb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -41,11 +41,11 @@ "test:watch": "vitest" }, "devDependencies": { - "@ai-sdk/anthropic": "^0.0.48", - "@ai-sdk/azure": "^0.0.32", - "@ai-sdk/google": "^0.0.51", - "@ai-sdk/mistral": "^0.0.38", - "@ai-sdk/openai": "^0.0.54", + "@ai-sdk/anthropic": "^1.0.5", + "@ai-sdk/azure": "^1.0.10", + "@ai-sdk/google": "^1.0.10", + "@ai-sdk/mistral": "^1.0.5", + "@ai-sdk/openai": "^1.0.8", "@anthropic-ai/sdk": "^0.32.1", "@aws-sdk/client-s3": "^3.645.0", "@aws-sdk/s3-request-presigner": "^3.679.0", @@ -70,7 +70,7 @@ "@types/react": "18.3.0", "@types/react-dom": "18.3.0", "@types/uuid": "^10.0.0", - "ai": "^3.4.7", + "ai": "^4.0.18", "argon2": "^0.41.0", "csv-parse": "^5.5.6", "drizzle-kit": "^0.22.8", @@ -103,11 +103,11 @@ "zod": "^3.23.8" }, "peerDependencies": { - "@ai-sdk/anthropic": "^0.0.48", - "@ai-sdk/azure": "^0.0.32", - "@ai-sdk/google": "^0.0.51", - "@ai-sdk/mistral": "^0.0.38", - "@ai-sdk/openai": "^0.0.54", + "@ai-sdk/anthropic": "^1.0.5", + "@ai-sdk/azure": "^1.0.10", + "@ai-sdk/google": "^1.0.10", + "@ai-sdk/mistral": "^1.0.5", + "@ai-sdk/openai": "^1.0.8", "@aws-sdk/client-s3": "^3.645.0", "@aws-sdk/s3-request-presigner": "^3.679.0", "@latitude-data/compiler": "workspace:^", @@ -122,7 +122,7 @@ "@types/nodemailer-mailgun-transport": "^1.4.6", "@types/react": "18.3.0", "@types/react-dom": "18.3.0", - "ai": "^3.3.3", + "ai": "^4.0.18", "argon2": "^0.41.0", "csv-parse": "^5.5.6", "drizzle-orm": "^0.33.0", @@ -148,7 +148,7 @@ "zod": "^3.23.8" }, "dependencies": { - "@latitude-data/promptl": "^0.3.2", + "promptl-ai": "^0.3.3", "date-fns": "^3.6.0" } } diff --git a/packages/core/src/jobs/job-definitions/batchEvaluations/runEvaluationJob.test.ts b/packages/core/src/jobs/job-definitions/batchEvaluations/runEvaluationJob.test.ts index 2ecea50f8..3f698c080 100644 --- a/packages/core/src/jobs/job-definitions/batchEvaluations/runEvaluationJob.test.ts +++ b/packages/core/src/jobs/job-definitions/batchEvaluations/runEvaluationJob.test.ts @@ -118,6 +118,23 @@ describe('runEvaluationJob', () => { }) it('calls runEvaluation', async () => { + runChainResponse = Result.ok({ + streamType: 'object' as 'object', + object: { result: { result: '42', reason: 'Is always 42' } }, + text: 'chain resolved text', + usage: { promptTokens: 8, completionTokens: 2, totalTokens: 10 }, + documentLogUuid: documentLog.uuid, + providerLog: undefined, + }) + runEvaluationSpy.mockResolvedValueOnce( + Result.ok({ + stream, + response: new Promise((resolve) => resolve(runChainResponse)), + resolvedContent: 'chain resolved text', + errorableUuid: FAKE_ERRORABLE_UUID, + duration: new Promise((resolve) => resolve(1000)), + }), + ) await runEvaluationJob(jobData) expect(runEvaluationSpy).toHaveBeenCalledWith({ providerLog, diff --git a/packages/core/src/services/ai/index.test.ts b/packages/core/src/services/ai/index.test.ts index e7dc5ce7b..e8105f383 100644 --- a/packages/core/src/services/ai/index.test.ts +++ b/packages/core/src/services/ai/index.test.ts @@ -60,7 +60,7 @@ describe('ai function', () => { code: RunErrorCodes.AIRunError, message: ` There are rule violations: -- Assistant messages cannot have images.`.trim(), +- Assistant messages can only have text or tool call content.`.trim(), }), ) }) diff --git a/packages/core/src/services/ai/providers/rules/custom.test.ts b/packages/core/src/services/ai/providers/rules/custom.test.ts index 23f19958b..f37aa4f3e 100644 --- a/packages/core/src/services/ai/providers/rules/custom.test.ts +++ b/packages/core/src/services/ai/providers/rules/custom.test.ts @@ -64,7 +64,7 @@ describe('applyCustomRules', () => { }) }) - it('warns when system messages have non-text content', () => { + it('warns when system messages have unsupported content', () => { const messages = [ { role: 'system', @@ -128,7 +128,7 @@ describe('applyCustomRules', () => { }) }) - it('warns when assistant messages have images', () => { + it('warns when assistant messages have unsupported content', () => { const messages = [ { role: 'system', @@ -172,6 +172,20 @@ describe('applyCustomRules', () => { }, ], }, + { + role: 'assistant', + content: [ + { + type: 'text', + text: 'Also here is a file', + }, + { + type: 'file', + file: 'https://example.com/file.pdf', + mimeType: 'application/pdf', + }, + ], + }, ] as Message[] const rules = applyCustomRules({ @@ -186,7 +200,8 @@ describe('applyCustomRules', () => { rules: [ { rule: ProviderRules.Custom, - ruleMessage: 'Assistant messages cannot have images.', + ruleMessage: + 'Assistant messages can only have text or tool call content.', }, ], }) @@ -254,7 +269,8 @@ describe('applyCustomRules', () => { }, { rule: ProviderRules.Custom, - ruleMessage: 'Assistant messages cannot have images.', + ruleMessage: + 'Assistant messages can only have text or tool call content.', }, ], }) diff --git a/packages/core/src/services/ai/providers/rules/custom.ts b/packages/core/src/services/ai/providers/rules/custom.ts index 1db5a3a43..71fc4d7d9 100644 --- a/packages/core/src/services/ai/providers/rules/custom.ts +++ b/packages/core/src/services/ai/providers/rules/custom.ts @@ -1,14 +1,14 @@ import { AppliedRules, ProviderRules } from './types' export function applyCustomRules(rules: AppliedRules): AppliedRules { - const hasNonTextSystemMessage = rules.messages.some( + const unsupportedSystemContent = rules.messages.some( (message) => message.role === 'system' && Array.isArray(message.content) && - message.content.some((content) => content.type !== 'text'), + message.content.some((content) => !['text'].includes(content.type)), ) - if (hasNonTextSystemMessage) { + if (unsupportedSystemContent) { rules.rules = [ ...rules.rules, { @@ -18,19 +18,22 @@ export function applyCustomRules(rules: AppliedRules): AppliedRules { ] } - const hasAssistantMessageWithImage = rules.messages.some( + const unsupportedAssistantContent = rules.messages.some( (message) => message.role === 'assistant' && Array.isArray(message.content) && - message.content.some((content) => content.type === 'image'), + message.content.some( + (content) => !['text', 'tool-call'].includes(content.type), + ), ) - if (hasAssistantMessageWithImage) { + if (unsupportedAssistantContent) { rules.rules = [ ...rules.rules, { rule: ProviderRules.Custom, - ruleMessage: 'Assistant messages cannot have images.', + ruleMessage: + 'Assistant messages can only have text or tool call content.', }, ] } diff --git a/packages/core/src/services/ai/providers/rules/vercel.test.ts b/packages/core/src/services/ai/providers/rules/vercel.test.ts index 4e141ac9f..7073724aa 100644 --- a/packages/core/src/services/ai/providers/rules/vercel.test.ts +++ b/packages/core/src/services/ai/providers/rules/vercel.test.ts @@ -335,4 +335,78 @@ describe('applyVercelSdkRules', () => { }, ]) }) + + it('adapts file content fields to file part fields', () => { + messages = [ + { + role: 'user', + content: [ + { + type: 'file', + file: 'pdf file content', + mimeType: 'application/pdf', + }, + ], + }, + ] as Message[] + + const rules = vercelSdkRules( + { rules: [], messages, config }, + Providers.Anthropic, + ) + + expect(rules.messages).toEqual([ + { + role: 'user', + content: [ + { + type: 'file', + data: 'pdf file content', + mimeType: 'application/pdf', + }, + ], + }, + ]) + }) + + it('adapts tool call content fields to tool call part fields', () => { + messages = [ + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: '123', + toolName: 'toolName', + toolArguments: { + arg1: 'value1', + arg2: 'value2', + }, + }, + ], + }, + ] as unknown as Message[] + + const rules = vercelSdkRules( + { rules: [], messages, config }, + Providers.Anthropic, + ) + + expect(rules.messages).toEqual([ + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: '123', + toolName: 'toolName', + args: { + arg1: 'value1', + arg2: 'value2', + }, + }, + ], + }, + ]) + }) }) diff --git a/packages/core/src/services/ai/providers/rules/vercel.ts b/packages/core/src/services/ai/providers/rules/vercel.ts index 3cda704cf..ade9c193c 100644 --- a/packages/core/src/services/ai/providers/rules/vercel.ts +++ b/packages/core/src/services/ai/providers/rules/vercel.ts @@ -4,6 +4,7 @@ import type { SystemMessage, TextContent, } from '@latitude-data/compiler' +import { FilePart, ToolCallPart } from 'ai' import { Providers } from '../models' import { @@ -102,6 +103,39 @@ function groupContentMetadata({ }) } +function adaptContentFields({ content }: { content: Message['content'] }) { + if (typeof content === 'string') return content + + return content.map((c) => { + switch (c.type) { + case 'file': { + const adaptedContent = { + ...c, + data: (c as any)['file'] as FilePart['data'], + } + + delete (adaptedContent as any)['file'] + + return adaptedContent + } + + case 'tool-call': { + const adaptedContent = { + ...c, + args: (c as any)['toolArguments'] as ToolCallPart['args'], + } + + delete (adaptedContent as any)['toolArguments'] + + return adaptedContent + } + + default: + return c + } + }) +} + export function vercelSdkRules( rules: AppliedRules, provider: Providers, @@ -111,17 +145,22 @@ export function vercelSdkRules( return flattenSystemMessage({ message, provider }) } - const msg = extractMessageMetadata({ - message, - provider, + const extracted = extractMessageMetadata({ + message: message, + provider: provider, }) - const content = groupContentMetadata({ - content: msg.content, - provider, - messageMetadata: msg.experimental_providerMetadata, + + let content = adaptContentFields({ + content: extracted.content, + }) as unknown as Message['content'] + + content = groupContentMetadata({ + content: content, + provider: provider, + messageMetadata: extracted.experimental_providerMetadata, }) as unknown as Message['content'] - return [{ ...msg, content } as Message] + return [{ ...extracted, content } as Message] }) as Message[] return { ...rules, messages } diff --git a/packages/core/src/services/chains/ChainValidator/index.ts b/packages/core/src/services/chains/ChainValidator/index.ts index e051ebe03..1db2a32d9 100644 --- a/packages/core/src/services/chains/ChainValidator/index.ts +++ b/packages/core/src/services/chains/ChainValidator/index.ts @@ -5,7 +5,7 @@ import { Message, } from '@latitude-data/compiler' import { RunErrorCodes } from '@latitude-data/constants/errors' -import { Chain as PromptlChain } from '@latitude-data/promptl' +import { Chain as PromptlChain } from 'promptl-ai' import { JSONSchema7 } from 'json-schema' import { z } from 'zod' diff --git a/packages/core/src/services/chains/run.ts b/packages/core/src/services/chains/run.ts index 48d811419..29e29bcf8 100644 --- a/packages/core/src/services/chains/run.ts +++ b/packages/core/src/services/chains/run.ts @@ -1,6 +1,6 @@ import { Chain as LegacyChain } from '@latitude-data/compiler' import { RunErrorCodes } from '@latitude-data/constants/errors' -import { Chain as PromptlChain } from '@latitude-data/promptl' +import { Chain as PromptlChain } from 'promptl-ai' import { ProviderApiKey, Workspace } from '../../browser' import { diff --git a/packages/core/src/services/commits/RunDocumentChecker/index.ts b/packages/core/src/services/commits/RunDocumentChecker/index.ts index 4a8343fcd..ea353cab2 100644 --- a/packages/core/src/services/commits/RunDocumentChecker/index.ts +++ b/packages/core/src/services/commits/RunDocumentChecker/index.ts @@ -4,7 +4,7 @@ import { ReferencePromptFn, } from '@latitude-data/compiler' import { RunErrorCodes } from '@latitude-data/constants/errors' -import { Adapters, Chain as PromptlChain, scan } from '@latitude-data/promptl' +import { Adapters, Chain as PromptlChain, scan } from 'promptl-ai' import { DocumentVersion, ErrorableEntity } from '../../../browser' import { Result } from '../../../lib' diff --git a/packages/core/src/services/documents/recomputeChanges/index.ts b/packages/core/src/services/documents/recomputeChanges/index.ts index 207417fbe..4ec117e85 100644 --- a/packages/core/src/services/documents/recomputeChanges/index.ts +++ b/packages/core/src/services/documents/recomputeChanges/index.ts @@ -6,7 +6,7 @@ import { Document as RefDocument, type CompileError, } from '@latitude-data/compiler' -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { eq } from 'drizzle-orm' import { diff --git a/packages/core/src/services/documents/scan.ts b/packages/core/src/services/documents/scan.ts index af37926c8..69ec5546f 100644 --- a/packages/core/src/services/documents/scan.ts +++ b/packages/core/src/services/documents/scan.ts @@ -1,7 +1,7 @@ import path from 'path' import { readMetadata, Document as RefDocument } from '@latitude-data/compiler' -import { ConversationMetadata, scan } from '@latitude-data/promptl' +import { ConversationMetadata, scan } from 'promptl-ai' import { Commit, DocumentVersion, Workspace } from '../../browser' import { diff --git a/packages/core/src/services/evaluations/EvaluationRunChecker/index.ts b/packages/core/src/services/evaluations/EvaluationRunChecker/index.ts index 509be43e1..d67e026fb 100644 --- a/packages/core/src/services/evaluations/EvaluationRunChecker/index.ts +++ b/packages/core/src/services/evaluations/EvaluationRunChecker/index.ts @@ -1,6 +1,6 @@ import { createChain as createChainFn } from '@latitude-data/compiler' import { RunErrorCodes } from '@latitude-data/constants/errors' -import { Adapters, Chain as PromptlChain } from '@latitude-data/promptl' +import { Adapters, Chain as PromptlChain } from 'promptl-ai' import { JSONSchema7 } from 'json-schema' import { diff --git a/packages/core/src/services/evaluations/prompt/index.test.ts b/packages/core/src/services/evaluations/prompt/index.test.ts index 95bbd51d4..2bdfd6507 100644 --- a/packages/core/src/services/evaluations/prompt/index.test.ts +++ b/packages/core/src/services/evaluations/prompt/index.test.ts @@ -1,4 +1,4 @@ -import { scan } from '@latitude-data/promptl' +import { scan } from 'promptl-ai' import { beforeEach, describe, expect, it } from 'vitest' import { getEvaluationPrompt } from '.' diff --git a/packages/core/src/services/evaluations/run.test.ts b/packages/core/src/services/evaluations/run.test.ts index 307485543..2bbeac8f0 100644 --- a/packages/core/src/services/evaluations/run.test.ts +++ b/packages/core/src/services/evaluations/run.test.ts @@ -1,5 +1,5 @@ import { RunErrorCodes } from '@latitude-data/constants/errors' -import { Adapters, Chain } from '@latitude-data/promptl' +import { Adapters, Chain } from 'promptl-ai' import { and, eq, isNull } from 'drizzle-orm' import { afterEach, diff --git a/packages/core/src/services/prompts/run.ts b/packages/core/src/services/prompts/run.ts index ed6dcc492..c8a8a6b50 100644 --- a/packages/core/src/services/prompts/run.ts +++ b/packages/core/src/services/prompts/run.ts @@ -3,7 +3,7 @@ import { Chain as LegacyChain, readMetadata, } from '@latitude-data/compiler' -import { Chain as PromptlChain } from '@latitude-data/promptl' +import { Chain as PromptlChain } from 'promptl-ai' import { Workspace } from '../../browser' import { LogSources } from '../../constants' diff --git a/packages/core/src/services/providerLogs/serializeForEvaluation.ts b/packages/core/src/services/providerLogs/serializeForEvaluation.ts index fbc12ff6a..be7635e5d 100644 --- a/packages/core/src/services/providerLogs/serializeForEvaluation.ts +++ b/packages/core/src/services/providerLogs/serializeForEvaluation.ts @@ -57,6 +57,8 @@ export function formatContext( return item.text case ContentType.image: return '[IMAGE]' + case ContentType.file: + return '[FILE]' } }) .join('\n') diff --git a/packages/core/src/services/providerLogs/serializeForEvealuation.test.ts b/packages/core/src/services/providerLogs/serializeForEvealuation.test.ts index f77b5caed..43528f703 100644 --- a/packages/core/src/services/providerLogs/serializeForEvealuation.test.ts +++ b/packages/core/src/services/providerLogs/serializeForEvealuation.test.ts @@ -484,6 +484,38 @@ describe('formatContext', () => { ) }) + it('should handle file content in messages', () => { + // @ts-expect-error + const providerLog: ProviderLog = { + messages: [ + { + role: MessageRole.user, + content: [ + { type: ContentType.text, text: 'Summarize this file' }, + { + type: ContentType.file, + file: 'https://example.com/file.pdf', + mimeType: 'application/pdf', + }, + ], + }, + { + role: MessageRole.assistant, + content: 'No.', + toolCalls: [], + }, + ], + responseText: 'Ask me again.', + toolCalls: [], + } + + const result = formatContext(providerLog) + + expect(result).toBe( + 'User:\nSummarize this file\n[FILE]\n\n' + 'Assistant:\nNo.', + ) + }) + it('should handle empty messages array', () => { // @ts-expect-error const providerLog: ProviderLog = { diff --git a/packages/core/src/tests/factories/evaluationResults.ts b/packages/core/src/tests/factories/evaluationResults.ts index 5b66136d0..cb5130905 100644 --- a/packages/core/src/tests/factories/evaluationResults.ts +++ b/packages/core/src/tests/factories/evaluationResults.ts @@ -1,6 +1,6 @@ import { faker } from '@faker-js/faker' import { ContentType, Conversation, createChain } from '@latitude-data/compiler' -import { Adapters, Chain as PromptlChain } from '@latitude-data/promptl' +import { Adapters, Chain as PromptlChain } from 'promptl-ai' import { LanguageModelUsage } from 'ai' import { eq } from 'drizzle-orm' diff --git a/packages/sdks/typescript/package.json b/packages/sdks/typescript/package.json index 9f81c31bd..4491d2c47 100644 --- a/packages/sdks/typescript/package.json +++ b/packages/sdks/typescript/package.json @@ -18,7 +18,9 @@ "lint": "eslint src" }, "type": "module", - "files": ["dist"], + "files": [ + "dist" + ], "main": "./dist/index.cjs", "module": "./dist/index.js", "exports": { @@ -39,7 +41,7 @@ "eventsource-parser": "^2.0.1", "node-fetch": "3.3.2", "zod": "^3.23.8", - "@latitude-data/promptl": "^0.3.2" + "promptl-ai": "^0.3.3" }, "devDependencies": { "@latitude-data/compiler": "workspace:^", diff --git a/packages/sdks/typescript/rollup.config.mjs b/packages/sdks/typescript/rollup.config.mjs index 7ac53fd1e..d94496967 100644 --- a/packages/sdks/typescript/rollup.config.mjs +++ b/packages/sdks/typescript/rollup.config.mjs @@ -25,7 +25,7 @@ const EXTERNALS = [ 'stream', 'eventsource-parser/stream', '@latitude-data/telemetry', - '@latitude-data/promptl', + 'promptl-ai', '@latitude-data/compiler', ] const config = [ diff --git a/packages/sdks/typescript/src/index.ts b/packages/sdks/typescript/src/index.ts index bf815648e..08b96bb94 100644 --- a/packages/sdks/typescript/src/index.ts +++ b/packages/sdks/typescript/src/index.ts @@ -11,7 +11,7 @@ import { Config, render, type Message as PromptlMessage, -} from '@latitude-data/promptl' +} from 'promptl-ai' import { LatitudeExporter, LatitudeTelemetrySDK, @@ -447,7 +447,7 @@ class Latitude { export { Latitude, LatitudeApiError, LogSources } -export { Adapters } from '@latitude-data/promptl' +export { Adapters } from 'promptl-ai' export type { ChainEventDto, diff --git a/packages/sdks/typescript/src/tests/render.test.ts b/packages/sdks/typescript/src/tests/render.test.ts index ac9439197..fbb90ebf9 100644 --- a/packages/sdks/typescript/src/tests/render.test.ts +++ b/packages/sdks/typescript/src/tests/render.test.ts @@ -1,4 +1,4 @@ -import { Adapters } from '@latitude-data/promptl' +import { Adapters } from 'promptl-ai' import { Latitude } from '$sdk/index' import { Prompt } from '$sdk/utils/types' import { beforeAll, describe, expect, it, vi } from 'vitest' diff --git a/packages/sdks/typescript/src/utils/adapters/adaptPromptConfigToProvider.ts b/packages/sdks/typescript/src/utils/adapters/adaptPromptConfigToProvider.ts index 9cdd2c2ba..cd4c42e94 100644 --- a/packages/sdks/typescript/src/utils/adapters/adaptPromptConfigToProvider.ts +++ b/packages/sdks/typescript/src/utils/adapters/adaptPromptConfigToProvider.ts @@ -1,5 +1,5 @@ import type { Config } from '@latitude-data/compiler' -import { Adapters, ProviderAdapter } from '@latitude-data/promptl' +import { Adapters, ProviderAdapter } from 'promptl-ai' /** * Configuration parameters in Latitude are defined using camelCase, diff --git a/packages/sdks/typescript/src/utils/adapters/getAdapterFromProvider.ts b/packages/sdks/typescript/src/utils/adapters/getAdapterFromProvider.ts index 1cc03df92..fac0b1549 100644 --- a/packages/sdks/typescript/src/utils/adapters/getAdapterFromProvider.ts +++ b/packages/sdks/typescript/src/utils/adapters/getAdapterFromProvider.ts @@ -4,7 +4,7 @@ import { Adapters, Message, ProviderAdapter, -} from '@latitude-data/promptl' +} from 'promptl-ai' export function getPromptlAdapterFromProvider< M extends AdapterMessageType = Message, diff --git a/packages/sdks/typescript/src/utils/types.ts b/packages/sdks/typescript/src/utils/types.ts index 1005e95c2..d71b73d95 100644 --- a/packages/sdks/typescript/src/utils/types.ts +++ b/packages/sdks/typescript/src/utils/types.ts @@ -6,7 +6,7 @@ import { AdapterMessageType, ProviderAdapter, type Message as PromptlMessage, -} from '@latitude-data/promptl' +} from 'promptl-ai' import { RouteResolver } from '$sdk/utils' import { LatitudeApiError } from '$sdk/utils/errors' import { diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index aaae9a7c3..4f90de118 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -69,7 +69,7 @@ "@rollup/plugin-replace": "^6.0.1", "@rollup/plugin-typescript": "^11.1.6", "@types/node": "^22.7.5", - "ai": "^4.0.10", + "ai": "^4.0.18", "chromadb": "^1.9.4", "cohere-ai": "^7.14.0", "langchain": "^0.3.6", diff --git a/packages/web-ui/package.json b/packages/web-ui/package.json index 882b3980c..7b1d95466 100644 --- a/packages/web-ui/package.json +++ b/packages/web-ui/package.json @@ -32,7 +32,7 @@ "devDependencies": { "@faker-js/faker": "^8.4.1", "@latitude-data/eslint-config": "workspace:*", - "@latitude-data/promptl": "^0.3.2", + "promptl-ai": "^0.3.3", "@latitude-data/typescript-config": "workspace:*", "@monaco-editor/react": "^4.6.0", "@radix-ui/react-avatar": "^1.1.0", 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 a46f4428c..550311815 100644 --- a/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx +++ b/packages/web-ui/src/ds/molecules/Chat/Message/index.tsx @@ -4,6 +4,7 @@ import { ReactNode, useEffect, useMemo, useState } from 'react' import { ContentType, + FileContent, ImageContent, MessageContent, PromptlSourceRef, @@ -17,6 +18,7 @@ import { Badge, BadgeProps, CodeBlock, + Icon, Image, Skeleton, Text, @@ -169,8 +171,8 @@ const Content = ({ try { const parsedValue = JSON.parse(value) return ( -
-
+
+
{JSON.stringify(parsedValue, null, 2)} @@ -219,10 +221,23 @@ const Content = ({ /> ) + case ContentType.file: + return ( + + ) + case ContentType.toolCall: return ( -
-
+
+
{JSON.stringify(value as ToolRequestContent, null, 2)} @@ -232,8 +247,8 @@ const Content = ({ case ContentType.toolResult: return ( -
-
+
+
{JSON.stringify(value as ToolContent, null, 2)} @@ -295,10 +310,14 @@ const ContentText = ({ {group.length > 0 ? group.map((segment, segmentIndex) => ( - + {typeof segment === 'string' ? ( + segment + ) : ( + + )} )) : '\n'} @@ -306,50 +325,53 @@ const ContentText = ({ )) } -function SegmentComponent({ - segment, +function ReferenceComponent({ + reference, collapseParameters, }: { - segment: Segment + reference: Reference collapseParameters: boolean }) { - if (typeof segment === 'string') { - return segment - } - - if (segment.identifier) { - return IdentifierSegment(segment, collapseParameters) - } - - return DynamicSegment(segment, collapseParameters) -} - -function IdentifierSegment(segment: Reference, collapseParameters: boolean) { - const [collapseSegment, setCollapseSegment] = useState(collapseParameters) + const [collapseReference, setCollapseReference] = useState(collapseParameters) useEffect(() => { - setCollapseSegment(collapseParameters) + setCollapseReference(collapseParameters) }, [collapseParameters]) - if (collapseSegment) { + if (collapseReference) { return ( setCollapseSegment(!collapseSegment)} - > - {{{segment.identifier}}} - + reference.identifier ? ( + setCollapseReference(!collapseReference)} + > + {{{reference.identifier}}} + + ) : ( + setCollapseReference(!collapseReference)} + > + (...) + + ) } > - {segment.type === ContentType.text && ( -
{segment.content}
+ {reference.type === ContentType.text && ( +
{reference.content}
+ )} + {reference.type === ContentType.image && ( + )} - {segment.type === ContentType.image && ( - + {reference.type === ContentType.file && ( + )}
) @@ -360,79 +382,39 @@ function IdentifierSegment(segment: Reference, collapseParameters: boolean) { asChild trigger={ setCollapseSegment(!collapseSegment)} + className={cn(colors.textColors.accentForeground, 'cursor-pointer', { + [font.weight.semibold]: !!reference.identifier, + inline: reference.type === ContentType.text, + 'inline-flex py-2': reference.type !== ContentType.text, + })} + onClick={() => setCollapseReference(!collapseReference)} > - {segment.type === ContentType.text && <>{segment.content}} - {segment.type === ContentType.image && ( - + {reference.type === ContentType.text && <>{reference.content}} + {reference.type === ContentType.image && ( + + )} + {reference.type === ContentType.file && ( + )} } > -
{segment.identifier}
+
{reference.identifier || 'dynamic'}
) } -function DynamicSegment(segment: Reference, collapseParameters: boolean) { - const [collapseSegment, setCollapseSegment] = useState(collapseParameters) - useEffect(() => { - setCollapseSegment(collapseParameters) - }, [collapseParameters]) - - if (collapseSegment) { - return ( - setCollapseSegment(!collapseSegment)} - > - (...) - - } - > - {segment.type === ContentType.text && ( -
{segment.content}
- )} - {segment.type === ContentType.image && ( - - )} -
- ) - } - +function FileComponent({ src }: { src: string }) { return ( - setCollapseSegment(!collapseSegment)} - > - {segment.type === ContentType.text && <>{segment.content}} - {segment.type === ContentType.image && ( - - )} - - } + -
dynamic
-
+ + {src.split('/').at(-1)} + ) } @@ -519,6 +501,7 @@ const ContentImage = ({ }) => { if ( (typeof image !== 'string' && !(image instanceof URL)) || + !URL.canParse(image.toString()) || (!image.toString().startsWith('https') && !image.toString().startsWith('http://localhost')) ) { @@ -554,10 +537,76 @@ const ContentImage = ({ wordBreak='breakAll' key={`${index}`} > - + )} + + ) +} + +const ContentFile = ({ + index = 0, + color, + size, + file, + parameters = [], + collapseParameters = false, + sourceMap = [], +}: { + index?: number + color: TextColor + size?: 'default' | 'small' + file: FileContent['file'] + parameters?: string[] + collapseParameters?: boolean + sourceMap?: PromptlSourceRef[] +}) => { + if ( + (typeof file !== 'string' && !(file instanceof URL)) || + !URL.canParse(file.toString()) || + (!file.toString().startsWith('https') && + !file.toString().startsWith('http://localhost')) + ) { + return ( + '} /> + ) + } + + const TextComponent = size === 'small' ? Text.H6 : Text.H5 + + const segment = useMemo( + () => + computeSegments(ContentType.file, file.toString(), sourceMap, parameters), + [file, sourceMap, parameters], + )[0] + + if (!segment) return null + + return ( + + {typeof segment === 'string' ? ( + segment + ) : ( + + )} ) } diff --git a/packages/web-ui/src/ds/molecules/DocumentTextEditor/Editor/index.tsx b/packages/web-ui/src/ds/molecules/DocumentTextEditor/Editor/index.tsx index b278b1fb3..47baf1eb5 100644 --- a/packages/web-ui/src/ds/molecules/DocumentTextEditor/Editor/index.tsx +++ b/packages/web-ui/src/ds/molecules/DocumentTextEditor/Editor/index.tsx @@ -3,7 +3,7 @@ import { useCallback, useMemo, useRef, useState } from 'react' import { AlertCircle, CheckCircle2, LoaderCircle } from 'lucide-react' -import { CompileError } from '@latitude-data/promptl' +import { CompileError } from 'promptl-ai' import { MarkerSeverity, type editor } from 'monaco-editor' import { diff --git a/packages/web-ui/src/ds/molecules/DocumentTextEditor/types.ts b/packages/web-ui/src/ds/molecules/DocumentTextEditor/types.ts index 60f6fb41a..9ce38a585 100644 --- a/packages/web-ui/src/ds/molecules/DocumentTextEditor/types.ts +++ b/packages/web-ui/src/ds/molecules/DocumentTextEditor/types.ts @@ -1,6 +1,6 @@ import { ReactNode } from 'react' -import type { ConversationMetadata } from '@latitude-data/promptl' +import type { ConversationMetadata } from 'promptl-ai' export type DiffOptions = { newValue: string diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2911b7b2b..9b6d48198 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,20 +9,20 @@ importers: .: dependencies: '@ai-sdk/anthropic': - specifier: ^0.0.48 - version: 0.0.48(zod@3.23.8) + specifier: ^1.0.5 + version: 1.0.5(zod@3.23.8) '@ai-sdk/azure': - specifier: ^0.0.32 - version: 0.0.32(zod@3.23.8) + specifier: ^1.0.10 + version: 1.0.10(zod@3.23.8) '@ai-sdk/google': - specifier: ^0.0.51 - version: 0.0.51(zod@3.23.8) + specifier: ^1.0.10 + version: 1.0.10(zod@3.23.8) '@ai-sdk/mistral': - specifier: ^0.0.38 - version: 0.0.38(zod@3.23.8) + specifier: ^1.0.5 + version: 1.0.5(zod@3.23.8) '@ai-sdk/openai': - specifier: ^0.0.54 - version: 0.0.54(zod@3.23.8) + specifier: ^1.0.8 + version: 1.0.8(zod@3.23.8) '@aws-sdk/client-s3': specifier: ^3.645.0 version: 3.679.0 @@ -75,8 +75,8 @@ importers: specifier: ^0.11.1 version: 0.11.1(typescript@5.6.3)(zod@3.23.8) ai: - specifier: ^3.2.42 - version: 3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.6.3))(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@18.3.1)(zod@3.23.8) argon2: specifier: ^0.41.0 version: 0.41.1 @@ -232,9 +232,6 @@ importers: '@latitude-data/env': specifier: workspace:^ version: link:../../packages/env - '@latitude-data/promptl': - specifier: ^0.3.2 - version: 0.3.2 '@sentry/cli': specifier: ^2.37.0 version: 2.38.0(encoding@0.1.13) @@ -253,6 +250,9 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 + promptl-ai: + specifier: ^0.3.3 + version: 0.3.3 rate-limiter-flexible: specifier: ^5.0.3 version: 5.0.4 @@ -327,9 +327,6 @@ importers: '@latitude-data/env': specifier: workspace:^ version: link:../../packages/env - '@latitude-data/promptl': - specifier: ^0.3.2 - version: 0.3.2 '@latitude-data/sdk': specifier: workspace:* version: link:../../packages/sdks/typescript @@ -347,7 +344,7 @@ importers: version: 0.1.65 '@sentry/nextjs': specifier: ^8.34.0 - version: 8.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-5d19e1c8-20240923(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923)(webpack@5.95.0(esbuild@0.19.12)) + version: 8.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-5d19e1c8-20240923(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923)(webpack@5.95.0) '@sentry/utils': specifier: ^8.30.0 version: 8.35.0 @@ -358,8 +355,8 @@ importers: specifier: ^0.10.1 version: 0.10.1(typescript@5.7.2)(zod@3.23.8) ai: - specifier: ^3.2.42 - version: 3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0-rc-5d19e1c8-20240923)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.7.2))(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) bullmq: specifier: ^5.8.5 version: 5.21.2 @@ -414,6 +411,9 @@ importers: posthog-js: specifier: ^1.161.6 version: 1.176.0 + promptl-ai: + specifier: ^0.3.3 + version: 0.3.3 react: specifier: 19.0.0-rc-5d19e1c8-20240923 version: 19.0.0-rc-5d19e1c8-20240923 @@ -599,8 +599,8 @@ importers: examples/chat-app: dependencies: '@ai-sdk/openai': - specifier: ^0.0.54 - version: 0.0.54(zod@3.23.8) + specifier: ^1.0.8 + version: 1.0.8(zod@3.23.8) '@anthropic-ai/sdk': specifier: ^0.32.1 version: 0.32.1(encoding@0.1.13) @@ -617,8 +617,8 @@ importers: specifier: ^1.10.0 version: 1.10.0(@opentelemetry/api@1.9.0)(@opentelemetry/resources@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0)) ai: - specifier: ^4.0.9 - version: 4.0.10(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) axios: specifier: ^1.7.8 version: 1.7.8 @@ -651,8 +651,8 @@ importers: examples/sdks/typescript: dependencies: '@ai-sdk/openai': - specifier: ^0.0.54 - version: 0.0.54(zod@3.23.8) + specifier: ^1.0.8 + version: 1.0.8(zod@3.23.8) '@anthropic-ai/sdk': specifier: ^0.32.1 version: 0.32.1(encoding@0.1.13) @@ -666,8 +666,8 @@ importers: specifier: ^1.10.0 version: 1.10.0(@opentelemetry/api@1.9.0)(@opentelemetry/resources@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0)) ai: - specifier: ^4.0.3 - version: 4.0.7(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) openai: specifier: ^4.68.4 version: 4.68.4(encoding@0.1.13)(zod@3.23.8) @@ -748,28 +748,28 @@ importers: packages/core: dependencies: - '@latitude-data/promptl': - specifier: ^0.3.2 - version: 0.3.2 date-fns: specifier: ^3.6.0 version: 3.6.0 + promptl-ai: + specifier: ^0.3.3 + version: 0.3.3 devDependencies: '@ai-sdk/anthropic': - specifier: ^0.0.48 - version: 0.0.48(zod@3.23.8) + specifier: ^1.0.5 + version: 1.0.5(zod@3.23.8) '@ai-sdk/azure': - specifier: ^0.0.32 - version: 0.0.32(zod@3.23.8) + specifier: ^1.0.10 + version: 1.0.10(zod@3.23.8) '@ai-sdk/google': - specifier: ^0.0.51 - version: 0.0.51(zod@3.23.8) + specifier: ^1.0.10 + version: 1.0.10(zod@3.23.8) '@ai-sdk/mistral': - specifier: ^0.0.38 - version: 0.0.38(zod@3.23.8) + specifier: ^1.0.5 + version: 1.0.5(zod@3.23.8) '@ai-sdk/openai': - specifier: ^0.0.54 - version: 0.0.54(zod@3.23.8) + specifier: ^1.0.8 + version: 1.0.8(zod@3.23.8) '@anthropic-ai/sdk': specifier: ^0.32.1 version: 0.32.1(encoding@0.1.13) @@ -843,8 +843,8 @@ importers: specifier: ^10.0.0 version: 10.0.0 ai: - specifier: ^3.4.7 - version: 3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.7.2))(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@18.3.1)(zod@3.23.8) argon2: specifier: ^0.41.0 version: 0.41.1 @@ -956,9 +956,6 @@ importers: packages/sdks/typescript: dependencies: - '@latitude-data/promptl': - specifier: ^0.3.2 - version: 0.3.2 '@latitude-data/telemetry': specifier: workspace:^ version: link:../../telemetry @@ -971,6 +968,9 @@ importers: node-fetch: specifier: 3.3.2 version: 3.3.2 + promptl-ai: + specifier: ^0.3.3 + version: 0.3.3 typescript: specifier: ^5.5.4 version: 5.7.2 @@ -1130,8 +1130,8 @@ importers: specifier: ^22.7.5 version: 22.8.1 ai: - specifier: ^4.0.10 - version: 4.0.10(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) + specifier: ^4.0.18 + version: 4.0.18(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) chromadb: specifier: ^1.9.4 version: 1.9.4(@google/generative-ai@0.21.0)(cohere-ai@7.14.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(encoding@0.1.13))(encoding@0.1.13)(openai@4.74.0(encoding@0.1.13)(zod@3.23.8)) @@ -1196,9 +1196,6 @@ importers: '@latitude-data/eslint-config': specifier: workspace:* version: link:../../tools/eslint - '@latitude-data/promptl': - specifier: ^0.3.2 - version: 0.3.2 '@latitude-data/typescript-config': specifier: workspace:* version: link:../../tools/typescript @@ -1286,6 +1283,9 @@ importers: postcss: specifier: ^8.4.39 version: 8.4.47 + promptl-ai: + specifier: ^0.3.3 + version: 0.3.3 react: specifier: 18.3.0 version: 18.3.0 @@ -1351,38 +1351,38 @@ importers: packages: - '@ai-sdk/anthropic@0.0.48': - resolution: {integrity: sha512-o4DhUwLXsWJw+6LFWfJgg2m7xJu342/m373zzRWZXXKCrsc5oi9fOMfHtkuggUgC6nSY56Awq+cXkUiwqa8a+w==} + '@ai-sdk/anthropic@1.0.5': + resolution: {integrity: sha512-qNEB7AYz6W0HTHbhJk/brhGZtjivcRdberD1fn3aCdvzlQ321q1EOTc2k7TvfE+PmNCZbp/uutBbWPGHHODKpw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/azure@0.0.32': - resolution: {integrity: sha512-4wYFZhKvLoa4CnydQR2anv4NQeKfX0cab/YVk2xvd0bVC5qMWI1QCiJ8+T7M9S17VFOJ3HY03M8QMtr6DD5Zww==} + '@ai-sdk/azure@1.0.10': + resolution: {integrity: sha512-drbmzYS0iPRU/I3xnzphxNsYvSMjYhoq8gK34zShjeJGpPbewZPsXbPrncX6gdrkD4JR021yCahPc9E6RpXr5Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/google@0.0.51': - resolution: {integrity: sha512-MUwN3tFH0grkL5zZdTUFDCDubQdMjykFw0o9bR3dMFtKP8Z2tc/iEqU1fb79+jbz2HzUBbnNGjqMQiUwG3/OrA==} + '@ai-sdk/google@1.0.10': + resolution: {integrity: sha512-8fvwy1luTLHJmuldDp7NZM+1jo20qMhqgzmONkb2ACNwRCnHtpcLEP2j/tJ7FIFLuvl5wHQP83smKHvdyUD9qA==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/mistral@0.0.38': - resolution: {integrity: sha512-eKPWcEGJzN0/NaeStWUBtQWxqiT2GBrKmZWfPxVv6EeXfAno3g3Q63xIhOvoqAW0S7Td62hjcePZ7QvzqmXSmg==} + '@ai-sdk/mistral@1.0.5': + resolution: {integrity: sha512-CwjmLuLUQVgK6hxsO0Bs4e/azNruDL2SS9+vmJqTO77KgQUe9m7skW5GRTryEVgE/m6pozxau5Q+W9Zk1t7AIQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai@0.0.54': - resolution: {integrity: sha512-0jqUSY9Lq0ie4AxnAucmiMhVBbs8ivvOW73sq3pCNA+LFeb2edOcnI0qmfGfHTn/VOjUCf2TvzQzHQx1Du3sYA==} + '@ai-sdk/openai@1.0.8': + resolution: {integrity: sha512-wcTHM9qgRWGYVO3WxPSTN/RwnZ9R5/17xyo61iUCCSCZaAuJyh6fKddO0/oamwDp3BG7g+4wbfAyuTo32H+fHw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@1.0.17': - resolution: {integrity: sha512-2VyeTH5DQ6AxqvwdyytKIeiZyYTyJffpufWjE67zM2sXMIHgYl7fivo8m5wVl6Cbf1dFPSGKq//C9s+lz+NHrQ==} + '@ai-sdk/provider-utils@2.0.4': + resolution: {integrity: sha512-GMhcQCZbwM6RoZCri0MWeEWXRt/T+uCxsmHEsTwNvEH3GDjNzchfX25C8ftry2MeEOOn6KfqCLSKomcgK6RoOg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -1390,51 +1390,12 @@ packages: zod: optional: true - '@ai-sdk/provider-utils@1.0.20': - resolution: {integrity: sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow==} + '@ai-sdk/provider@1.0.2': + resolution: {integrity: sha512-YYtP6xWQyaAf5LiWLJ+ycGTOeBLWrED7LUrvc+SQIWhGaneylqbaGsyQL7VouQUeQ4JZ1qKYZuhmi3W56HADPA==} engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider-utils@1.0.22': - resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - '@ai-sdk/provider-utils@2.0.2': - resolution: {integrity: sha512-IAvhKhdlXqiSmvx/D4uNlFYCl8dWT+M9K+IuEcSgnE2Aj27GWu8sDIpAf4r4Voc+wOUkOECVKQhFo8g9pozdjA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/provider@0.0.22': - resolution: {integrity: sha512-smZ1/2jL/JSKnbhC6ama/PxI2D/psj+YAe0c0qpd5ComQCNFltg72VFf0rpUSFMmFuj1pCCNoBOCrvyl8HTZHQ==} - engines: {node: '>=18'} - - '@ai-sdk/provider@0.0.24': - resolution: {integrity: sha512-XMsNGJdGO+L0cxhhegtqZ8+T6nn4EoShS819OvCgI2kLbYTIvk0GWFGD0AXJmxkxs3DrpsJxKAFukFR7bvTkgQ==} - engines: {node: '>=18'} - - '@ai-sdk/provider@0.0.26': - resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} - engines: {node: '>=18'} - - '@ai-sdk/provider@1.0.1': - resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==} - engines: {node: '>=18'} - - '@ai-sdk/react@0.0.68': - resolution: {integrity: sha512-dD7cm2UsPWkuWg+qKRXjF+sNLVcUzWUnV25FxvEliJP7I2ajOpq8c+/xyGlm+YodyvAB0fX+oSODOeIWi7lCKg==} + '@ai-sdk/react@1.0.6': + resolution: {integrity: sha512-8Hkserq0Ge6AEi7N4hlv2FkfglAGbkoAXEZ8YSp255c3PbnZz6+/5fppw+aROmZMOfNwallSRuy1i/iPa2rBpQ==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -1445,63 +1406,15 @@ packages: zod: optional: true - '@ai-sdk/react@1.0.3': - resolution: {integrity: sha512-Mak7qIRlbgtP4I7EFoNKRIQTlABJHhgwrN8SV2WKKdmsfWK2RwcubQWz1hp88cQ0bpF6KxxjSY1UUnS/S9oR5g==} + '@ai-sdk/ui-utils@1.0.5': + resolution: {integrity: sha512-DGJSbDf+vJyWmFNexSPUsS1AAy7gtsmFmoSyNbNbJjwl9hRIf2dknfA1V0ahx6pg3NNklNYFm53L8Nphjovfvg==} engines: {node: '>=18'} peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc zod: ^3.0.0 peerDependenciesMeta: - react: - optional: true zod: optional: true - '@ai-sdk/solid@0.0.53': - resolution: {integrity: sha512-0yXkwTE75QKdmz40CBtAFy3sQdUnn/TNMTkTE2xfqC9YN7Ixql472TtC+3h6s4dPjRJm5bNnGJAWHwjT2PBmTw==} - engines: {node: '>=18'} - peerDependencies: - solid-js: ^1.7.7 - peerDependenciesMeta: - solid-js: - optional: true - - '@ai-sdk/svelte@0.0.55': - resolution: {integrity: sha512-glE8mL9HoM5OrgYHCzKpF8nJNodd/GDlHOxOL/J1wbuzdZDvopR21cRjRYN1IPvc2qUtqvEfnNbT7c3CSrdljA==} - engines: {node: '>=18'} - peerDependencies: - svelte: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - - '@ai-sdk/ui-utils@0.0.49': - resolution: {integrity: sha512-urg0KYrfJmfEBSva9d132YRxAVmdU12ISGVlOV7yJkL86NPaU15qcRRWpOJqmMl4SJYkyZGyL1Rw9/GtLVurKw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/ui-utils@1.0.2': - resolution: {integrity: sha512-hHrUdeThGHu/rsGZBWQ9PjrAU9Htxgbo9MFyR5B/aWoNbBeXn1HLMY1+uMEnXL5pRPlmyVRjgIavWg7UgeNDOw==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - - '@ai-sdk/vue@0.0.58': - resolution: {integrity: sha512-8cuIekJV+jYz68Z+EDp8Df1WNiBEO1NOUGNCy+5gqIi+j382YjuhZfzC78zbzg0PndfF5JzcXhWPqmcc0loUQA==} - engines: {node: '>=18'} - peerDependencies: - vue: ^3.3.4 - peerDependenciesMeta: - vue: - optional: true - '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -3165,9 +3078,6 @@ packages: peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' - '@latitude-data/promptl@0.3.2': - resolution: {integrity: sha512-yk6PCCsf8Nwf81gIwIMupF5bbZWdwN9txWEjHSGpd8P1r/A+YblmyM/fIwG9h9RnSFT/stjtfAjb+TNMLqBGmQ==} - '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -6518,41 +6428,8 @@ packages: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} - ai@3.4.23: - resolution: {integrity: sha512-ZA10Cg9smMZkzT6Y5wkz7K2pUUnIQdiBSH1OdHkfE6MFvA0J7PHItaQuixCr5OFv4Aoliq5J8XN1E0W8PH6S4g==} - engines: {node: '>=18'} - peerDependencies: - openai: ^4.42.0 - react: ^18 || ^19 || ^19.0.0-rc - 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 - - ai@4.0.10: - resolution: {integrity: sha512-40GaEGLbp7if1F50zp3Kr03vcqyGS8svyJWpbkgec7G5Ik2rEtnbDWiUoOJuAVqgP5/iy4NgZQfvX3jRmOyQrw==} - engines: {node: '>=18'} - peerDependencies: - react: ^18 || ^19 || ^19.0.0-rc - zod: ^3.0.0 - peerDependenciesMeta: - react: - optional: true - zod: - optional: true - - ai@4.0.7: - resolution: {integrity: sha512-8KWAHZbL2xwQwFqLX/3Cb9+r2xyu0acgYK2xii/kW6l5fl6Bq7Zng+jU7DF7lxNU3M9rf29Gkc0oVrTzkRVJjw==} + ai@4.0.18: + resolution: {integrity: sha512-BTWzalLNE1LQphEka5xzJXDs5v4xXy1Uzr7dAVk+C/CnO3WNpuMBgrCymwUv0VrWaWc8xMQuh+OqsT7P7JyekQ==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -8326,10 +8203,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@1.1.2: - resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} - engines: {node: '>=14.18'} - eventsource-parser@2.0.1: resolution: {integrity: sha512-gMaRLm5zejEH9mNXC54AnIteFI9YwL/q5JKMdBnoG+lEI1JWVGFVk0Taaj9Xb5SKgzIBDZoQX5IzMe44ILWODg==} engines: {node: '>=18.0.0'} @@ -10461,11 +10334,6 @@ packages: nan@2.22.0: resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11355,6 +11223,9 @@ packages: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} + promptl-ai@0.3.3: + resolution: {integrity: sha512-dvguAIE4W06JtBH/cY9uw4T3D395wefPw9pZVPzIYF0aJCYb5Y0O0sirwR7jMfMmOmjmKl27fSAaFFDHvsBuLQ==} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -11928,16 +11799,6 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - seroval-plugins@1.1.1: - resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} - engines: {node: '>=10'} - peerDependencies: - seroval: ^1.0 - - seroval@1.1.1: - resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==} - engines: {node: '>=10'} - serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -12063,9 +11924,6 @@ packages: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - solid-js@1.9.3: - resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==} - sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} @@ -12127,11 +11985,6 @@ packages: resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - sswr@2.1.0: - resolution: {integrity: sha512-Cqc355SYlTAaUt8iDPaC/4DPPXK925PePLMxyBKuWd5kKc5mwsG3nT9+Mq2tyguL5s7b4Jg+IRMpTRsNTAfpSQ==} - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - stable-hash@0.0.3: resolution: {integrity: sha512-c63fvNCQ7ip1wBfPv54MflMA5L6OE5J0p6Fg13IpKft4JAFoNal8+s/jtJ8PibrwqXm4onnbeQsADs8k0NQGUA==} @@ -12333,14 +12186,6 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - swrev@4.0.0: - resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} - - swrv@1.0.4: - resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} - peerDependencies: - vue: '>=3.2.26 < 4' - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -13414,175 +13259,78 @@ packages: snapshots: - '@ai-sdk/anthropic@0.0.48(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.22 - '@ai-sdk/provider-utils': 1.0.17(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/azure@0.0.32(zod@3.23.8)': - dependencies: - '@ai-sdk/openai': 0.0.54(zod@3.23.8) - '@ai-sdk/provider': 0.0.22 - '@ai-sdk/provider-utils': 1.0.17(zod@3.23.8) - zod: 3.23.8 - - '@ai-sdk/google@0.0.51(zod@3.23.8)': + '@ai-sdk/anthropic@1.0.5(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.24 - '@ai-sdk/provider-utils': 1.0.20(zod@3.23.8) - json-schema: 0.4.0 + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/mistral@0.0.38(zod@3.23.8)': + '@ai-sdk/azure@1.0.10(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.22 - '@ai-sdk/provider-utils': 1.0.17(zod@3.23.8) + '@ai-sdk/openai': 1.0.8(zod@3.23.8) + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/openai@0.0.54(zod@3.23.8)': + '@ai-sdk/google@1.0.10(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.22 - '@ai-sdk/provider-utils': 1.0.17(zod@3.23.8) + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/provider-utils@1.0.17(zod@3.23.8)': + '@ai-sdk/mistral@1.0.5(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.22 - eventsource-parser: 1.1.2 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - optionalDependencies: + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/provider-utils@1.0.20(zod@3.23.8)': + '@ai-sdk/openai@1.0.8(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 0.0.24 - eventsource-parser: 1.1.2 - nanoid: 3.3.6 - secure-json-parse: 2.7.0 - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/provider-utils@1.0.22(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - eventsource-parser: 1.1.2 - nanoid: 3.3.7 - secure-json-parse: 2.7.0 - optionalDependencies: + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod: 3.23.8 - '@ai-sdk/provider-utils@2.0.2(zod@3.23.8)': + '@ai-sdk/provider-utils@2.0.4(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 1.0.1 + '@ai-sdk/provider': 1.0.2 eventsource-parser: 3.0.0 nanoid: 3.3.8 secure-json-parse: 2.7.0 optionalDependencies: zod: 3.23.8 - '@ai-sdk/provider@0.0.22': + '@ai-sdk/provider@1.0.2': dependencies: json-schema: 0.4.0 - '@ai-sdk/provider@0.0.24': + '@ai-sdk/react@1.0.6(react@18.3.1)(zod@3.23.8)': dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@0.0.26': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/provider@1.0.1': - dependencies: - json-schema: 0.4.0 - - '@ai-sdk/react@0.0.68(react@18.3.1)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.5(zod@3.23.8) swr: 2.2.5(react@18.3.1) + throttleit: 2.1.0 optionalDependencies: react: 18.3.1 zod: 3.23.8 - '@ai-sdk/react@0.0.68(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - swr: 2.2.5(react@19.0.0-rc-5d19e1c8-20240923) - optionalDependencies: - react: 19.0.0-rc-5d19e1c8-20240923 - zod: 3.23.8 - - '@ai-sdk/react@1.0.3(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8)': + '@ai-sdk/react@1.0.6(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8)': dependencies: - '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.2(zod@3.23.8) + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.5(zod@3.23.8) swr: 2.2.5(react@19.0.0-rc-5d19e1c8-20240923) throttleit: 2.1.0 optionalDependencies: react: 19.0.0-rc-5d19e1c8-20240923 zod: 3.23.8 - '@ai-sdk/solid@0.0.53(solid-js@1.9.3)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - optionalDependencies: - solid-js: 1.9.3 - transitivePeerDependencies: - - zod - - '@ai-sdk/svelte@0.0.55(svelte@4.2.19)(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - sswr: 2.1.0(svelte@4.2.19) - optionalDependencies: - svelte: 4.2.19 - transitivePeerDependencies: - - zod - - '@ai-sdk/ui-utils@0.0.49(zod@3.23.8)': - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - json-schema: 0.4.0 - secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) - optionalDependencies: - zod: 3.23.8 - - '@ai-sdk/ui-utils@1.0.2(zod@3.23.8)': + '@ai-sdk/ui-utils@1.0.5(zod@3.23.8)': dependencies: - '@ai-sdk/provider': 1.0.1 - '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: zod: 3.23.8 - '@ai-sdk/vue@0.0.58(vue@3.5.12(typescript@5.6.3))(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - swrv: 1.0.4(vue@3.5.12(typescript@5.6.3)) - optionalDependencies: - vue: 3.5.12(typescript@5.6.3) - transitivePeerDependencies: - - zod - - '@ai-sdk/vue@0.0.58(vue@3.5.12(typescript@5.7.2))(zod@3.23.8)': - dependencies: - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - swrv: 1.0.4(vue@3.5.12(typescript@5.7.2)) - optionalDependencies: - vue: 3.5.12(typescript@5.7.2) - transitivePeerDependencies: - - zod - '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -15786,14 +15534,6 @@ snapshots: '@langchain/core': 0.3.19(openai@4.74.0(encoding@0.1.13)(zod@3.23.8)) js-tiktoken: 1.0.15 - '@latitude-data/promptl@0.3.2': - dependencies: - acorn: 8.14.0 - code-red: 1.0.4 - locate-character: 3.0.0 - yaml: 2.6.0 - zod: 3.23.8 - '@leichtgewicht/ip-codec@2.0.5': {} '@llamaindex/anthropic@0.0.26(@aws-crypto/sha256-js@5.2.0)(@huggingface/transformers@3.1.0)(encoding@0.1.13)(gpt-tokenizer@2.7.0)(js-tiktoken@1.0.15)(pathe@1.1.2)': @@ -18731,7 +18471,7 @@ snapshots: '@sentry/types': 8.35.0 '@sentry/utils': 8.35.0 - '@sentry/nextjs@8.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-5d19e1c8-20240923(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923)(webpack@5.95.0(esbuild@0.19.12))': + '@sentry/nextjs@8.35.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-5d19e1c8-20240923(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923)(webpack@5.95.0)': dependencies: '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.27.0 @@ -18744,14 +18484,14 @@ snapshots: '@sentry/types': 8.35.0 '@sentry/utils': 8.35.0 '@sentry/vercel-edge': 8.35.0 - '@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(webpack@5.95.0(esbuild@0.19.12)) + '@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(webpack@5.95.0) chalk: 3.0.0 next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-5d19e1c8-20240923(react@19.0.0-rc-5d19e1c8-20240923))(react@19.0.0-rc-5d19e1c8-20240923) resolve: 1.22.8 rollup: 3.29.5 stacktrace-parser: 0.1.10 optionalDependencies: - webpack: 5.95.0(esbuild@0.19.12) + webpack: 5.95.0 transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/core' @@ -18844,12 +18584,12 @@ snapshots: '@sentry/types': 8.35.0 '@sentry/utils': 8.35.0 - '@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(webpack@5.95.0(esbuild@0.19.12))': + '@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(webpack@5.95.0)': dependencies: '@sentry/bundler-plugin-core': 2.22.3(encoding@0.1.13) unplugin: 1.0.1 uuid: 9.0.1 - webpack: 5.95.0(esbuild@0.19.12) + webpack: 5.95.0 transitivePeerDependencies: - encoding - supports-color @@ -20492,6 +20232,7 @@ snapshots: '@vue/compiler-ssr': 3.5.12 '@vue/shared': 3.5.12 vue: 3.5.12(typescript@5.6.3) + optional: true '@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.7.2))': dependencies: @@ -20655,100 +20396,25 @@ snapshots: clean-stack: 4.2.0 indent-string: 5.0.0 - ai@3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.6.3))(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/react': 0.0.68(react@18.3.1)(zod@3.23.8) - '@ai-sdk/solid': 0.0.53(solid-js@1.9.3)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.55(svelte@4.2.19)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - '@ai-sdk/vue': 0.0.58(vue@3.5.12(typescript@5.6.3))(zod@3.23.8) - '@opentelemetry/api': 1.9.0 - eventsource-parser: 1.1.2 - json-schema: 0.4.0 - jsondiffpatch: 0.6.0 - secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) - optionalDependencies: - openai: 4.74.0(encoding@0.1.13)(zod@3.23.8) - react: 18.3.1 - sswr: 2.1.0(svelte@4.2.19) - svelte: 4.2.19 - zod: 3.23.8 - transitivePeerDependencies: - - solid-js - - vue - - ai@3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@18.3.1)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.7.2))(zod@3.23.8): + ai@4.0.18(react@18.3.1)(zod@3.23.8): dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/react': 0.0.68(react@18.3.1)(zod@3.23.8) - '@ai-sdk/solid': 0.0.53(solid-js@1.9.3)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.55(svelte@4.2.19)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - '@ai-sdk/vue': 0.0.58(vue@3.5.12(typescript@5.7.2))(zod@3.23.8) + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) + '@ai-sdk/react': 1.0.6(react@18.3.1)(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.5(zod@3.23.8) '@opentelemetry/api': 1.9.0 - eventsource-parser: 1.1.2 - json-schema: 0.4.0 jsondiffpatch: 0.6.0 - secure-json-parse: 2.7.0 zod-to-json-schema: 3.23.5(zod@3.23.8) optionalDependencies: - openai: 4.74.0(encoding@0.1.13)(zod@3.23.8) react: 18.3.1 - sswr: 2.1.0(svelte@4.2.19) - svelte: 4.2.19 - zod: 3.23.8 - transitivePeerDependencies: - - solid-js - - vue - - ai@3.4.23(openai@4.74.0(encoding@0.1.13)(zod@3.23.8))(react@19.0.0-rc-5d19e1c8-20240923)(solid-js@1.9.3)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.12(typescript@5.7.2))(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 0.0.26 - '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) - '@ai-sdk/react': 0.0.68(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) - '@ai-sdk/solid': 0.0.53(solid-js@1.9.3)(zod@3.23.8) - '@ai-sdk/svelte': 0.0.55(svelte@4.2.19)(zod@3.23.8) - '@ai-sdk/ui-utils': 0.0.49(zod@3.23.8) - '@ai-sdk/vue': 0.0.58(vue@3.5.12(typescript@5.7.2))(zod@3.23.8) - '@opentelemetry/api': 1.9.0 - eventsource-parser: 1.1.2 - json-schema: 0.4.0 - jsondiffpatch: 0.6.0 - secure-json-parse: 2.7.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) - optionalDependencies: - openai: 4.74.0(encoding@0.1.13)(zod@3.23.8) - react: 19.0.0-rc-5d19e1c8-20240923 - sswr: 2.1.0(svelte@4.2.19) - svelte: 4.2.19 zod: 3.23.8 - transitivePeerDependencies: - - solid-js - - vue - ai@4.0.10(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8): + ai@4.0.18(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8): dependencies: - '@ai-sdk/provider': 1.0.1 - '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) - '@ai-sdk/react': 1.0.3(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.2(zod@3.23.8) - '@opentelemetry/api': 1.9.0 - jsondiffpatch: 0.6.0 - zod-to-json-schema: 3.23.5(zod@3.23.8) - optionalDependencies: - react: 19.0.0-rc-5d19e1c8-20240923 - zod: 3.23.8 - - ai@4.0.7(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8): - dependencies: - '@ai-sdk/provider': 1.0.1 - '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) - '@ai-sdk/react': 1.0.3(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) - '@ai-sdk/ui-utils': 1.0.2(zod@3.23.8) + '@ai-sdk/provider': 1.0.2 + '@ai-sdk/provider-utils': 2.0.4(zod@3.23.8) + '@ai-sdk/react': 1.0.6(react@19.0.0-rc-5d19e1c8-20240923)(zod@3.23.8) + '@ai-sdk/ui-utils': 1.0.5(zod@3.23.8) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 zod-to-json-schema: 3.23.5(zod@3.23.8) @@ -22593,8 +22259,6 @@ snapshots: events@3.3.0: {} - eventsource-parser@1.1.2: {} - eventsource-parser@2.0.1: {} eventsource-parser@3.0.0: {} @@ -25625,8 +25289,6 @@ snapshots: nan@2.22.0: optional: true - nanoid@3.3.6: {} - nanoid@3.3.7: {} nanoid@3.3.8: {} @@ -26655,6 +26317,14 @@ snapshots: err-code: 2.0.3 retry: 0.12.0 + promptl-ai@0.3.3: + dependencies: + acorn: 8.14.0 + code-red: 1.0.4 + locate-character: 3.0.0 + yaml: 2.6.0 + zod: 3.23.8 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -27548,14 +27218,6 @@ snapshots: dependencies: randombytes: 2.1.0 - seroval-plugins@1.1.1(seroval@1.1.1): - dependencies: - seroval: 1.1.1 - optional: true - - seroval@1.1.1: - optional: true - serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -27770,13 +27432,6 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - solid-js@1.9.3: - dependencies: - csstype: 3.1.3 - seroval: 1.1.1 - seroval-plugins: 1.1.1(seroval@1.1.1) - optional: true - sort-object-keys@1.1.3: {} sort-package-json@2.10.1: @@ -27837,11 +27492,6 @@ snapshots: dependencies: minipass: 7.1.2 - sswr@2.1.0(svelte@4.2.19): - dependencies: - svelte: 4.2.19 - swrev: 4.0.0 - stable-hash@0.0.3: {} stack-trace@0.0.10: {} @@ -28077,16 +27727,6 @@ snapshots: react: 19.0.0-rc-5d19e1c8-20240923 use-sync-external-store: 1.2.2(react@19.0.0-rc-5d19e1c8-20240923) - swrev@4.0.0: {} - - swrv@1.0.4(vue@3.5.12(typescript@5.6.3)): - dependencies: - vue: 3.5.12(typescript@5.6.3) - - swrv@1.0.4(vue@3.5.12(typescript@5.7.2)): - dependencies: - vue: 3.5.12(typescript@5.7.2) - symbol-tree@3.2.4: {} synckit@0.9.2: @@ -28245,16 +27885,14 @@ snapshots: - encoding - supports-color - terser-webpack-plugin@5.3.10(esbuild@0.19.12)(webpack@5.95.0(esbuild@0.19.12)): + terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.36.0 - webpack: 5.95.0(esbuild@0.19.12) - optionalDependencies: - esbuild: 0.19.12 + webpack: 5.95.0 terser@5.36.0: dependencies: @@ -29203,6 +28841,7 @@ snapshots: '@vue/shared': 3.5.12 optionalDependencies: typescript: 5.6.3 + optional: true vue@3.5.12(typescript@5.7.2): dependencies: @@ -29262,7 +28901,7 @@ snapshots: webpack-virtual-modules@0.5.0: {} - webpack@5.95.0(esbuild@0.19.12): + webpack@5.95.0: dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.14.1 @@ -29284,7 +28923,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.19.12)(webpack@5.95.0(esbuild@0.19.12)) + terser-webpack-plugin: 5.3.10(webpack@5.95.0) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: