tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 3dc471cd51b135d36a303909302c6cb2b13768f3
parent 2c4f7ccc297e53f50489ef591763c1dbcab7cb2f
Author: Sandor Molnar <smolnar@mozilla.com>
Date:   Fri,  9 Jan 2026 23:42:19 +0200

Revert "Bug 2008658 - fixes messages array for OpenAI api format r=tzhang,ai-frontend-reviewers,ai-models-reviewers" for causing xpc failures @ test_Tools_GetOpenTabs.js

This reverts commit a7adf02cc574dfce2f855c1adfaabba37efec670.

Diffstat:
Mbrowser/components/aiwindow/models/Chat.sys.mjs | 8++------
Mbrowser/components/aiwindow/models/Tools.sys.mjs | 21++++++---------------
Mbrowser/components/aiwindow/ui/components/ai-window/ai-window.mjs | 12++++--------
Mbrowser/components/aiwindow/ui/modules/ChatConversation.sys.mjs | 31+++----------------------------
Mbrowser/components/aiwindow/ui/test/xpcshell/test_ChatConversation.js | 16++++------------
5 files changed, 19 insertions(+), 69 deletions(-)

diff --git a/browser/components/aiwindow/models/Chat.sys.mjs b/browser/components/aiwindow/models/Chat.sys.mjs @@ -128,14 +128,10 @@ export const Chat = { throw new Error(`No such tool: ${name}`); } - if (Object.keys(toolParams).length) { - result = await toolFunc(toolParams); - } else { - result = await toolFunc(); - } + result = await toolFunc(toolParams); // Create special tool call log message to show in the UI log panel - const content = { tool_call_id: id, body: result, name }; + const content = { tool_call_id: id, body: result }; conversation.addToolCallMessage(content, currentTurn, toolRoleOpts); } catch (e) { result = { error: `Tool execution failed: ${String(e)}` }; diff --git a/browser/components/aiwindow/models/Tools.sys.mjs b/browser/components/aiwindow/models/Tools.sys.mjs @@ -16,9 +16,8 @@ ChromeUtils.defineESModuleGetters(lazy, { AIWindow: "moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs", BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs", - // @todo Bug 2009194 - // PageDataService: - // "moz-src:///browser/components/pagedata/PageDataService.sys.mjs", + PageDataService: + "moz-src:///browser/components/pagedata/PageDataService.sys.mjs", }); const GET_OPEN_TABS = "get_open_tabs"; @@ -144,18 +143,10 @@ export async function getOpenTabs(n = 15) { topTabs.map(async ({ url, title, lastAccessed }) => { let description = ""; if (url) { - // @todo Bug 2009194 - // PageDataService halts code execution even in try/catch - // - // try { - // description = - // lazy.PageDataService.getCached(url)?.description || - // (await lazy.PageDataService.fetchPageData(url))?.description || - // ""; - // } catch (e) { - // console.log(e); - // description = ""; - // } + description = + lazy.PageDataService.getCached(url)?.description || + (await lazy.PageDataService.fetchPageData(url))?.description || + ""; } return { url, title, description, lastAccessed }; }) diff --git a/browser/components/aiwindow/ui/components/ai-window/ai-window.mjs b/browser/components/aiwindow/ui/components/ai-window/ai-window.mjs @@ -163,11 +163,8 @@ export class AIWindow extends MozLitElement { assistantRoleOpts ); - const currentMessage = this.#conversation.messages - .filter(message => message.role === lazy.MESSAGE_ROLE.ASSISTANT) - .at(-1); - for await (const chunk of stream) { + const currentMessage = this.#conversation.messages.at(-1); currentMessage.content.body += chunk; this.#updateConversation(); @@ -219,13 +216,12 @@ export class AIWindow extends MozLitElement { #dispatchMessageToChatContent(message) { const actor = this.#getAIChatContentActor(); - const newMessage = { ...message }; if (typeof message.role !== "string") { - const roleLabel = lazy.getRoleLabel(newMessage.role).toLowerCase(); - newMessage.role = roleLabel; + const roleLabel = lazy.getRoleLabel(message.role).toLowerCase(); + message.role = roleLabel; } - return actor.dispatchMessageToChatContent(newMessage); + return actor.dispatchMessageToChatContent(message); } /** diff --git a/browser/components/aiwindow/ui/modules/ChatConversation.sys.mjs b/browser/components/aiwindow/ui/modules/ChatConversation.sys.mjs @@ -130,7 +130,7 @@ export class ChatConversation { const currentMessages = this?.messages || []; const ordinal = currentMessages.length ? currentMessages.length + 1 : 1; - const messageData = { + const message_data = { parentMessageId, content, ordinal, @@ -141,7 +141,7 @@ export class ChatConversation { ...opts, }; - const newMessage = new ChatMessage(messageData); + const newMessage = new ChatMessage(message_data); this.messages.push(newMessage); } @@ -233,18 +233,6 @@ export class ChatConversation { * @param {URL} pageUrl - The URL of the page when prompt was submitted */ async generatePrompt(prompt, pageUrl) { - this.#messages = this.#messages.filter(message => { - const isRealTimeInjection = - message.role === MESSAGE_ROLE.SYSTEM && - message.content.type === SYSTEM_PROMPT_TYPE.REAL_TIME; - - const isInsightsInjection = - message.role === MESSAGE_ROLE.SYSTEM && - message.content.type === SYSTEM_PROMPT_TYPE.INSIGHTS; - - return !isRealTimeInjection && !isInsightsInjection; - }); - if (!this.#messages.length) { // TODO: Bug 2008865 // switch to use remote settings prompt accessed via engine.loadPrompt(feature) @@ -328,23 +316,10 @@ export class ChatConversation { ); }) .map(message => { - const msg = { + return { role: getRoleLabel(message.role).toLowerCase(), content: message.content?.body ?? message.content, }; - - if (msg.content.tool_calls) { - msg.tool_calls = msg.content.tool_calls; - msg.content = ""; - } - - if (msg.role === "tool") { - msg.tool_call_id = message.content.tool_call_id; - msg.name = message.content.name; - msg.content = JSON.stringify(message.content.body); - } - - return msg; }); } diff --git a/browser/components/aiwindow/ui/test/xpcshell/test_ChatConversation.js b/browser/components/aiwindow/ui/test/xpcshell/test_ChatConversation.js @@ -483,18 +483,10 @@ add_task(function test_ChatConversation_getMessagesInOpenAiFormat() { const conversation = new ChatConversation({}); conversation.addSystemMessage("text", "the system prompt"); conversation.addUserMessage("a user's prompt", "https://www.somesite.com"); - conversation.addToolCallMessage({ - tool_call_id: "123", - name: "tool_1", - body: [1, 2, 3], - }); + conversation.addToolCallMessage({ some: "tool call details" }); conversation.addAssistantMessage("text", "the llm response"); conversation.addUserMessage("a user's second prompt", "some question"); - conversation.addToolCallMessage({ - tool_call_id: "456", - name: "tool_1", - body: [4, 5, 6], - }); + conversation.addToolCallMessage({ some: "more tool call details" }); conversation.addAssistantMessage("text", "the second llm response"); const openAiFormat = conversation.getMessagesInOpenAiFormat(); @@ -502,10 +494,10 @@ add_task(function test_ChatConversation_getMessagesInOpenAiFormat() { Assert.deepEqual(openAiFormat, [ { role: "system", content: "the system prompt" }, { role: "user", content: "a user's prompt" }, - { role: "tool", content: "[1,2,3]", name: "tool_1", tool_call_id: "123" }, + { role: "tool", content: { some: "tool call details" } }, { role: "assistant", content: "the llm response" }, { role: "user", content: "a user's second prompt" }, - { role: "tool", content: "[4,5,6]", name: "tool_1", tool_call_id: "456" }, + { role: "tool", content: { some: "more tool call details" } }, { role: "assistant", content: "the second llm response" }, ]); });