Sign In

@mearl/native-host

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mearl/native-host - npm Package Compare versions

Comparing version
2.1.0
to
2.2.0
+1
-0
dist/agent/codex-provider.d.ts

@@ -24,2 +24,3 @@ import type { AgentChatImageInput, AgentChatModelInfo, AgentChatProviderDescriptor, AgentInstalledSkill } from '@mearl/browser-core';

getDescriptor(): Promise<AgentChatProviderDescriptor>;
prepare(): Promise<void>;
onEvent(listener: (event: AgentProviderEvent) => void): () => void;

@@ -26,0 +27,0 @@ listSessions(options: AgentProviderListSessionsOptions): Promise<AgentProviderListSessionsResult>;

+7
-13

@@ -1,2 +0,2 @@

import type { AgentChatEvent, AgentChatCloseOptions, AgentChatEventsOptions, AgentChatEventsResult, AgentChatInterruptOptions, AgentChatListSessionsOptions, AgentChatListSessionsResult, AgentChatOpenOptions, AgentChatRefreshResult, AgentChatRespondOptions, AgentChatSendOptions, AgentChatSession, AgentChatStartOptions, AgentChatStatus, AgentInstalledSkill, AgentSkillReadResult } from '@mearl/browser-core';
import type { AgentChatEvent, AgentChatEventsOptions, AgentChatEventsResult, AgentChatListSessionsOptions, AgentChatListSessionsResult, AgentChatPrepareOptions, AgentChatRefreshResult, AgentChatRespondOptions, AgentChatSendOptions, AgentChatSession, AgentChatSessionTarget, AgentChatStartOptions, AgentChatStatus, AgentInstalledSkill, AgentSkillInstalledListOptions, AgentSkillReadOptions, AgentSkillReadResult } from '@mearl/browser-core';
import type { AgentProvider } from './provider.js';

@@ -17,11 +17,5 @@ export declare class AgentChatManager {

getStatus(): Promise<AgentChatStatus>;
listSkills(options: {
providerId?: unknown;
cwd?: unknown;
}): Promise<AgentInstalledSkill[]>;
readSkill(options: {
providerId?: unknown;
path?: unknown;
cwd?: unknown;
}): Promise<AgentSkillReadResult>;
prepare(options: AgentChatPrepareOptions): Promise<void>;
listSkills(options: AgentSkillInstalledListOptions): Promise<AgentInstalledSkill[]>;
readSkill(options: AgentSkillReadOptions): Promise<AgentSkillReadResult>;
listSessions(options: AgentChatListSessionsOptions): Promise<AgentChatListSessionsResult>;

@@ -32,5 +26,5 @@ startSession(options: AgentChatStartOptions): Promise<AgentChatSession>;

}>;
interrupt(options: AgentChatInterruptOptions): Promise<void>;
openSession(options: AgentChatOpenOptions): Promise<void>;
closeSession(options: AgentChatCloseOptions): Promise<void>;
interrupt(options: AgentChatSessionTarget): Promise<void>;
openSession(options: AgentChatSessionTarget): Promise<void>;
closeSession(options: AgentChatSessionTarget): Promise<void>;
getEvents(options: AgentChatEventsOptions): AgentChatEventsResult;

@@ -37,0 +31,0 @@ refreshSession(options: AgentChatEventsOptions): Promise<AgentChatRefreshResult>;

@@ -1,2 +0,2 @@

