diff --git a/packages/extension/docs/extension_api.md b/packages/extension/docs/extension_api.md index d7dc902..1586660 100644 --- a/packages/extension/docs/extension_api.md +++ b/packages/extension/docs/extension_api.md @@ -118,6 +118,10 @@ export interface ExecuteConfig { model: string apiKey?: string + // Global system-level instructions for the agent. + // Equivalent to AgentConfig.instructions.system. + systemInstruction?: string + // Include the initial tab where page JS starts. Default: true. includeInitialTab?: boolean @@ -212,6 +216,9 @@ interface ExecuteConfig { baseURL: string model: string apiKey?: string + + systemInstruction?: string + includeInitialTab?: boolean experimentalIncludeAllTabs?: boolean onStatusChange?: (status: AgentStatus) => void diff --git a/packages/extension/src/entrypoints/content.ts b/packages/extension/src/entrypoints/content.ts index e06dd1f..1bcfc8a 100644 --- a/packages/extension/src/entrypoints/content.ts +++ b/packages/extension/src/entrypoints/content.ts @@ -70,11 +70,15 @@ async function exposeAgentToPage() { try { const { task, config } = payload + const { systemInstruction, ...agentConfig } = config // Dispose old instance before creating new one multiPageAgent?.dispose() - multiPageAgent = new MultiPageAgent(config) + multiPageAgent = new MultiPageAgent({ + ...agentConfig, + instructions: systemInstruction ? { system: systemInstruction } : undefined, + }) // events diff --git a/packages/extension/src/entrypoints/main-world.ts b/packages/extension/src/entrypoints/main-world.ts index c7946e8..b401beb 100644 --- a/packages/extension/src/entrypoints/main-world.ts +++ b/packages/extension/src/entrypoints/main-world.ts @@ -7,6 +7,12 @@ export interface ExecuteConfig { model: string apiKey?: string + /** + * Global system-level instructions for the agent. + * Equivalent to `AgentConfig.instructions.system`. + */ + systemInstruction?: string + /** * Whether to include the initial tab (that holds this main world script) in the task. * @default true @@ -89,6 +95,7 @@ export default defineUnlistedScript(() => { baseURL: config.baseURL, model: config.model, apiKey: config.apiKey, + systemInstruction: config.systemInstruction, includeInitialTab: config.includeInitialTab, experimentalIncludeAllTabs: config.experimentalIncludeAllTabs, }, diff --git a/packages/website/src/pages/docs/features/chrome-extension/page.tsx b/packages/website/src/pages/docs/features/chrome-extension/page.tsx index acee2a6..8ae0ea2 100644 --- a/packages/website/src/pages/docs/features/chrome-extension/page.tsx +++ b/packages/website/src/pages/docs/features/chrome-extension/page.tsx @@ -199,6 +199,7 @@ interface ExecuteConfig { model: string // Model name apiKey?: string // LLM AK + systemInstruction?: string // Global system-level instructions includeInitialTab?: boolean experimentalIncludeAllTabs?: boolean // Control all unpinned tabs in the window onStatusChange?: (status: AgentStatus) => void