From ca91d3697904d8551c0c3725b6daac1d4f52e20d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 20:01:07 +0000 Subject: [PATCH 01/23] build(deps): bump pydantic from 2.10.4 to 2.10.6 in /application Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.4 to 2.10.6. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.10.4...v2.10.6) --- updated-dependencies: - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index 5732809b..426f4d49 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -62,7 +62,7 @@ prompt-toolkit==3.0.48 protobuf==5.29.3 psycopg2-binary==2.9.10 py==1.11.0 -pydantic==2.10.4 +pydantic==2.10.6 pydantic-core==2.27.2 pydantic-settings==2.7.1 pymongo==4.10.1 From 307c2e1682153bcce32c35878514c8a1346b5173 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 14:49:26 +0000 Subject: [PATCH 02/23] build(deps): bump openapi-schema-validator in /application Bumps [openapi-schema-validator](https://github.com/python-openapi/openapi-schema-validator) from 0.6.2 to 0.6.3. - [Release notes](https://github.com/python-openapi/openapi-schema-validator/releases) - [Commits](https://github.com/python-openapi/openapi-schema-validator/compare/0.6.2...0.6.3) --- updated-dependencies: - dependency-name: openapi-schema-validator dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index 1707ad80..cc986daf 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -46,7 +46,7 @@ mypy-extensions==1.0.0 networkx==3.4.2 numpy==2.2.1 openai==1.59.5 -openapi-schema-validator==0.6.2 +openapi-schema-validator==0.6.3 openapi-spec-validator==0.6.0 openapi3-parser==1.1.19 orjson==3.10.14 From 14f57bc3a451248f0e2cbc0d3db305221ef8623b Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Feb 2025 15:30:59 +0000 Subject: [PATCH 03/23] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 814b772a..4c0953a3 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,12 @@ We're eager to provide personalized assistance when deploying your DocsGPT to a [Send Email :email:](mailto:support@docsgpt.cloud?subject=DocsGPT%20support%2Fsolutions) +## Join the Lighthouse Program 🌟 + +Calling all developers and GenAI innovators! The **DocsGPT Lighthouse Program** connects technical leaders actively deploying or extending DocsGPT in real-world scenarios. Collaborate directly with our team to shape the roadmap, access priority support, and build enterprise-ready solutions with exclusive community insights. + +[Learn More & Apply →](https://docs.google.com/forms/d/1KAADiJinUJ8EMQyfTXUIGyFbqINNClNR3jBNWq7DgTE) + ## QuickStart From 3e02d5a56fa6a116a4e71e79a62a41501cb137df Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Mon, 24 Feb 2025 16:28:24 +0530 Subject: [PATCH 04/23] (feat:conv) save the conv with key --- application/api/answer/routes.py | 75 ++++++++++++++++++-------------- application/api/user/routes.py | 3 ++ 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index 34e6abca..aa16c7e5 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -115,7 +115,7 @@ def is_azure_configured(): def save_conversation( - conversation_id, question, response, source_log_docs, tool_calls, llm, index=None + conversation_id, question, response, source_log_docs, tool_calls, llm, index=None, api_key=None ): if conversation_id is not None and index is not None: conversations_collection.update_one( @@ -168,21 +168,24 @@ def save_conversation( ] completion = llm.gen(model=gpt_model, messages=messages_summary, max_tokens=30) - conversation_id = conversations_collection.insert_one( - { - "user": "local", - "date": datetime.datetime.utcnow(), - "name": completion, - "queries": [ - { - "prompt": question, - "response": response, - "sources": source_log_docs, - "tool_calls": tool_calls, - } - ], - } - ).inserted_id + conversation_data = { + "user": "local", + "date": datetime.datetime.utcnow(), + "name": completion, + "queries": [ + { + "prompt": question, + "response": response, + "sources": source_log_docs, + "tool_calls": tool_calls, + } + ], + } + if api_key: + api_key_doc = api_key_collection.find_one({"key": api_key}) + if api_key_doc: + conversation_data["api_key"] = api_key_doc["key"] + conversation_id = conversations_collection.insert_one(conversation_data).inserted_id return conversation_id @@ -197,11 +200,14 @@ def get_prompt(prompt_id): prompt = prompts_collection.find_one({"_id": ObjectId(prompt_id)})["content"] return prompt - def complete_stream( - question, retriever, conversation_id, user_api_key, isNoneDoc=False, index=None + question, + retriever, + conversation_id, + user_api_key, + isNoneDoc=False, + index=None ): - try: response_full = "" source_log_docs = [] @@ -232,21 +238,24 @@ def complete_stream( doc["source"] = "None" llm = LLMCreator.create_llm( - settings.LLM_NAME, api_key=settings.API_KEY, user_api_key=user_api_key + settings.LLM_NAME, + api_key=settings.API_KEY, + user_api_key=user_api_key ) - if user_api_key is None: - conversation_id = save_conversation( - conversation_id, - question, - response_full, - source_log_docs, - tool_calls, - llm, - index, - ) - # send data.type = "end" to indicate that the stream has ended as json - data = json.dumps({"type": "id", "id": str(conversation_id)}) - yield f"data: {data}\n\n" + + conversation_id = save_conversation( + conversation_id, + question, + response_full, + source_log_docs, + tool_calls, + llm, + index, + api_key=user_api_key + ) + # send data.type = "end" to indicate that the stream has ended as json + data = json.dumps({"type": "id", "id": str(conversation_id)}) + yield f"data: {data}\n\n" retriever_params = retriever.get_params() user_logs_collection.insert_one( diff --git a/application/api/user/routes.py b/application/api/user/routes.py index f71ab3dc..0781f574 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -1287,6 +1287,9 @@ class GetMessageAnalytics(Resource): } if api_key: match_stage["$match"]["api_key"] = api_key + else: + match_stage["$match"]["api_key"] = {"$exists": False} + message_data = conversations_collection.aggregate( [ match_stage, From 05706f16411ed3bb22e8205333b993a3e4f62e62 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Mon, 24 Feb 2025 17:24:53 +0530 Subject: [PATCH 05/23] (feat:feedback and tokens) count apiKey docs separately --- application/api/user/routes.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/application/api/user/routes.py b/application/api/user/routes.py index 0781f574..d9056238 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -1361,6 +1361,7 @@ class GetTokenAnalytics(Resource): except Exception as err: current_app.logger.error(f"Error getting API key: {err}") return make_response(jsonify({"success": False}), 400) + end_date = datetime.datetime.now(datetime.timezone.utc) if filter_option == "last_hour": @@ -1381,7 +1382,6 @@ class GetTokenAnalytics(Resource): }, } } - elif filter_option == "last_24_hour": start_date = end_date - datetime.timedelta(hours=24) group_format = "%Y-%m-%d %H:00" @@ -1400,7 +1400,6 @@ class GetTokenAnalytics(Resource): }, } } - else: if filter_option in ["last_7_days", "last_15_days", "last_30_days"]: filter_days = ( @@ -1442,6 +1441,8 @@ class GetTokenAnalytics(Resource): } if api_key: match_stage["$match"]["api_key"] = api_key + else: + match_stage["$match"]["api_key"] = {"$exists": False} token_usage_data = token_usage_collection.aggregate( [ @@ -1553,6 +1554,8 @@ class GetFeedbackAnalytics(Resource): } if api_key: match_stage["$match"]["api_key"] = api_key + else: + match_stage["$match"]["api_key"] = {"$exists":False} # Unwind the queries array to process each query separately pipeline = [ From 4cf946f856176a97ba13f6852084ee0ec6959558 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Mon, 24 Feb 2025 18:53:29 +0530 Subject: [PATCH 06/23] (feat:feedback) timestamp feedback --- application/api/user/routes.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/application/api/user/routes.py b/application/api/user/routes.py index d9056238..6ae22592 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -106,11 +106,14 @@ class DeleteAllConversations(Resource): @user_ns.route("/api/get_conversations") class GetConversations(Resource): @api.doc( - description="Retrieve a list of the latest 30 conversations", + description="Retrieve a list of the latest 30 conversations (excluding API key conversations)", ) def get(self): try: - conversations = conversations_collection.find().sort("date", -1).limit(30) + conversations = conversations_collection.find( + {"api_key": {"$exists": False}} + ).sort("date", -1).limit(30) + list_conversations = [ {"id": str(conversation["_id"]), "name": conversation["name"]} for conversation in conversations @@ -220,7 +223,8 @@ class SubmitFeedback(Resource): }, { "$set": { - f"queries.{data['question_index']}.feedback": data["feedback"] + f"queries.{data['question_index']}.feedback": data["feedback"], + f"queries.{data['question_index']}.feedback_timestamp": datetime.datetime.now(datetime.timezone.utc) } }, ) @@ -1521,11 +1525,11 @@ class GetFeedbackAnalytics(Resource): if filter_option == "last_hour": start_date = end_date - datetime.timedelta(hours=1) group_format = "%Y-%m-%d %H:%M:00" - date_field = {"$dateToString": {"format": group_format, "date": "$date"}} + date_field = {"$dateToString": {"format": group_format, "date": "$queries.feedback_timestamp"}} elif filter_option == "last_24_hour": start_date = end_date - datetime.timedelta(hours=24) group_format = "%Y-%m-%d %H:00" - date_field = {"$dateToString": {"format": group_format, "date": "$date"}} + date_field = {"$dateToString": {"format": group_format, "date": "$queries.feedback_timestamp"}} else: if filter_option in ["last_7_days", "last_15_days", "last_30_days"]: filter_days = ( @@ -1543,19 +1547,19 @@ class GetFeedbackAnalytics(Resource): hour=23, minute=59, second=59, microsecond=999999 ) group_format = "%Y-%m-%d" - date_field = {"$dateToString": {"format": group_format, "date": "$date"}} + date_field = {"$dateToString": {"format": group_format, "date": "$queries.feedback_timestamp"}} try: match_stage = { "$match": { - "date": {"$gte": start_date, "$lte": end_date}, - "queries": {"$exists": True, "$ne": []}, + "queries.feedback_timestamp": {"$gte": start_date, "$lte": end_date}, + "queries.feedback": {"$exists": True} } } if api_key: match_stage["$match"]["api_key"] = api_key else: - match_stage["$match"]["api_key"] = {"$exists":False} + match_stage["$match"]["api_key"] = {"$exists": False} # Unwind the queries array to process each query separately pipeline = [ From 8148876249130b890e083d893c338691631827f1 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Tue, 25 Feb 2025 00:45:19 +0530 Subject: [PATCH 07/23] (feat:message analytics) count individual queries --- application/api/answer/routes.py | 4 ++ application/api/user/routes.py | 112 +++++++++++-------------------- 2 files changed, 45 insertions(+), 71 deletions(-) diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index aa16c7e5..5ab54fca 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -117,6 +117,7 @@ def is_azure_configured(): def save_conversation( conversation_id, question, response, source_log_docs, tool_calls, llm, index=None, api_key=None ): + current_time = datetime.datetime.now(datetime.timezone.utc) if conversation_id is not None and index is not None: conversations_collection.update_one( {"_id": ObjectId(conversation_id), f"queries.{index}": {"$exists": True}}, @@ -126,6 +127,7 @@ def save_conversation( f"queries.{index}.response": response, f"queries.{index}.sources": source_log_docs, f"queries.{index}.tool_calls": tool_calls, + f"queries.{index}.timestamp": current_time } }, ) @@ -144,6 +146,7 @@ def save_conversation( "response": response, "sources": source_log_docs, "tool_calls": tool_calls, + "timestamp": current_time } } }, @@ -178,6 +181,7 @@ def save_conversation( "response": response, "sources": source_log_docs, "tool_calls": tool_calls, + "timestamp": current_time } ], } diff --git a/application/api/user/routes.py b/application/api/user/routes.py index 6ae22592..071e168f 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -1190,21 +1190,12 @@ class GetMessageAnalytics(Resource): get_message_analytics_model = api.model( "GetMessageAnalyticsModel", { - "api_key_id": fields.String( - required=False, - description="API Key ID", - ), + "api_key_id": fields.String(required=False, description="API Key ID"), "filter_option": fields.String( required=False, description="Filter option for analytics", default="last_30_days", - enum=[ - "last_hour", - "last_24_hour", - "last_7_days", - "last_15_days", - "last_30_days", - ], + enum=["last_hour", "last_24_hour", "last_7_days", "last_15_days", "last_30_days"], ), }, ) @@ -1225,42 +1216,21 @@ class GetMessageAnalytics(Resource): except Exception as err: current_app.logger.error(f"Error getting API key: {err}") return make_response(jsonify({"success": False}), 400) + end_date = datetime.datetime.now(datetime.timezone.utc) if filter_option == "last_hour": start_date = end_date - datetime.timedelta(hours=1) group_format = "%Y-%m-%d %H:%M:00" - group_stage = { - "$group": { - "_id": { - "minute": { - "$dateToString": {"format": group_format, "date": "$date"} - } - }, - "total_messages": {"$sum": 1}, - } - } - elif filter_option == "last_24_hour": start_date = end_date - datetime.timedelta(hours=24) group_format = "%Y-%m-%d %H:00" - group_stage = { - "$group": { - "_id": { - "hour": { - "$dateToString": {"format": group_format, "date": "$date"} - } - }, - "total_messages": {"$sum": 1}, - } - } - else: if filter_option in ["last_7_days", "last_15_days", "last_30_days"]: filter_days = ( - 6 - if filter_option == "last_7_days" - else (14 if filter_option == "last_15_days" else 29) + 6 if filter_option == "last_7_days" + else 14 if filter_option == "last_15_days" + else 29 ) else: return make_response( @@ -1268,39 +1238,44 @@ class GetMessageAnalytics(Resource): ) start_date = end_date - datetime.timedelta(days=filter_days) start_date = start_date.replace(hour=0, minute=0, second=0, microsecond=0) - end_date = end_date.replace( - hour=23, minute=59, second=59, microsecond=999999 - ) + end_date = end_date.replace(hour=23, minute=59, second=59, microsecond=999999) group_format = "%Y-%m-%d" - group_stage = { - "$group": { - "_id": { - "day": { - "$dateToString": {"format": group_format, "date": "$date"} - } - }, - "total_messages": {"$sum": 1}, - } - } try: - match_stage = { - "$match": { - "date": {"$gte": start_date, "$lte": end_date}, - } - } - if api_key: - match_stage["$match"]["api_key"] = api_key - else: - match_stage["$match"]["api_key"] = {"$exists": False} + pipeline = [ + # Initial match for API key if provided + { + "$match": { + "api_key": api_key if api_key else {"$exists": False} + } + }, + {"$unwind": "$queries"}, + # Match queries within the time range + { + "$match": { + "queries.timestamp": { + "$gte": start_date, + "$lte": end_date + } + } + }, + # Group by formatted timestamp + { + "$group": { + "_id": { + "$dateToString": { + "format": group_format, + "date": "$queries.timestamp" + } + }, + "count": {"$sum": 1} + } + }, + # Sort by timestamp + {"$sort": {"_id": 1}} + ] - message_data = conversations_collection.aggregate( - [ - match_stage, - group_stage, - {"$sort": {"_id": 1}}, - ] - ) + message_data = conversations_collection.aggregate(pipeline) if filter_option == "last_hour": intervals = generate_minute_range(start_date, end_date) @@ -1312,12 +1287,7 @@ class GetMessageAnalytics(Resource): daily_messages = {interval: 0 for interval in intervals} for entry in message_data: - if filter_option == "last_hour": - daily_messages[entry["_id"]["minute"]] = entry["total_messages"] - elif filter_option == "last_24_hour": - daily_messages[entry["_id"]["hour"]] = entry["total_messages"] - else: - daily_messages[entry["_id"]["day"]] = entry["total_messages"] + daily_messages[entry["_id"]] = entry["count"] except Exception as err: current_app.logger.error(f"Error getting message analytics: {err}") From c730777134336eb60fa7d3b25d6e69e50271b8eb Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Tue, 25 Feb 2025 00:51:33 +0530 Subject: [PATCH 08/23] (fix:bubble) keeping feedback visible once submitted --- .../src/conversation/ConversationBubble.tsx | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 305c4973..d39cf485 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -452,13 +452,11 @@ const ConversationBubble = forwardRef< <>
+
Date: Mon, 24 Feb 2025 22:23:30 +0000 Subject: [PATCH 09/23] build(deps): bump transformers from 4.48.0 to 4.49.0 in /application Bumps [transformers](https://github.com/huggingface/transformers) from 4.48.0 to 4.49.0. - [Release notes](https://github.com/huggingface/transformers/releases) - [Commits](https://github.com/huggingface/transformers/compare/v4.48.0...v4.49.0) --- updated-dependencies: - dependency-name: transformers dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index ffb96ecd..a59e2660 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -81,7 +81,7 @@ tiktoken==0.8.0 tokenizers==0.21.0 torch==2.5.1 tqdm==4.67.1 -transformers==4.48.0 +transformers==4.49.0 typing-extensions==4.12.2 typing-inspect==0.9.0 tzdata==2024.2 From cb0bceacfac223578852360700dd63280cec9e87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:23:48 +0000 Subject: [PATCH 10/23] build(deps): bump elasticsearch from 8.17.0 to 8.17.1 in /application Bumps [elasticsearch](https://github.com/elastic/elasticsearch-py) from 8.17.0 to 8.17.1. - [Release notes](https://github.com/elastic/elasticsearch-py/releases) - [Commits](https://github.com/elastic/elasticsearch-py/compare/v8.17.0...v8.17.1) --- updated-dependencies: - dependency-name: elasticsearch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index ffb96ecd..74f0d1aa 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -7,7 +7,7 @@ docx2txt==0.8 duckduckgo-search==7.4.2 ebooklib==0.18 elastic-transport==8.17.0 -elasticsearch==8.17.0 +elasticsearch==8.17.1 escodegen==1.0.11 esprima==4.0.1 esutils==1.0.1 From 495bbc2abaace5d776fb98f2c6404693a46aca00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:24:08 +0000 Subject: [PATCH 11/23] build(deps): bump google-genai from 0.5.0 to 1.3.0 in /application Bumps [google-genai](https://github.com/googleapis/python-genai) from 0.5.0 to 1.3.0. - [Release notes](https://github.com/googleapis/python-genai/releases) - [Changelog](https://github.com/googleapis/python-genai/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/python-genai/compare/v0.5.0...v1.3.0) --- updated-dependencies: - dependency-name: google-genai dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index ffb96ecd..ef79e559 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -14,7 +14,7 @@ esutils==1.0.1 Flask==3.1.0 faiss-cpu==1.9.0.post1 flask-restx==1.3.0 -google-genai==0.5.0 +google-genai==1.3.0 google-generativeai==0.8.3 gTTS==2.5.4 gunicorn==23.0.0 From 84cbc1201c864299cd826bdded93ef3471b46e7a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 24 Feb 2025 22:30:09 +0000 Subject: [PATCH 12/23] fix: googles update --- application/llm/google_ai.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/llm/google_ai.py b/application/llm/google_ai.py index 31943601..48254349 100644 --- a/application/llm/google_ai.py +++ b/application/llm/google_ai.py @@ -22,7 +22,7 @@ class GoogleLLM(BaseLLM): parts = [] if role and content is not None: if isinstance(content, str): - parts = [types.Part.from_text(content)] + parts = [types.Part.from_text(text=content)] elif isinstance(content, list): for item in content: if "text" in item: From 92c8abe65d4dc47f066cf758c6f9bae7d3f1b187 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Tue, 25 Feb 2025 16:23:35 +0530 Subject: [PATCH 13/23] (fix:sharedConv) makes sure that response state updates --- frontend/src/conversation/sharedConversationSlice.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/frontend/src/conversation/sharedConversationSlice.ts b/frontend/src/conversation/sharedConversationSlice.ts index 3140b418..bef306dd 100644 --- a/frontend/src/conversation/sharedConversationSlice.ts +++ b/frontend/src/conversation/sharedConversationSlice.ts @@ -159,14 +159,9 @@ export const sharedConversationSlice = createSlice({ action: PayloadAction<{ index: number; query: Partial }>, ) { const { index, query } = action.payload; - if (query.response != undefined) { + if (query.response !== undefined) { state.queries[index].response = (state.queries[index].response || '') + query.response; - } else { - state.queries[index] = { - ...state.queries[index], - ...query, - }; } }, updateToolCalls( From caed6df53b8fe7aabbb4d8fa71a82f1b9549875c Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Tue, 25 Feb 2025 17:32:35 +0530 Subject: [PATCH 14/23] (feat:stream) save conversations optionally --- application/api/answer/routes.py | 33 ++++++++++++------- .../src/conversation/conversationHandlers.ts | 1 + 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/application/api/answer/routes.py b/application/api/answer/routes.py index 5ab54fca..a2e2d1af 100644 --- a/application/api/answer/routes.py +++ b/application/api/answer/routes.py @@ -210,7 +210,8 @@ def complete_stream( conversation_id, user_api_key, isNoneDoc=False, - index=None + index=None, + should_save_conversation=True ): try: response_full = "" @@ -247,16 +248,20 @@ def complete_stream( user_api_key=user_api_key ) - conversation_id = save_conversation( - conversation_id, - question, - response_full, - source_log_docs, - tool_calls, - llm, - index, - api_key=user_api_key - ) + if should_save_conversation: + conversation_id = save_conversation( + conversation_id, + question, + response_full, + source_log_docs, + tool_calls, + llm, + index, + api_key=user_api_key + ) + else: + conversation_id = None + # send data.type = "end" to indicate that the stream has ended as json data = json.dumps({"type": "id", "id": str(conversation_id)}) yield f"data: {data}\n\n" @@ -322,6 +327,9 @@ class Stream(Resource): "index": fields.Integer( required=False, description="The position where query is to be updated" ), + "save_conversation": fields.Boolean( + required=False, default=True, description="Flag to save conversation" + ), }, ) @@ -336,6 +344,8 @@ class Stream(Resource): if missing_fields: return missing_fields + save_conv = data.get("save_conversation", True) + try: question = data["question"] history = limit_chat_history( @@ -394,6 +404,7 @@ class Stream(Resource): user_api_key=user_api_key, isNoneDoc=data.get("isNoneDoc"), index=index, + should_save_conversation=save_conv, ), mimetype="text/event-stream", ) diff --git a/frontend/src/conversation/conversationHandlers.ts b/frontend/src/conversation/conversationHandlers.ts index ddd84bd3..0b54a366 100644 --- a/frontend/src/conversation/conversationHandlers.ts +++ b/frontend/src/conversation/conversationHandlers.ts @@ -262,6 +262,7 @@ export function handleFetchSharedAnswerStreaming( //for shared conversations question: question, history: JSON.stringify(history), api_key: apiKey, + save_conversation: false, }; conversationService .answerStream(payload, signal) From edbd08be8a2b48d76977b38ffac828ad06cd8cfc Mon Sep 17 00:00:00 2001 From: asminkarki012 Date: Tue, 25 Feb 2025 21:52:39 +0545 Subject: [PATCH 15/23] docs: Ensure --env-file .env is included for environment variable loading --- docs/pages/Deploying/Docker-Deploying.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pages/Deploying/Docker-Deploying.mdx b/docs/pages/Deploying/Docker-Deploying.mdx index 559fa4e3..7bb70729 100644 --- a/docs/pages/Deploying/Docker-Deploying.mdx +++ b/docs/pages/Deploying/Docker-Deploying.mdx @@ -84,11 +84,11 @@ There are two Ollama optional files: **CPU:** ```bash - docker compose -f deployment/docker-compose.yaml -f deployment/optional/docker-compose.optional.ollama-cpu.yaml up -d + docker compose --env-file .env -f deployment/docker-compose.yaml -f deployment/optional/docker-compose.optional.ollama-cpu.yaml up -d ``` **GPU:** ```bash - docker compose -f deployment/docker-compose.yaml -f deployment/optional/docker-compose.optional.ollama-gpu.yaml up -d + docker compose --env-file .env -f deployment/docker-compose.yaml -f deployment/optional/docker-compose.optional.ollama-gpu.yaml up -d ``` 3. **Pull the Ollama Model:** @@ -132,4 +132,4 @@ Whenever you modify the `.env` file or any Docker Compose files, you need to res ## Further Configuration -This guide covers the basic Docker deployment of DocsGPT. For detailed information on configuring various aspects of DocsGPT, such as LLM providers, models, vector stores, and more, please refer to the comprehensive [DocsGPT Settings Guide](/Deploying/DocsGPT-Settings). \ No newline at end of file +This guide covers the basic Docker deployment of DocsGPT. For detailed information on configuring various aspects of DocsGPT, such as LLM providers, models, vector stores, and more, please refer to the comprehensive [DocsGPT Settings Guide](/Deploying/DocsGPT-Settings). From 554601d674205743abb5e132c090e747762fddbf Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Wed, 26 Feb 2025 01:00:38 +0530 Subject: [PATCH 16/23] (fix:feedback) widget can handle feedback --- .../src/components/DocsGPTWidget.tsx | 95 +++++++++++++------ .../react-widget/src/requests/streamingApi.ts | 20 ++-- 2 files changed, 80 insertions(+), 35 deletions(-) diff --git a/extensions/react-widget/src/components/DocsGPTWidget.tsx b/extensions/react-widget/src/components/DocsGPTWidget.tsx index 8aa2e0e6..142853e2 100644 --- a/extensions/react-widget/src/components/DocsGPTWidget.tsx +++ b/extensions/react-widget/src/components/DocsGPTWidget.tsx @@ -6,8 +6,8 @@ import { PaperPlaneIcon, RocketIcon, ExclamationTriangleIcon, Cross2Icon } from import { FEEDBACK, MESSAGE_TYPE, Query, Status, WidgetCoreProps, WidgetProps } from '../types/index'; import { fetchAnswerStreaming, sendFeedback } from '../requests/streamingApi'; import { ThemeProvider } from 'styled-components'; -import Like from "../assets/like.svg" -import Dislike from "../assets/dislike.svg" +import Like from '../assets/like.svg'; +import Dislike from '../assets/dislike.svg'; import MarkdownIt from 'markdown-it'; const themes = { @@ -592,8 +592,8 @@ export const DocsGPTWidget = (props: WidgetProps) => { ) } export const WidgetCore = ({ - apiHost = 'https://gptcloud.arc53.com', - apiKey = "74039c6d-bff7-44ce-ae55-2973cbf13837", + apiHost = 'http://localhost:7091', + apiKey = "1a31e931-90c9-4fb7-af99-2cba70a0f3ee", //apiKey = '82962c9a-aa77-4152-94e5-a4f84fd44c6a', avatar = 'https://d3dg1063dc54p9.cloudfront.net/cute-docsgpt.png', title = 'Get AI assistance', @@ -655,32 +655,59 @@ export const WidgetCore = ({ }, [queries.length, queries[queries.length - 1]?.response]); async function handleFeedback(feedback: FEEDBACK, index: number) { - let query = queries[index] - if (!query.response) + let query = queries[index]; + if (!query.response || !conversationId) { + console.log("Cannot submit feedback: missing response or conversation ID"); return; - if (query.feedback != feedback) { - sendFeedback({ + } + + // If clicking the same feedback button that's already active, remove the feedback by sending null + if (query.feedback === feedback) { + try { + const response = await sendFeedback({ + question: query.prompt, + answer: query.response, + feedback: null, + apikey: apiKey, + conversation_id: conversationId, + question_index: index, + }, apiHost); + + if (response.status === 200) { + const updatedQuery = { ...query }; + delete updatedQuery.feedback; + setQueries((prev: Query[]) => + prev.map((q, i) => (i === index ? updatedQuery : q)) + ); + } + } catch (err) { + console.error("Failed to submit feedback:", err); + } + return; + } + + try { + const response = await sendFeedback({ question: query.prompt, answer: query.response, feedback: feedback, - apikey: apiKey - }, apiHost) - .then(res => { - if (res.status == 200) { - query.feedback = feedback; - setQueries((prev: Query[]) => { - return prev.map((q, i) => (i === index ? query : q)); - }); - } - }) - .catch(err => console.log("Connection failed", err)) - } - else { - delete query.feedback; - setQueries((prev: Query[]) => { - return prev.map((q, i) => (i === index ? query : q)); - }); + apikey: apiKey, + conversation_id: conversationId, + question_index: index, + }, apiHost); + if (response.status === 200) { + setQueries((prev: Query[]) => { + return prev.map((q, i) => { + if (i === index) { + return { ...q, feedback: feedback }; + } + return q; + }); + }); + } + } catch (err) { + console.error("Failed to submit feedback:", err); } } @@ -808,20 +835,34 @@ export const WidgetCore = ({ {collectFeedback && + + } :
diff --git a/extensions/react-widget/src/requests/streamingApi.ts b/extensions/react-widget/src/requests/streamingApi.ts index d5f79fe1..f55f9d0c 100644 --- a/extensions/react-widget/src/requests/streamingApi.ts +++ b/extensions/react-widget/src/requests/streamingApi.ts @@ -15,11 +15,13 @@ interface FetchAnswerStreamingProps { onEvent?: (event: MessageEvent) => void; } -interface FeedbackPayload { - question: string; - answer: string; - apikey: string; - feedback: FEEDBACK; +export interface FeedbackPayload { + question?: string; + answer?: string; + feedback: string | null; + apikey?: string; + conversation_id: string; + question_index: number; } export function fetchAnswerStreaming({ @@ -94,7 +96,7 @@ export function fetchAnswerStreaming({ } -export const sendFeedback = (payload: FeedbackPayload,apiHost:string): Promise => { +export const sendFeedback = (payload: FeedbackPayload, apiHost: string): Promise => { return fetch(`${apiHost}/api/feedback`, { method: 'POST', headers: { @@ -104,7 +106,9 @@ export const sendFeedback = (payload: FeedbackPayload,apiHost:string): Promise Date: Wed, 26 Feb 2025 01:01:30 +0530 Subject: [PATCH 17/23] (feat:feedback) unset feedback when null --- application/api/user/routes.py | 40 ++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/application/api/user/routes.py b/application/api/user/routes.py index 071e168f..6204ada4 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -216,18 +216,34 @@ class SubmitFeedback(Resource): return missing_fields try: - conversations_collection.update_one( - { - "_id": ObjectId(data["conversation_id"]), - f"queries.{data['question_index']}": {"$exists": True}, - }, - { - "$set": { - f"queries.{data['question_index']}.feedback": data["feedback"], - f"queries.{data['question_index']}.feedback_timestamp": datetime.datetime.now(datetime.timezone.utc) - } - }, - ) + if data["feedback"] is None: + # Remove feedback and feedback_timestamp if feedback is null + conversations_collection.update_one( + { + "_id": ObjectId(data["conversation_id"]), + f"queries.{data['question_index']}": {"$exists": True}, + }, + { + "$unset": { + f"queries.{data['question_index']}.feedback": "", + f"queries.{data['question_index']}.feedback_timestamp": "" + } + }, + ) + else: + # Set feedback and feedback_timestamp if feedback has a value + conversations_collection.update_one( + { + "_id": ObjectId(data["conversation_id"]), + f"queries.{data['question_index']}": {"$exists": True}, + }, + { + "$set": { + f"queries.{data['question_index']}.feedback": data["feedback"], + f"queries.{data['question_index']}.feedback_timestamp": datetime.datetime.now(datetime.timezone.utc) + } + }, + ) except Exception as err: current_app.logger.error(f"Error submitting feedback: {err}") From 1d1efc00b507dd37fb70c6dbfcf8f99306453007 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 20:38:17 +0000 Subject: [PATCH 18/23] build(deps): bump qdrant-client from 1.12.2 to 1.13.2 in /application Bumps [qdrant-client](https://github.com/qdrant/qdrant-client) from 1.12.2 to 1.13.2. - [Release notes](https://github.com/qdrant/qdrant-client/releases) - [Commits](https://github.com/qdrant/qdrant-client/compare/v1.12.2...v1.13.2) --- updated-dependencies: - dependency-name: qdrant-client dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index d24e866b..fd4f623f 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -70,7 +70,7 @@ pypdf==5.2.0 python-dateutil==2.9.0.post0 python-dotenv==1.0.1 python-pptx==1.0.2 -qdrant-client==1.12.2 +qdrant-client==1.13.2 redis==5.2.1 referencing==0.30.2 regex==2024.11.6 From 0aae53524cc97ed468c25030d851980c24f5b119 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 20:38:23 +0000 Subject: [PATCH 19/23] build(deps): bump lxml from 5.3.0 to 5.3.1 in /application Bumps [lxml](https://github.com/lxml/lxml) from 5.3.0 to 5.3.1. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.0...lxml-5.3.1) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- application/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/requirements.txt b/application/requirements.txt index d24e866b..5e6a6f5d 100644 --- a/application/requirements.txt +++ b/application/requirements.txt @@ -37,7 +37,7 @@ langchain-openai==0.3.0 langchain-text-splitters==0.3.5 langsmith==0.2.10 lazy-object-proxy==1.10.0 -lxml==5.3.0 +lxml==5.3.1 markupsafe==3.0.2 marshmallow==3.26.1 mpmath==1.3.0 From 987ef63e64fc180b2eb4a9742cebefed1f1d208f Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Wed, 26 Feb 2025 14:52:48 +0530 Subject: [PATCH 20/23] (feat:widget) simplify scrolling --- extensions/react-widget/package.json | 2 +- .../src/components/DocsGPTWidget.tsx | 54 ++++++++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/extensions/react-widget/package.json b/extensions/react-widget/package.json index 75239685..ca2b48f6 100644 --- a/extensions/react-widget/package.json +++ b/extensions/react-widget/package.json @@ -1,6 +1,6 @@ { "name": "docsgpt", - "version": "0.4.9", + "version": "0.4.11", "private": false, "description": "DocsGPT 🦖 is an innovative open-source tool designed to simplify the retrieval of information from project documentation using advanced GPT models 🤖.", "source": "./src/index.html", diff --git a/extensions/react-widget/src/components/DocsGPTWidget.tsx b/extensions/react-widget/src/components/DocsGPTWidget.tsx index 142853e2..5ce9140a 100644 --- a/extensions/react-widget/src/components/DocsGPTWidget.tsx +++ b/extensions/react-widget/src/components/DocsGPTWidget.tsx @@ -1,5 +1,5 @@ "use client"; -import React, { useRef } from 'react' +import React, { useRef, useState, useEffect } from 'react' import DOMPurify from 'dompurify'; import styled, { keyframes, css } from 'styled-components'; import { PaperPlaneIcon, RocketIcon, ExclamationTriangleIcon, Cross2Icon } from '@radix-ui/react-icons'; @@ -591,10 +591,10 @@ export const DocsGPTWidget = (props: WidgetProps) => { ) } + export const WidgetCore = ({ - apiHost = 'http://localhost:7091', - apiKey = "1a31e931-90c9-4fb7-af99-2cba70a0f3ee", - //apiKey = '82962c9a-aa77-4152-94e5-a4f84fd44c6a', + apiHost = 'https://gptcloud.arc53.com', + apiKey = "82962c9a-aa77-4152-94e5-a4f84fd44c6a", avatar = 'https://d3dg1063dc54p9.cloudfront.net/cute-docsgpt.png', title = 'Get AI assistance', description = 'DocsGPT\'s AI Chatbot is here to help', @@ -614,8 +614,10 @@ export const WidgetCore = ({ const [queries, setQueries] = React.useState([]); const [conversationId, setConversationId] = React.useState(null); const [eventInterrupt, setEventInterrupt] = React.useState(false); //click or scroll by user while autoScrolling + const [hasScrolledToLast, setHasScrolledToLast] = useState(true); const isBubbleHovered = useRef(false); + const conversationRef = useRef(null); const endMessageRef = React.useRef(null); const md = new MarkdownIt(); @@ -632,26 +634,38 @@ export const WidgetCore = ({ } }, [isOpen]); - - const handleUserInterrupt = () => { - (status === 'loading') && setEventInterrupt(true); + if (!eventInterrupt && status === 'loading') setEventInterrupt(true); } - const scrollToBottom = (element: Element | null) => { - //recursive function to scroll to the last child of the last child ... - // to get to the bottom most element - if (!element) return; - if (element?.children.length === 0) { - element?.scrollIntoView({ + + const scrollIntoView = () => { + if (!conversationRef?.current || eventInterrupt) return; + + if (status === 'idle' || !queries.length || !queries[queries.length - 1].response) { + conversationRef.current.scrollTo({ behavior: 'smooth', - block: 'start', + top: conversationRef.current.scrollHeight, }); + } else { + conversationRef.current.scrollTop = conversationRef.current.scrollHeight; } - const lastChild = element?.children?.[element.children.length - 1] - lastChild && scrollToBottom(lastChild) + setHasScrolledToLast(true); }; + + const checkScroll = () => { + const el = conversationRef.current; + if (!el) return; + const isBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 10; + setHasScrolledToLast(isBottom); + }; + React.useEffect(() => { - !eventInterrupt && scrollToBottom(endMessageRef.current); + !eventInterrupt && scrollIntoView(); + + conversationRef.current?.addEventListener('scroll', checkScroll); + return () => { + conversationRef.current?.removeEventListener('scroll', checkScroll); + }; }, [queries.length, queries[queries.length - 1]?.response]); async function handleFeedback(feedback: FEEDBACK, index: number) { @@ -804,7 +818,11 @@ export const WidgetCore = ({
- + { queries.length > 0 ? queries?.map((query, index) => { return ( From c108a53b11048b76810d3797ba2995981557ef9e Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 26 Feb 2025 10:35:26 +0000 Subject: [PATCH 21/23] fix: default keys --- extensions/react-widget/src/components/DocsGPTWidget.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/react-widget/src/components/DocsGPTWidget.tsx b/extensions/react-widget/src/components/DocsGPTWidget.tsx index 142853e2..b967195a 100644 --- a/extensions/react-widget/src/components/DocsGPTWidget.tsx +++ b/extensions/react-widget/src/components/DocsGPTWidget.tsx @@ -592,8 +592,8 @@ export const DocsGPTWidget = (props: WidgetProps) => { ) } export const WidgetCore = ({ - apiHost = 'http://localhost:7091', - apiKey = "1a31e931-90c9-4fb7-af99-2cba70a0f3ee", + apiHost = 'https://gptcloud.arc53.com', + apiKey = "74039c6d-bff7-44ce-ae55-2973cbf13837", //apiKey = '82962c9a-aa77-4152-94e5-a4f84fd44c6a', avatar = 'https://d3dg1063dc54p9.cloudfront.net/cute-docsgpt.png', title = 'Get AI assistance', From df89990aa50821526068d444c30d3ba0019bed52 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Wed, 26 Feb 2025 16:09:12 +0530 Subject: [PATCH 22/23] (upgrade:widget) v0.5.0 --- extensions/react-widget/package-lock.json | 4 +-- extensions/react-widget/package.json | 2 +- extensions/react-widget/publish.sh | 39 +++++++++++++---------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/extensions/react-widget/package-lock.json b/extensions/react-widget/package-lock.json index a2120e91..f0585672 100644 --- a/extensions/react-widget/package-lock.json +++ b/extensions/react-widget/package-lock.json @@ -1,12 +1,12 @@ { "name": "docsgpt", - "version": "0.4.9", + "version": "0.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "docsgpt", - "version": "0.4.9", + "version": "0.5.0", "license": "Apache-2.0", "dependencies": { "@babel/plugin-transform-flow-strip-types": "^7.23.3", diff --git a/extensions/react-widget/package.json b/extensions/react-widget/package.json index ca2b48f6..b33a3b6c 100644 --- a/extensions/react-widget/package.json +++ b/extensions/react-widget/package.json @@ -1,6 +1,6 @@ { "name": "docsgpt", - "version": "0.4.11", + "version": "0.5.0", "private": false, "description": "DocsGPT 🦖 is an innovative open-source tool designed to simplify the retrieval of information from project documentation using advanced GPT models 🤖.", "source": "./src/index.html", diff --git a/extensions/react-widget/publish.sh b/extensions/react-widget/publish.sh index 129c4bcf..cb5174e3 100755 --- a/extensions/react-widget/publish.sh +++ b/extensions/react-widget/publish.sh @@ -8,6 +8,15 @@ cp package-lock.json package-lock_original.json # Store the latest version after publishing LATEST_VERSION="" +# Check if a specific version was provided +if [ "$1" ]; then + VERSION_UPDATE_TYPE="$1" + echo "Using custom version update: $VERSION_UPDATE_TYPE" +else + VERSION_UPDATE_TYPE="patch" + echo "No version specified, defaulting to patch update" +fi + publish_package() { PACKAGE_NAME=$1 BUILD_COMMAND=$2 @@ -34,27 +43,24 @@ publish_package() { rm -rf dist fi - # update version and store it - LATEST_VERSION=$(npm version patch) + # Update version based on input parameter or default to patch + if [[ "$VERSION_UPDATE_TYPE" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + # If full version number is provided (e.g., 0.5.0) + LATEST_VERSION=$(npm version "$VERSION_UPDATE_TYPE" --no-git-tag-version) + else + # If update type is provided (patch, minor, major) + LATEST_VERSION=$(npm version "$VERSION_UPDATE_TYPE" --no-git-tag-version) + fi + echo "New version: ${LATEST_VERSION}" # Build package npm run "$BUILD_COMMAND" - # Replace npm publish with npm pack for testing + # Publish package npm publish - echo "Successfully packaged ${PACKAGE_NAME}" - - # Log the bundle size - TARBALL="${PACKAGE_NAME}-${LATEST_VERSION#v}.tgz" - if [ -f "$TARBALL" ]; then - BUNDLE_SIZE=$(du -h "$TARBALL" | cut -f1) - echo "Bundle size for ${PACKAGE_NAME}: ${BUNDLE_SIZE}" - else - echo "Error: ${TARBALL} not found." - exit 1 - fi + echo "Successfully published ${PACKAGE_NAME} version ${LATEST_VERSION}" } # First publish docsgpt (HTML bundle) @@ -70,7 +76,7 @@ cp package-lock_original.json package-lock.json # Update the version in the final package.json jq --arg version "${LATEST_VERSION#v}" '.version=$version' package.json > temp.json && mv temp.json package.json -# Run npm install to update package-lock.json with the new version +# Run npm install to update package-lock-only npm install --package-lock-only # Cleanup backup files @@ -81,5 +87,4 @@ rm -f temp.json echo "---Process completed---" echo "Final version in package.json: $(jq -r '.version' package.json)" echo "Final version in package-lock.json: $(jq -r '.version' package-lock.json)" -echo "Generated test packages:" -ls *.tgz + From b007e2af8ffeaee8dec19e9ac36008691d63ce71 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Wed, 26 Feb 2025 16:12:38 +0530 Subject: [PATCH 23/23] (update:docs) docsgpt dep --- docs/package-lock.json | 546 +---------------------------------------- docs/package.json | 2 +- 2 files changed, 5 insertions(+), 543 deletions(-) diff --git a/docs/package-lock.json b/docs/package-lock.json index c290c155..55056169 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -7,7 +7,7 @@ "license": "MIT", "dependencies": { "@vercel/analytics": "^1.1.1", - "docsgpt-react": "^0.4.11", + "docsgpt-react": "^0.5.0", "next": "^14.2.22", "nextra": "^2.13.2", "nextra-theme-docs": "^2.13.2", @@ -1177,407 +1177,6 @@ "node": ">=8" } }, - "node_modules/@parcel/core": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.13.2.tgz", - "integrity": "sha512-1zC5Au4z9or5XyP6ipfvJqHktuB0jD7WuxMcV1CWAZGARHKylLe+0ccl+Wx7HN5O+xAvfCDtTlKrATY8qyrIyw==", - "peer": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/cache": "2.13.2", - "@parcel/diagnostic": "2.13.2", - "@parcel/events": "2.13.2", - "@parcel/feature-flags": "2.13.2", - "@parcel/fs": "2.13.2", - "@parcel/graph": "3.3.2", - "@parcel/logger": "2.13.2", - "@parcel/package-manager": "2.13.2", - "@parcel/plugin": "2.13.2", - "@parcel/profiler": "2.13.2", - "@parcel/rust": "2.13.2", - "@parcel/source-map": "^2.1.1", - "@parcel/types": "2.13.2", - "@parcel/utils": "2.13.2", - "@parcel/workers": "2.13.2", - "base-x": "^3.0.8", - "browserslist": "^4.6.6", - "clone": "^2.1.1", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", - "json5": "^2.2.0", - "msgpackr": "^1.9.9", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/cache": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.13.2.tgz", - "integrity": "sha512-Y0nWlCMWDSp1lxiPI5zCWTGD0InnVZ+IfqeyLWmROAqValYyd0QZCvnSljKJ144jWTr0jXxDveir+DVF8sAYaA==", - "peer": true, - "dependencies": { - "@parcel/fs": "2.13.2", - "@parcel/logger": "2.13.2", - "@parcel/utils": "2.13.2", - "lmdb": "2.8.5" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.13.2" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/codeframe": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.13.2.tgz", - "integrity": "sha512-qFMiS14orb6QSQj5/J/QN+gJElUfedVAKBTNkp9QB4i8ObdLHDqHRUzFb55ZQJI3G4vsxOOWAOUXGirtLwrxGQ==", - "peer": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/diagnostic": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.13.2.tgz", - "integrity": "sha512-6Au0JEJ5SY2gYrY0/m0i0sTuqTvK0k2E9azhBJR+zzCREbUxLiDdLZ+vXAfLW7t/kPAcWtdNU0Bj7pnZcMiMXg==", - "peer": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/events": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.13.2.tgz", - "integrity": "sha512-BVB9hW1RGh/tMaDHfpa+uIgz5PMULorCnjmWr/KvrlhdUSUQoaPYfRcTDYrKhoKuNIKsWSnTGvXrxE53L5qo0w==", - "peer": true, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/fs": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.13.2.tgz", - "integrity": "sha512-bdeIMuAXhMnROvqV55JWRUmjD438/T7h3r3NsFnkq+Mp4z2nuAn0STxbqDNxIgTMJHNunSDzncqRNMT7xJCe8A==", - "peer": true, - "dependencies": { - "@parcel/feature-flags": "2.13.2", - "@parcel/rust": "2.13.2", - "@parcel/types-internal": "2.13.2", - "@parcel/utils": "2.13.2", - "@parcel/watcher": "^2.0.7", - "@parcel/workers": "2.13.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.13.2" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/logger": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.13.2.tgz", - "integrity": "sha512-SFVABAMqaT9jIDn4maPgaQQauPDz8fpoKUGEuLF44Q0aQFbBUy7vX7KYs/EvYSWZo4VyJcUDHvIInBlepA0/ZQ==", - "peer": true, - "dependencies": { - "@parcel/diagnostic": "2.13.2", - "@parcel/events": "2.13.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/markdown-ansi": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.13.2.tgz", - "integrity": "sha512-MIEoetfT/snk1GqWzBI3AhifV257i2xke9dvyQl14PPiMl+TlVhwnbQyA09WJBvDor+MuxZypHL7xoFdW8ff3A==", - "peer": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/node-resolver-core": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.4.2.tgz", - "integrity": "sha512-SwnKLcZRG1VdB5JeM/Ax5VMWWh2QfXufmMQCKKx0/Kk41nUpie+aIZKj3LH6Z/fJsnKig/vXpeWoxGhmG523qg==", - "peer": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "@parcel/diagnostic": "2.13.2", - "@parcel/fs": "2.13.2", - "@parcel/rust": "2.13.2", - "@parcel/utils": "2.13.2", - "nullthrows": "^1.1.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/package-manager": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.13.2.tgz", - "integrity": "sha512-6HjfbdJUjHyNKzYB7GSYnOCtLwqCGW7yT95GlnnTKyFffvXYsqvBSyepMuPRlbX0mFUm4S9l2DH3OVZrk108AA==", - "peer": true, - "dependencies": { - "@parcel/diagnostic": "2.13.2", - "@parcel/fs": "2.13.2", - "@parcel/logger": "2.13.2", - "@parcel/node-resolver-core": "3.4.2", - "@parcel/types": "2.13.2", - "@parcel/utils": "2.13.2", - "@parcel/workers": "2.13.2", - "@swc/core": "^1.7.26", - "semver": "^7.5.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.13.2" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/plugin": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.13.2.tgz", - "integrity": "sha512-Q+RIENS1B185yLPhrGdzBK1oJrZmh/RXrYMnzJs78Tog8SpihjeNBNR6z4PT85o2F+Gy2y1S9A26fpiGq161qQ==", - "peer": true, - "dependencies": { - "@parcel/types": "2.13.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/profiler": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.13.2.tgz", - "integrity": "sha512-fur6Oq2HkX6AiM8rtqmDvldH5JWz0sqXA1ylz8cE3XOiDZIuvCulZmQ+hH+4odaNH6QocI1MwfV+GDh3HlQoCA==", - "peer": true, - "dependencies": { - "@parcel/diagnostic": "2.13.2", - "@parcel/events": "2.13.2", - "@parcel/types-internal": "2.13.2", - "chrome-trace-event": "^1.0.2" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/rust": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.13.2.tgz", - "integrity": "sha512-XFIewSwxkrDYOnnSP/XZ1LDLdXTs7L9CjQUWtl46Vir5Pq/rinemwLJeKGIwKLHy7fhUZQjYxquH6fBL+AY8DA==", - "peer": true, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/types": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.13.2.tgz", - "integrity": "sha512-6ixqjk2pjKELn4sQ/jdvpbCVTeH6xXQTdotkN8Wzk68F2K2MtSPIRAEocumlexScfffbRQplr2MdIf1JJWLogA==", - "peer": true, - "dependencies": { - "@parcel/types-internal": "2.13.2", - "@parcel/workers": "2.13.2" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/utils": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.13.2.tgz", - "integrity": "sha512-BkFtRo5xenmonwnBy+X4sVbHIRrx+ZHMPpS/6hFqyTvoUUFq2yTFQnfRGVVOOvscVUxpGom+kewnrTG3HHbZoA==", - "peer": true, - "dependencies": { - "@parcel/codeframe": "2.13.2", - "@parcel/diagnostic": "2.13.2", - "@parcel/logger": "2.13.2", - "@parcel/markdown-ansi": "2.13.2", - "@parcel/rust": "2.13.2", - "@parcel/source-map": "^2.1.1", - "chalk": "^4.1.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/core/node_modules/@parcel/workers": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.13.2.tgz", - "integrity": "sha512-P78BpH0yTT9KK09wgK4eabtlb5OlcWAmZebOToN5UYuwWEylKt0gWZx1+d+LPQupvK84/iZ+AutDScsATjgUMw==", - "peer": true, - "dependencies": { - "@parcel/diagnostic": "2.13.2", - "@parcel/logger": "2.13.2", - "@parcel/profiler": "2.13.2", - "@parcel/types-internal": "2.13.2", - "@parcel/utils": "2.13.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.13.2" - } - }, - "node_modules/@parcel/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@parcel/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@parcel/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@parcel/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/@parcel/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@parcel/core/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@parcel/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@parcel/diagnostic": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.12.0.tgz", @@ -1606,19 +1205,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/feature-flags": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/feature-flags/-/feature-flags-2.13.2.tgz", - "integrity": "sha512-cCwDAKD4Er24EkuQ+loVZXSURpM0gAGRsLJVoBtFiCSbB3nmIJJ6FLRwSBI/5OsOUExiUXDvSpfUCA5ldGTzbw==", - "peer": true, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/fs": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.12.0.tgz", @@ -1641,23 +1227,6 @@ "@parcel/core": "^2.12.0" } }, - "node_modules/@parcel/graph": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.3.2.tgz", - "integrity": "sha512-aAysQLRr8SOonSHWqdKHMJzfcrDFXKK8IYZEurlOzosiSgZXrAK7q8b8JcaJ4r84/jlvQYNYneNZeFQxKjHXkA==", - "peer": true, - "dependencies": { - "@parcel/feature-flags": "2.13.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/logger": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.12.0.tgz", @@ -2007,35 +1576,6 @@ "utility-types": "^3.10.0" } }, - "node_modules/@parcel/types-internal": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/types-internal/-/types-internal-2.13.2.tgz", - "integrity": "sha512-j0zb3WNM8O/+d8CArll7/4w4AyBED3Jbo32/unz89EPVN0VklmgBrRCAI5QXDKuJAGdAZSL5/a8bNYbwl7/Wxw==", - "peer": true, - "dependencies": { - "@parcel/diagnostic": "2.13.2", - "@parcel/feature-flags": "2.13.2", - "@parcel/source-map": "^2.1.1", - "utility-types": "^3.10.0" - } - }, - "node_modules/@parcel/types-internal/node_modules/@parcel/diagnostic": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.13.2.tgz", - "integrity": "sha512-6Au0JEJ5SY2gYrY0/m0i0sTuqTvK0k2E9azhBJR+zzCREbUxLiDdLZ+vXAfLW7t/kPAcWtdNU0Bj7pnZcMiMXg==", - "peer": true, - "dependencies": { - "@mischnic/json-sourcemap": "^0.1.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/utils": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.12.0.tgz", @@ -3193,15 +2733,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -3416,15 +2947,6 @@ "node": ">=4" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "peer": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/clsx": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", @@ -4064,9 +3586,9 @@ } }, "node_modules/docsgpt-react": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/docsgpt-react/-/docsgpt-react-0.4.11.tgz", - "integrity": "sha512-0n+SgC4wtBL+xV6sWMh8hzvfnDTvGQ+kqUM2bvblVqAWd041c4K1ZPZKpTu/099DLeF9Y8K06ACZYCoNsZO9AA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/docsgpt-react/-/docsgpt-react-0.5.0.tgz", + "integrity": "sha512-5tDfFxBHG9432URaE8rQaYmBE8tbEUg74L85ykg/WbcoL84U3ixrt0tG7T0SfoTfxQT46H3afliYdv1rDmFGLw==", "license": "Apache-2.0", "dependencies": { "@babel/plugin-transform-flow-strip-types": "^7.23.3", @@ -4154,33 +3676,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "peer": true, - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.693", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.693.tgz", @@ -10114,26 +9609,6 @@ "node": ">=6" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10478,19 +9953,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", diff --git a/docs/package.json b/docs/package.json index b47b07a0..bc9ff89b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -7,7 +7,7 @@ "license": "MIT", "dependencies": { "@vercel/analytics": "^1.1.1", - "docsgpt-react": "^0.4.11", + "docsgpt-react": "^0.5.0", "next": "^14.2.22", "nextra": "^2.13.2", "nextra-theme-docs": "^2.13.2",