import type { AgentChatEventKind, AgentChatImageInput, AgentChatModelInfo, AgentChatProviderDescriptor, AgentInstalledSkill } from '@mearl/browser-core';
import type { AgentChatEventKind, AgentChatImageInput, AgentChatListSessionsOptions, AgentChatModelInfo, AgentChatProviderDescriptor, AgentChatSessionSummary, AgentInstalledSkill } from '@mearl/browser-core';
export interface AgentProviderEvent {

@@ -15,12 +15,4 @@ providerSessionId?: string;

}
export interface AgentProviderSessionSummary {
providerSessionId: string;
title?: string;
cwd?: string;
updatedAt?: number;
ephemeral?: boolean;
}
export interface AgentProviderListSessionsOptions {
cwd?: string;
cursor?: string;
export type AgentProviderSessionSummary = Omit<AgentChatSessionSummary, 'providerId'>;
export interface AgentProviderListSessionsOptions extends Omit<AgentChatListSessionsOptions, 'providerId' | 'limit'> {
limit: number;

@@ -40,2 +32,3 @@ }

getDescriptor(): Promise<AgentChatProviderDescriptor>;
prepare(): Promise<void>;
onEvent(listener: (event: AgentProviderEvent) => void): () => void;

@@ -42,0 +35,0 @@ listSessions?(options: AgentProviderListSessionsOptions): Promise<AgentProviderListSessionsResult>;

@@ -24,2 +24,3 @@ import * as acp from '@agentclientprotocol/sdk';

getDescriptor(): Promise<AgentChatProviderDescriptor>;
prepare(): Promise<void>;
onEvent(listener: (event: AgentProviderEvent) => void): () => void;

@@ -26,0 +27,0 @@ listSessions(options: AgentProviderListSessionsOptions): Promise<AgentProviderListSessionsResult>;

@@ -1,2 +0,2 @@

import type { AgentSkillCheckUpdatesResult, AgentSkillCliStatus, AgentSkillInstallOptions, AgentSkillMutationOptions, AgentSkillMutationResult, AgentSkillScope, AgentSkillUpdate } from '@mearl/browser-core';
import type { AgentSkillCheckUpdatesResult, AgentSkillCheckUpdatesOptions, AgentSkillCliStatus, AgentSkillInstallOptions, AgentSkillMutationOptions, AgentSkillMutationResult, AgentSkillScope, AgentSkillUpdate } from '@mearl/browser-core';
interface SkillCliOutput {

@@ -20,6 +20,3 @@ stdout: string;

install(data: AgentSkillInstallOptions): Promise<AgentSkillMutationResult>;
checkUpdates(data: {
providerId?: unknown;
cwd?: unknown;
}): Promise<AgentSkillCheckUpdatesResult>;
checkUpdates(data: AgentSkillCheckUpdatesOptions): Promise<AgentSkillCheckUpdatesResult>;
update(data: AgentSkillMutationOptions): Promise<AgentSkillMutationResult>;

@@ -26,0 +23,0 @@ uninstall(data: AgentSkillMutationOptions): Promise<AgentSkillMutationResult>;

@@ -0,33 +1,7 @@

import type { BrowserListResult } from '@mearl/browser-core';
import { type BrowserRecord } from './browser-registry.js';
import { type ManagedBrowserSummary } from './managed-browser.js';
export type BrowserStatus = 'connected' | 'running_disconnected' | 'stopped';
interface BrowserInventoryBase {
browserId: string;
name: string;
status: BrowserStatus;
extensionVersion?: string;
nativeHostVersion?: string;
transport?: 'extension' | 'cdp';
}
export interface RegularBrowserInventoryItem extends BrowserInventoryBase {
type: 'regular';
status: 'connected';
}
export interface ManagedBrowserInventoryItem extends BrowserInventoryBase {
type: 'managed';
headless: boolean;
persistent: boolean;
cdpPort: number;
createdAt: string;
account?: ManagedBrowserSummary['account'];
copiedCookies?: ManagedBrowserSummary['copiedCookies'];
}
export type BrowserInventoryItem = RegularBrowserInventoryItem | ManagedBrowserInventoryItem;
export interface BrowserInventoryResult {
count: number;
connectedCount: number;
browsers: BrowserInventoryItem[];
}
type BrowserInventoryResult = Omit<BrowserListResult, 'defaultBrowserId'>;
export declare function mergeBrowserInventory(connected: BrowserRecord[], managed: ManagedBrowserSummary[]): BrowserInventoryResult;
export declare function listBrowserInventory(): BrowserInventoryResult;
export {};

@@ -11,6 +11,6 @@ /**

*/
import type { ControlSource } from '@mearl/browser-core';
import type { BrowserCommandAction, ControlSource } from '@mearl/browser-core';
import type { CdpSession, PageSession } from './cdp-session.js';
export interface BrowserAction {
name: string;
name: BrowserCommandAction;
session: 'browser';

@@ -20,3 +20,3 @@ handler: (session: CdpSession, data: any, controlSource: ControlSource) => Promise<any>;

export interface PageAction {
name: string;
name: BrowserCommandAction;
session: 'page';

@@ -23,0 +23,0 @@ handler: (session: PageSession, data: any, controlSource: ControlSource) => Promise<any>;

/**
* CDP browser-level handlers: screenshot, selected element, user info.
*/
import type { GetUserInfoParams, PageScreenshotParams, PageSelectedElementParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpPageScreenshot(session: PageSession, data: any): Promise<any>;
export declare function cdpPageSelectedElement(session: PageSession, _data: any): Promise<any>;
export declare function cdpGetUserInfo(session: PageSession, data: any): Promise<any>;
export declare function cdpPageScreenshot(session: PageSession, data: PageScreenshotParams): Promise<any>;
export declare function cdpPageSelectedElement(session: PageSession, _data: PageSelectedElementParams): Promise<any>;
export declare function cdpGetUserInfo(session: PageSession, data: GetUserInfoParams): Promise<any>;

@@ -10,4 +10,4 @@ /**

import type { CdpSession } from './cdp-session.js';
import { type ControlSource, type PageActAction } from '@mearl/browser-core';
export declare function cdpRunActions(session: CdpSession, data: any, controlSource?: ControlSource): Promise<any>;
import { type ControlSource, type PageActAction, type RunActionsParams } from '@mearl/browser-core';
export declare function cdpRunActions(session: CdpSession, data: RunActionsParams, controlSource?: ControlSource): Promise<any>;
/**

@@ -14,0 +14,0 @@ * Runs a page interaction action with built-in observation: executes the raw

/** CDP handler for changing one named cookie in the current page scope. */
import { type GetCookieParams, type SetCookieParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpSetCookie(session: PageSession, data: any): Promise<any>;
export declare function cdpGetCookie(session: PageSession, data: any): Promise<any>;
export declare function cdpSetCookie(session: PageSession, data: SetCookieParams): Promise<any>;
export declare function cdpGetCookie(session: PageSession, data: GetCookieParams): Promise<any>;
/**
* CDP HTTP proxy / MTOP request / API schema handlers.
*/
import { type GetApiSchemaParams, type SendMtopRequestParams, type SendRequestParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpSendRequest(session: PageSession, data: any): Promise<any>;
export declare function cdpSendMtopRequest(session: PageSession, data: any): Promise<any>;
export declare function cdpGetApiSchema(session: PageSession, data: any): Promise<any>;
export declare function cdpSendRequest(session: PageSession, data: SendRequestParams): Promise<any>;
export declare function cdpSendMtopRequest(session: PageSession, data: SendMtopRequestParams): Promise<any>;
export declare function cdpGetApiSchema(session: PageSession, data: GetApiSchemaParams): Promise<any>;

@@ -6,12 +6,13 @@ /**

*/
import { type PageClickParams, type PageEvalParams, type PageHoverParams, type PageNavigateParams, type PagePressParams, type PageScrollParams, type PageTypeParams, type PageUploadParams, type PageWaitParams, type SetDeviceEmulationParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpPageClick(session: PageSession, data: any): Promise<any>;
export declare function cdpPageType(session: PageSession, data: any): Promise<any>;
export declare function cdpPageScroll(session: PageSession, data: any): Promise<any>;
export declare function cdpPageEval(session: PageSession, data: any): Promise<any>;
export declare function cdpPagePress(session: PageSession, data: any): Promise<any>;
export declare function cdpPageWait(session: PageSession, data: any): Promise<any>;
export declare function cdpPageNavigate(session: PageSession, data: any): Promise<any>;
export declare function cdpPageUpload(session: PageSession, data: any): Promise<any>;
export declare function cdpSetDeviceEmulation(session: PageSession, data: any): Promise<any>;
export declare function cdpPageHover(session: PageSession, data: any): Promise<any>;
export declare function cdpPageClick(session: PageSession, data: PageClickParams): Promise<any>;
export declare function cdpPageType(session: PageSession, data: PageTypeParams): Promise<any>;
export declare function cdpPageScroll(session: PageSession, data: PageScrollParams): Promise<any>;
export declare function cdpPageEval(session: PageSession, data: PageEvalParams): Promise<any>;
export declare function cdpPagePress(session: PageSession, data: PagePressParams): Promise<any>;
export declare function cdpPageWait(session: PageSession, data: PageWaitParams): Promise<any>;
export declare function cdpPageNavigate(session: PageSession, data: PageNavigateParams): Promise<any>;
export declare function cdpPageUpload(session: PageSession, data: PageUploadParams): Promise<any>;
export declare function cdpSetDeviceEmulation(session: PageSession, data: SetDeviceEmulationParams): Promise<any>;
export declare function cdpPageHover(session: PageSession, data: PageHoverParams): Promise<any>;
/**
* CDP mock interception handlers.
*/
import { type GetMocksParams, type SetMockParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
/** browser_release 使用:丢弃所有依赖当前 CDP 会话的 mock 状态。 */
export declare function clearCdpMockState(): void;
export declare function cdpSetMock(session: PageSession, data: any): Promise<any>;
export declare function cdpGetMocks(_session: PageSession, _data: any): any;
export declare function cdpSetMock(session: PageSession, data: SetMockParams): Promise<any>;
export declare function cdpGetMocks(_session: PageSession, _data: GetMocksParams): any;

@@ -7,6 +7,7 @@ /**

*/
import { type RecordParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpRecordStart(session: PageSession, _data: any): Promise<any>;
export declare function cdpRecordStop(session: PageSession, _data: any): Promise<any>;
export declare function cdpRecordStart(session: PageSession, _data: RecordParams): Promise<any>;
export declare function cdpRecordStop(session: PageSession, _data: RecordParams): Promise<any>;
/** browser_release 使用:停止仍存活页面的录制,并丢弃已失效 target 的残留状态。 */
export declare function releaseCdpRecordings(sessions: PageSession[]): Promise<void>;
/**
* CDP request/log/event buffer query handlers.
*/
import type { GetEventsParams, GetLogsParams, GetRequestsParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpGetRequests(session: PageSession, data: any): Promise<any>;
export declare function cdpGetLogs(session: PageSession, data: any): Promise<any>;
export declare function cdpGetEvents(session: PageSession, data: any): Promise<any>;
export declare function cdpGetRequests(session: PageSession, data: GetRequestsParams): Promise<any>;
export declare function cdpGetLogs(session: PageSession, data: GetLogsParams): Promise<any>;
export declare function cdpGetEvents(session: PageSession, data: GetEventsParams): Promise<any>;
/**
* CDP accessibility tree snapshot and frame handlers.
*/
import { type PageFramesParams, type PageSnapshotParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpPageSnapshot(session: PageSession, data: any): Promise<any>;
export declare function cdpPageFrames(session: PageSession, _data: any): Promise<any>;
export declare function cdpPageSnapshot(session: PageSession, data: PageSnapshotParams): Promise<any>;
export declare function cdpPageFrames(session: PageSession, _data: PageFramesParams): Promise<any>;
/**
* CDP tab management handlers.
*/
import { type ControlSource } from '@mearl/browser-core';
import { type ControlSource, type TabCloseParams, type TabOpenParams } from '@mearl/browser-core';
import type { CdpSession } from './cdp-session.js';
export declare function cdpTabOpen(session: CdpSession, data: any, controlSource?: ControlSource): Promise<any>;
export declare function cdpTabClose(session: CdpSession, data: any): Promise<any>;
export declare function cdpTabOpen(session: CdpSession, data: TabOpenParams, controlSource?: ControlSource): Promise<any>;
export declare function cdpTabClose(session: CdpSession, data: TabCloseParams): Promise<any>;
export declare function cdpTabList(session: CdpSession, _data: any): Promise<any>;

@@ -6,5 +6,6 @@ /**

*/
import { type TdbankAccountParams } from '@mearl/browser-core';
import type { CdpSession } from './cdp-session.js';
/** Prepare a TDBank SSO ticket without changing the controller browser account. */
export declare function cdpPrepareTdbankSso(cdpSession: CdpSession, data: any): Promise<any>;
export declare function cdpPrepareTdbankSso(cdpSession: CdpSession, data: TdbankAccountParams): Promise<any>;
/** Consume a TDBank SSO ticket inside an isolated managed browser. */

@@ -14,2 +15,2 @@ export declare function cdpConsumeTdbankSso(cdpSession: CdpSession, ssoUrl: string, expectedLoginId?: string): Promise<{

}>;
export declare function cdpTdbankAccount(cdpSession: CdpSession, data: any): Promise<any>;
export declare function cdpTdbankAccount(cdpSession: CdpSession, data: TdbankAccountParams): Promise<any>;
/** CDP timezone override handler. */
import type { SetTimezoneParams } from '@mearl/browser-core';
import type { PageSession } from './cdp-session.js';
export declare function cdpSetTimezone(session: PageSession, data: any): Promise<any>;
export declare function cdpSetTimezone(session: PageSession, data: SetTimezoneParams): Promise<any>;

@@ -31,7 +31,10 @@ /**

*/
export interface CloudConnectorListItem {
serverUrl: string;
pid: number;
connectorId?: string;
name?: string;
}
export interface CloudConnectorListResult {
connectors: Array<{
serverUrl: string;
pid: number;
}>;
connectors: CloudConnectorListItem[];
}

@@ -50,2 +53,4 @@ /**

pid?: number;
connectorId?: string;
name?: string;
reused?: boolean;

@@ -52,0 +57,0 @@ error?: string;

/** Managed Chrome lifecycle for isolated, optionally headless browser instances. */
import { type DaemonRecord } from '@mearl/daemon-core';
import { type TransferableCookie } from './cdp-backend/cookie-transfer.js';
export type ManagedBrowserUserAgentMode = 'default' | 'desktop';
export interface ManagedBrowserLaunchParams {
name: string;
headless?: boolean;
userAgentMode?: ManagedBrowserUserAgentMode;
persistent?: boolean;
executablePath?: string;
url?: string;
accountId?: string | number;
havanaId?: string | number;
site?: string | number;
query?: string;
tabId?: number;
copyCookieDomains?: string[];
}
import type { BrowserLaunchParams } from '@mearl/browser-core';
export type ManagedBrowserUserAgentMode = NonNullable<BrowserLaunchParams['userAgentMode']>;
export interface TdbankSsoTicket {

@@ -62,3 +49,3 @@ ssoUrl: string;

nativeHostScript: string;
prepareTdbankSso: (data: ManagedBrowserLaunchParams) => Promise<TdbankSsoTicket>;
prepareTdbankSso: (data: BrowserLaunchParams) => Promise<TdbankSsoTicket>;
exportCookies: (domains: string[]) => Promise<TransferableCookie[]>;

@@ -82,3 +69,3 @@ log: (...args: any[]) => void;

export declare function listManagedBrowsers(): ManagedBrowserSummary[];
export declare function launchManagedBrowser(input: ManagedBrowserLaunchParams, deps: ManagedBrowserManagerDeps): Promise<Record<string, any>>;
export declare function launchManagedBrowser(input: BrowserLaunchParams, deps: ManagedBrowserManagerDeps): Promise<Record<string, any>>;
export declare function closeManagedBrowser(selector: string, options?: {

@@ -85,0 +72,0 @@ deleteProfile?: boolean;

{
"name": "@mearl/native-host",
"version": "2.1.0",
"version": "2.2.0",
"description": "Native Messaging Host for Mearl — bridges Chrome Extension and local socket server",

@@ -35,4 +35,4 @@ "type": "module",

"typescript": "^5.8.3",
"@mearl/browser-core": "2.1.0",
"@mearl/daemon-core": "2.1.0"
"@mearl/browser-core": "2.2.0",
"@mearl/daemon-core": "2.2.0"
},

@@ -39,0 +39,0 @@ "scripts": {

@@ -88,3 +88,3 @@ # @mearl/native-host

侧边栏中未选择本地目录时,Codex 对话使用只读沙箱且不允许提权,Qoder 对话通过首条提示词约束为只读模式;选择后才使用该目录作为可写工作区。`MEARL_AGENT_CWD` 仅用于 Codex 只读对话的默认浏览目录,不会开启写权限;Qoder 未选目录时从用户主目录开始浏览。Agent 接入由统一 Provider 接口承载,后续可新增 Claude 等实现而无需修改扩展与 native-host 之间的 Chat 协议。只安装 ChatGPT 等桌面聊天客户端不能替代 Provider CLI;侧边栏会在 CLI 缺失时展示安装与登录指引。
侧边栏 Agent 不使用只读或工作区沙箱限制,文件、命令和网络操作由 Provider 的审批机制控制。用户选择的本地目录只作为对话的参考上下文和相对路径起点,不限制 Agent 可访问的范围;未选择时从用户主目录开始,Codex 可通过 `MEARL_AGENT_CWD` 覆盖默认起点。Agent 接入由统一 Provider 接口承载,后续可新增 Claude 等实现而无需修改扩展与 native-host 之间的 Chat 协议。只安装 ChatGPT 等桌面聊天客户端不能替代 Provider CLI;侧边栏会在 CLI 缺失时展示安装与登录指引。

@@ -91,0 +91,0 @@ ## 构建

Sorry, the diff of this file is too big to display