From 171530248a1daae27cce1060a8531c98daad5546 Mon Sep 17 00:00:00 2001
From: krisantrobus <55083528+krisantrobus@users.noreply.github.com>
Date: Wed, 22 Jan 2025 03:51:50 -0600
Subject: [PATCH] fix(ci): update supabase and OpenAI version (#4213)
* fix(ci): update supabase version
* fix(ci): debug actions
* fix(ci): debug actions
* fix(ci): update gen schema
* chore(ci): remove debug step
* chore(ci): update OpenAI version
* fix(docs): change assitant types from new package
* fix(docs): change assitant types from new package
* fix(docs): change assitant types from new package
* fix(docs-ai): create thread on submit
* fix(docs-ai): create thread on submit
* fix(docs-ai): use latest model
* chore(ci): cleanup
* chore(icons-docs): add icon docs
* chore(icons-docs): rever add icon docs
* fix(ci): sitemap
---
.github/workflows/on_pull_request_open.yml | 3 -
apps/backend/package.json | 2 +-
.../20230928013336_initial_schema.sql | 2 +-
apps/backend/supabase/schema.gen.ts | 136 +++++++++++++++++-
cypress/integration/sitemap-vrt/constants.ts | 6 +-
packages/paste-website/package.json | 2 +-
.../src/components/assistant/Assistant.tsx | 28 ++--
.../assistant/AssistantComposer.tsx | 4 +-
.../components/assistant/AssistantMessage.tsx | 4 +-
.../src/components/assistant/UserMessage.tsx | 4 +-
.../src/pages/api/paste-assistant-message.ts | 4 +-
.../api/paste-assistant-messages/[tid].ts | 2 +-
.../src/stores/assistantMessagesStore.ts | 6 +-
yarn.lock | 76 +++-------
14 files changed, 188 insertions(+), 91 deletions(-)
diff --git a/.github/workflows/on_pull_request_open.yml b/.github/workflows/on_pull_request_open.yml
index 6c7c415904..b98077c9e4 100644
--- a/.github/workflows/on_pull_request_open.yml
+++ b/.github/workflows/on_pull_request_open.yml
@@ -20,9 +20,6 @@ jobs:
# List of all teams for dsys
team: "[Design Systems PD,design-systems,Design Systems Eng,Design Systems Eng Leads]"
- - name: Debug in group
- run: echo "${{ github.actor }} is team member ${{ steps.teamAffiliation.outputs.isTeamMember }}"
-
- name: Auto contribution labeler
if: ${{ steps.teamAffiliation.outputs.isTeamMember == 'false' }}
uses: actions/labeler@v5
diff --git a/apps/backend/package.json b/apps/backend/package.json
index 7ed6989204..ef7b193cbc 100644
--- a/apps/backend/package.json
+++ b/apps/backend/package.json
@@ -9,6 +9,6 @@
"db:reset": "yarn supabase db reset"
},
"devDependencies": {
- "supabase": "^1.204.3"
+ "supabase": "^2.6.8"
}
}
diff --git a/apps/backend/supabase/migrations/20230928013336_initial_schema.sql b/apps/backend/supabase/migrations/20230928013336_initial_schema.sql
index 855cae57ff..17db7677c3 100644
--- a/apps/backend/supabase/migrations/20230928013336_initial_schema.sql
+++ b/apps/backend/supabase/migrations/20230928013336_initial_schema.sql
@@ -1,4 +1,4 @@
-create extension if not exists "vector" with schema "public" version '0.5.0';
+create extension if not exists "vector" with schema "public";
create sequence "public"."page_id_seq";
diff --git a/apps/backend/supabase/schema.gen.ts b/apps/backend/supabase/schema.gen.ts
index c37ce9b7c5..d7c0e7c109 100644
--- a/apps/backend/supabase/schema.gen.ts
+++ b/apps/backend/supabase/schema.gen.ts
@@ -225,6 +225,19 @@ export type Database = {
[_ in never]: never
}
Functions: {
+ binary_quantize:
+ | {
+ Args: {
+ "": string
+ }
+ Returns: unknown
+ }
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
get_page_parents: {
Args: {
page_id: number
@@ -236,18 +249,104 @@ export type Database = {
meta: Json
}[]
}
+ halfvec_avg: {
+ Args: {
+ "": number[]
+ }
+ Returns: unknown
+ }
+ halfvec_out: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ halfvec_send: {
+ Args: {
+ "": unknown
+ }
+ Returns: string
+ }
+ halfvec_typmod_in: {
+ Args: {
+ "": unknown[]
+ }
+ Returns: number
+ }
+ hnsw_bit_support: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ hnsw_halfvec_support: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ hnsw_sparsevec_support: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
hnswhandler: {
Args: {
"": unknown
}
Returns: unknown
}
+ ivfflat_bit_support: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ ivfflat_halfvec_support: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
ivfflathandler: {
Args: {
"": unknown
}
Returns: unknown
}
+ l2_norm:
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: number
+ }
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: number
+ }
+ l2_normalize:
+ | {
+ Args: {
+ "": string
+ }
+ Returns: string
+ }
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
match_discussions: {
Args: {
embedding: string
@@ -320,6 +419,24 @@ export type Database = {
count: number
}[]
}
+ sparsevec_out: {
+ Args: {
+ "": unknown
+ }
+ Returns: unknown
+ }
+ sparsevec_send: {
+ Args: {
+ "": unknown
+ }
+ Returns: string
+ }
+ sparsevec_typmod_in: {
+ Args: {
+ "": unknown[]
+ }
+ Returns: number
+ }
upsert_story_and_create_story_render: {
Args: {
_storybook_id: string
@@ -338,12 +455,19 @@ export type Database = {
}
Returns: string
}
- vector_dims: {
- Args: {
- "": string
- }
- Returns: number
- }
+ vector_dims:
+ | {
+ Args: {
+ "": string
+ }
+ Returns: number
+ }
+ | {
+ Args: {
+ "": unknown
+ }
+ Returns: number
+ }
vector_norm: {
Args: {
"": string
diff --git a/cypress/integration/sitemap-vrt/constants.ts b/cypress/integration/sitemap-vrt/constants.ts
index da5a760981..76217bf1a9 100644
--- a/cypress/integration/sitemap-vrt/constants.ts
+++ b/cypress/integration/sitemap-vrt/constants.ts
@@ -138,9 +138,9 @@ export const SITEMAP = [
"/components/input/",
"/components/input/api",
"/components/input/changelog",
- "components/keyboard-key",
- "components/keyboard-key/api",
- "components/keyboard-key/changelog",
+ "/components/keyboard-key",
+ "/components/keyboard-key/api",
+ "/components/keyboard-key/changelog",
"/components/label/",
"/components/label/api",
"/components/label/changelog",
diff --git a/packages/paste-website/package.json b/packages/paste-website/package.json
index bfa168268b..1c6ab6f097 100644
--- a/packages/paste-website/package.json
+++ b/packages/paste-website/package.json
@@ -175,7 +175,7 @@
"micromark-extension-mdxjs": "^2.0.0",
"minimist": "^1.2.8",
"next": "^14.0.0",
- "openai": "^4.20.1",
+ "openai": "^4.79.1",
"pretty-format": "^28.1.0",
"prism-react-renderer": "^1.3.5",
"react": "^18.0.0",
diff --git a/packages/paste-website/src/components/assistant/Assistant.tsx b/packages/paste-website/src/components/assistant/Assistant.tsx
index 83282a9ed9..8cef8e2073 100644
--- a/packages/paste-website/src/components/assistant/Assistant.tsx
+++ b/packages/paste-website/src/components/assistant/Assistant.tsx
@@ -1,5 +1,5 @@
/* eslint-disable camelcase */
-import type { ThreadMessage } from "openai/resources/beta/threads/messages/messages";
+import type { Message } from "openai/resources/beta/threads/messages";
import * as React from "react";
import {
@@ -19,14 +19,14 @@ import { AsssistantLayout } from "./AssistantLayout";
import { AssistantThreads } from "./AssistantThreads";
import { AssistantHeader } from "./AsststantHeader";
-const getMockMessage = ({ message }: { message: string }): ThreadMessage => {
+const getMockMessage = ({ message, threadId }: { message: string; threadId: string }): Message => {
const date = new Date();
return {
id: "",
object: "thread.message",
created_at: Math.floor(date.getTime() / 1000),
- thread_id: "xxxx",
+ thread_id: threadId,
role: "user",
content: [
{
@@ -37,10 +37,14 @@ const getMockMessage = ({ message }: { message: string }): ThreadMessage => {
},
},
],
- file_ids: [],
assistant_id: null,
run_id: null,
metadata: {},
+ attachments: null,
+ completed_at: null,
+ incomplete_at: null,
+ incomplete_details: null,
+ status: "incomplete",
};
};
@@ -58,7 +62,7 @@ export const Assistant: React.FC = () => {
const handleMessageCreation = (message: string, threadId: string): void => {
// add the new user message to the store to optimistically render it whilst we wait for openAI to do its thing
- addMessage(getMockMessage({ message }));
+ addMessage(getMockMessage({ message, threadId }));
// Create a new "assistant run" on the thread so that openAI processes the new message and updates the thread with a response
createAssistantRun.mutate(
@@ -105,7 +109,7 @@ export const Assistant: React.FC = () => {
*
* @param {string} message
*/
- const handleCannedThreadCreation = (message: string): void => {
+ const handleThreadCreationWithMessage = (message: string): void => {
createThreadMutation.mutate(
{},
{
@@ -130,11 +134,19 @@ export const Assistant: React.FC = () => {
{threadsStore.selectedThreadID == null && (
-
+
)}
{threadsStore.selectedThreadID != null && }
-
+ {
+ if (!threadId) {
+ handleThreadCreationWithMessage(message);
+ } else {
+ handleMessageCreation(message, threadId);
+ }
+ }}
+ />
diff --git a/packages/paste-website/src/components/assistant/AssistantComposer.tsx b/packages/paste-website/src/components/assistant/AssistantComposer.tsx
index 767fb2046d..3e1ad0b75d 100644
--- a/packages/paste-website/src/components/assistant/AssistantComposer.tsx
+++ b/packages/paste-website/src/components/assistant/AssistantComposer.tsx
@@ -14,7 +14,7 @@ import { useAssistantThreadsStore } from "../../stores/assistantThreadsStore";
import useStoreWithLocalStorage from "../../stores/useStore";
import { EnterKeySubmitPlugin } from "./EnterKeySubmitPlugin";
-export const AssistantComposer: React.FC<{ onMessageCreation: (message: string, selectedThread: string) => void }> = ({
+export const AssistantComposer: React.FC<{ onMessageCreation: (message: string, selectedThread?: string) => void }> = ({
onMessageCreation,
}) => {
const [message, setMessage] = React.useState("");
@@ -31,7 +31,7 @@ export const AssistantComposer: React.FC<{ onMessageCreation: (message: string,
};
const submitMessage = (): void => {
- if (message === "" || selectedThread == null) return;
+ if (message === "") return;
onMessageCreation(message, selectedThread);
};
diff --git a/packages/paste-website/src/components/assistant/AssistantMessage.tsx b/packages/paste-website/src/components/assistant/AssistantMessage.tsx
index 5b22f59a9e..22861fac43 100644
--- a/packages/paste-website/src/components/assistant/AssistantMessage.tsx
+++ b/packages/paste-website/src/components/assistant/AssistantMessage.tsx
@@ -1,11 +1,11 @@
import { AIChatMessage, AIChatMessageAuthor, AIChatMessageBody } from "@twilio-paste/ai-chat-log";
-import { type ThreadMessage } from "openai/resources/beta/threads/messages";
+import { type Message } from "openai/resources/beta/threads/messages";
import * as React from "react";
import { formatTimestamp } from "../../utils/formatTimestamp";
import { AssistantMarkdown } from "./AssistantMarkdown";
-export const AssistantMessage: React.FC<{ threadMessage: ThreadMessage }> = ({ threadMessage }) => {
+export const AssistantMessage: React.FC<{ threadMessage: Message }> = ({ threadMessage }) => {
return (
diff --git a/packages/paste-website/src/components/assistant/UserMessage.tsx b/packages/paste-website/src/components/assistant/UserMessage.tsx
index 21477ca2d4..c994f610f6 100644
--- a/packages/paste-website/src/components/assistant/UserMessage.tsx
+++ b/packages/paste-website/src/components/assistant/UserMessage.tsx
@@ -1,12 +1,12 @@
import { AIChatMessage, AIChatMessageAuthor, AIChatMessageBody } from "@twilio-paste/ai-chat-log";
import { UserIcon } from "@twilio-paste/icons/esm/UserIcon";
-import { type ThreadMessage } from "openai/resources/beta/threads/messages";
+import { type Message } from "openai/resources/beta/threads/messages";
import * as React from "react";
import { formatTimestamp } from "../../utils/formatTimestamp";
import { AssistantMarkdown } from "./AssistantMarkdown";
-export const UserMessage: React.FC<{ threadMessage: ThreadMessage }> = ({ threadMessage }) => {
+export const UserMessage: React.FC<{ threadMessage: Message }> = ({ threadMessage }) => {
return (
{
+}: { threadId: string; message: string }): Promise {
return openai.beta.threads.messages.create(threadId, { role: "user", content: message });
}
@@ -182,7 +182,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
/**
* perform run on the assistant to process the newly added user message
*/
- let run = await openai.beta.threads.runs.create(threadId, { assistant_id: assistantID });
+ let run = await openai.beta.threads.runs.create(threadId, { assistant_id: assistantID, model: "gpt-4o" });
/**
* poll the run to see if it's complete or if the assistant need to call some "Functions" find it's status
diff --git a/packages/paste-website/src/pages/api/paste-assistant-messages/[tid].ts b/packages/paste-website/src/pages/api/paste-assistant-messages/[tid].ts
index 8aab8567ea..02f7d0844c 100644
--- a/packages/paste-website/src/pages/api/paste-assistant-messages/[tid].ts
+++ b/packages/paste-website/src/pages/api/paste-assistant-messages/[tid].ts
@@ -22,7 +22,7 @@ const LOG_PREFIX = "[/api/paste-assistant-messages/:tid]:";
async function getThreadMessages({
threadId,
-}: { threadId: OpenAI.Beta.Thread["id"] }): Promise {
+}: { threadId: OpenAI.Beta.Thread["id"] }): Promise {
return openai.beta.threads.messages.list(threadId, { order: "asc" });
}
diff --git a/packages/paste-website/src/stores/assistantMessagesStore.ts b/packages/paste-website/src/stores/assistantMessagesStore.ts
index 5dea7727b2..43c64e0c88 100644
--- a/packages/paste-website/src/stores/assistantMessagesStore.ts
+++ b/packages/paste-website/src/stores/assistantMessagesStore.ts
@@ -1,12 +1,12 @@
-import { type ThreadMessage, type ThreadMessagesPage } from "openai/resources/beta/threads/messages";
+import { type Message, type MessagesPage } from "openai/resources/beta/threads/messages";
import { create } from "zustand";
import { devtools } from "zustand/middleware";
-export type AssistantThreadMessages = ThreadMessagesPage["data"];
+export type AssistantThreadMessages = MessagesPage["data"];
type State = { messages: AssistantThreadMessages };
type Actions = {
setMessages: (newMessages: AssistantThreadMessages) => void;
- addMessage: (newMessage: ThreadMessage) => void;
+ addMessage: (newMessage: Message) => void;
resetMessages: () => void;
};
diff --git a/yarn.lock b/yarn.lock
index 0a006a6d53..d15d830b31 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11533,7 +11533,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@twilio-paste/backend@workspace:apps/backend"
dependencies:
- supabase: ^1.204.3
+ supabase: ^2.6.8
languageName: unknown
linkType: soft
@@ -16269,7 +16269,7 @@ __metadata:
micromark-extension-mdxjs: ^2.0.0
minimist: ^1.2.8
next: ^14.0.0
- openai: ^4.20.1
+ openai: ^4.79.1
pretty-format: ^28.1.0
prism-react-renderer: ^1.3.5
react: ^18.0.0
@@ -20183,13 +20183,6 @@ __metadata:
languageName: node
linkType: hard
-"base-64@npm:^0.1.0":
- version: 0.1.0
- resolution: "base-64@npm:0.1.0"
- checksum: 5a42938f82372ab5392cbacc85a5a78115cbbd9dbef9f7540fa47d78763a3a8bd7d598475f0d92341f66285afd377509851a9bb5c67bbecb89686e9255d5b3eb
- languageName: node
- linkType: hard
-
"base64-js@npm:0.0.8":
version: 0.0.8
resolution: "base64-js@npm:0.0.8"
@@ -21261,13 +21254,6 @@ __metadata:
languageName: node
linkType: hard
-"charenc@npm:0.0.2":
- version: 0.0.2
- resolution: "charenc@npm:0.0.2"
- checksum: 81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5
- languageName: node
- linkType: hard
-
"check-more-types@npm:2.24.0, check-more-types@npm:^2.24.0":
version: 2.24.0
resolution: "check-more-types@npm:2.24.0"
@@ -22581,13 +22567,6 @@ __metadata:
languageName: node
linkType: hard
-"crypt@npm:0.0.2":
- version: 0.0.2
- resolution: "crypt@npm:0.0.2"
- checksum: baf4c7bbe05df656ec230018af8cf7dbe8c14b36b98726939cef008d473f6fe7a4fad906cfea4062c93af516f1550a3f43ceb4d6615329612c6511378ed9fe34
- languageName: node
- linkType: hard
-
"crypto-random-string@npm:^2.0.0":
version: 2.0.0
resolution: "crypto-random-string@npm:2.0.0"
@@ -23845,16 +23824,6 @@ __metadata:
languageName: node
linkType: hard
-"digest-fetch@npm:^1.3.0":
- version: 1.3.0
- resolution: "digest-fetch@npm:1.3.0"
- dependencies:
- base-64: ^0.1.0
- md5: ^2.3.0
- checksum: 8ebdb4b9ef02b1ac0da532d25c7d08388f2552813dfadabfe7c4630e944bb4a48093b997fc926440a10e1ccf4912f2ce9adcf2d6687b0518dab8480e08f22f9d
- languageName: node
- linkType: hard
-
"dir-glob@npm:^3.0.1":
version: 3.0.1
resolution: "dir-glob@npm:3.0.1"
@@ -29585,7 +29554,7 @@ fsevents@^1.2.7:
languageName: node
linkType: hard
-"is-buffer@npm:^1.0.2, is-buffer@npm:^1.1.5, is-buffer@npm:~1.1.6":
+"is-buffer@npm:^1.0.2, is-buffer@npm:^1.1.5":
version: 1.1.6
resolution: "is-buffer@npm:1.1.6"
checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707
@@ -33634,17 +33603,6 @@ fsevents@^1.2.7:
languageName: node
linkType: hard
-"md5@npm:^2.3.0":
- version: 2.3.0
- resolution: "md5@npm:2.3.0"
- dependencies:
- charenc: 0.0.2
- crypt: 0.0.2
- is-buffer: ~1.1.6
- checksum: a63cacf4018dc9dee08c36e6f924a64ced735b37826116c905717c41cebeb41a522f7a526ba6ad578f9c80f02cb365033ccd67fe186ffbcc1a1faeb75daa9b6e
- languageName: node
- linkType: hard
-
"mdast-squeeze-paragraphs@npm:^4.0.0":
version: 4.0.0
resolution: "mdast-squeeze-paragraphs@npm:4.0.0"
@@ -36598,22 +36556,28 @@ fsevents@^1.2.7:
languageName: node
linkType: hard
-"openai@npm:^4.20.1":
- version: 4.20.1
- resolution: "openai@npm:4.20.1"
+"openai@npm:^4.79.1":
+ version: 4.79.1
+ resolution: "openai@npm:4.79.1"
dependencies:
"@types/node": ^18.11.18
"@types/node-fetch": ^2.6.4
abort-controller: ^3.0.0
agentkeepalive: ^4.2.1
- digest-fetch: ^1.3.0
form-data-encoder: 1.7.2
formdata-node: ^4.3.2
node-fetch: ^2.6.7
- web-streams-polyfill: ^3.2.1
+ peerDependencies:
+ ws: ^8.18.0
+ zod: ^3.23.8
+ peerDependenciesMeta:
+ ws:
+ optional: true
+ zod:
+ optional: true
bin:
openai: bin/cli
- checksum: 01d2aeaf9c1a0e93159cd49207d86188edf43a6276aeb1a4aab8614727f64591452bbe19baa344f799d0a94314ff386e39c019b62f305543952606759a3927f1
+ checksum: 24b4a8d00add042ef1d16768bd5db09f69f8a9f5a60cef5a2af70877e21b003566ec89d4e96e9fffb3f828090864058bee204691ea59b173e186652c9c14c007
languageName: node
linkType: hard
@@ -43221,9 +43185,9 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard
-"supabase@npm:^1.204.3":
- version: 1.226.4
- resolution: "supabase@npm:1.226.4"
+"supabase@npm:^2.6.8":
+ version: 2.8.1
+ resolution: "supabase@npm:2.8.1"
dependencies:
bin-links: ^5.0.0
https-proxy-agent: ^7.0.2
@@ -43231,7 +43195,7 @@ resolve@^2.0.0-next.3:
tar: 7.4.3
bin:
supabase: bin/supabase
- checksum: 1550cc1d7a912a10097f1c2647e46224349d0e35a71d682c846bb47fec293657a1b325e6ac74be79ad2f172518f00f9a8cea6118ff8b8645a1f3537fb7a00aeb
+ checksum: 10b240963da4263ad8d03e84b97939504f5690eb894a9ee8ae225d69c0b8f31a890e9e24e9d4b2757c714eb38addb6878f6e531f9f7279c22de50a991b8e7cd4
languageName: node
linkType: hard
@@ -45800,7 +45764,7 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard
-"web-streams-polyfill@npm:^3.0.3, web-streams-polyfill@npm:^3.2.1":
+"web-streams-polyfill@npm:^3.0.3":
version: 3.2.1
resolution: "web-streams-polyfill@npm:3.2.1"
checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02