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:
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" },
]);
});