@sparkleideas/browser 3.0.0-alpha.2-patch.26 → 3.0.0-alpha.2-patch.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +25 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +33 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/application/browser-service.d.ts +228 -0
- package/dist/application/browser-service.d.ts.map +1 -0
- package/dist/application/browser-service.js +470 -0
- package/dist/application/browser-service.js.map +1 -0
- package/dist/domain/types.d.ts +428 -0
- package/dist/domain/types.d.ts.map +1 -0
- package/dist/domain/types.js +95 -0
- package/dist/domain/types.js.map +1 -0
- package/dist/index.d.ts +131 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/agent-browser-adapter.d.ts +134 -0
- package/dist/infrastructure/agent-browser-adapter.d.ts.map +1 -0
- package/dist/infrastructure/agent-browser-adapter.js +551 -0
- package/dist/infrastructure/agent-browser-adapter.js.map +1 -0
- package/dist/infrastructure/hooks-integration.d.ts +109 -0
- package/dist/infrastructure/hooks-integration.d.ts.map +1 -0
- package/dist/infrastructure/hooks-integration.js +111 -0
- package/dist/infrastructure/hooks-integration.js.map +1 -0
- package/dist/infrastructure/memory-integration.d.ts +149 -0
- package/dist/infrastructure/memory-integration.d.ts.map +1 -0
- package/dist/infrastructure/memory-integration.js +335 -0
- package/dist/infrastructure/memory-integration.js.map +1 -0
- package/dist/infrastructure/reasoningbank-adapter.d.ts +90 -0
- package/dist/infrastructure/reasoningbank-adapter.d.ts.map +1 -0
- package/dist/infrastructure/reasoningbank-adapter.js +224 -0
- package/dist/infrastructure/reasoningbank-adapter.js.map +1 -0
- package/dist/infrastructure/security-integration.d.ts +80 -0
- package/dist/infrastructure/security-integration.d.ts.map +1 -0
- package/dist/infrastructure/security-integration.js +404 -0
- package/dist/infrastructure/security-integration.js.map +1 -0
- package/dist/infrastructure/workflow-templates.d.ts +95 -0
- package/dist/infrastructure/workflow-templates.d.ts.map +1 -0
- package/dist/infrastructure/workflow-templates.js +366 -0
- package/dist/infrastructure/workflow-templates.js.map +1 -0
- package/dist/mcp-tools/browser-tools.d.ts +18 -0
- package/dist/mcp-tools/browser-tools.d.ts.map +1 -0
- package/dist/mcp-tools/browser-tools.js +1163 -0
- package/dist/mcp-tools/browser-tools.js.map +1 -0
- package/dist/mcp-tools/index.d.ts +6 -0
- package/dist/mcp-tools/index.d.ts.map +1 -0
- package/dist/mcp-tools/index.js +6 -0
- package/dist/mcp-tools/index.js.map +1 -0
- package/dist/skill/index.d.ts +15 -0
- package/dist/skill/index.d.ts.map +1 -0
- package/dist/skill/index.js +23 -0
- package/dist/skill/index.js.map +1 -0
- package/package.json +2 -2
package/dist/index.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sparkleideas/browser
|
|
3
|
+
* Browser automation for AI agents - integrates agent-browser with claude-flow swarms
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - 50+ MCP tools for browser automation
|
|
7
|
+
* - AI-optimized snapshots with element refs (@e1, @e2)
|
|
8
|
+
* - Multi-session support for swarm coordination
|
|
9
|
+
* - Trajectory tracking for ReasoningBank/SONA learning
|
|
10
|
+
* - Integration with agentic-flow optimizations
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { createBrowserService, browserTools } from '@sparkleideas/browser';
|
|
15
|
+
*
|
|
16
|
+
* // Create a browser service
|
|
17
|
+
* const browser = createBrowserService({ sessionId: 'my-session' });
|
|
18
|
+
*
|
|
19
|
+
* // Start a trajectory for learning
|
|
20
|
+
* const trajectoryId = browser.startTrajectory('Login to dashboard');
|
|
21
|
+
*
|
|
22
|
+
* // Perform actions
|
|
23
|
+
* await browser.open('https://example.com/login');
|
|
24
|
+
* await browser.snapshot({ interactive: true });
|
|
25
|
+
* await browser.fill('@e1', 'user@example.com');
|
|
26
|
+
* await browser.fill('@e2', 'password');
|
|
27
|
+
* await browser.click('@e3');
|
|
28
|
+
*
|
|
29
|
+
* // End trajectory
|
|
30
|
+
* const trajectory = browser.endTrajectory(true, 'Login successful');
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
// Domain types
|
|
34
|
+
export * from './domain/types.js';
|
|
35
|
+
// Infrastructure
|
|
36
|
+
export { AgentBrowserAdapter } from './infrastructure/agent-browser-adapter.js';
|
|
37
|
+
// ReasoningBank integration
|
|
38
|
+
export { ReasoningBankAdapter, getReasoningBank, } from './infrastructure/reasoningbank-adapter.js';
|
|
39
|
+
// Hooks integration
|
|
40
|
+
export { preBrowseHook, postBrowseHook, browserHooks, } from './infrastructure/hooks-integration.js';
|
|
41
|
+
// Memory integration (HNSW semantic search)
|
|
42
|
+
export { ClaudeFlowMemoryAdapter, BrowserMemoryManager, createMemoryManager, getMemoryAdapter, } from './infrastructure/memory-integration.js';
|
|
43
|
+
// Security integration (AIDefence)
|
|
44
|
+
export { BrowserSecurityScanner, getSecurityScanner, isUrlSafe, containsPII, } from './infrastructure/security-integration.js';
|
|
45
|
+
// Workflow templates
|
|
46
|
+
export { WorkflowManager, getWorkflowManager, listWorkflows, getWorkflow, WORKFLOW_TEMPLATES, } from './infrastructure/workflow-templates.js';
|
|
47
|
+
// Application services
|
|
48
|
+
export { BrowserService, BrowserSwarmCoordinator, createBrowserService, createBrowserSwarm, } from './application/browser-service.js';
|
|
49
|
+
// MCP tools
|
|
50
|
+
export { browserTools } from './mcp-tools/browser-tools.js';
|
|
51
|
+
// Re-export main classes as defaults
|
|
52
|
+
import { BrowserService, createBrowserService, createBrowserSwarm } from './application/browser-service.js';
|
|
53
|
+
import { browserTools } from './mcp-tools/browser-tools.js';
|
|
54
|
+
import { browserHooks, preBrowseHook, postBrowseHook } from './infrastructure/hooks-integration.js';
|
|
55
|
+
import { getReasoningBank } from './infrastructure/reasoningbank-adapter.js';
|
|
56
|
+
import { getMemoryAdapter, createMemoryManager } from './infrastructure/memory-integration.js';
|
|
57
|
+
import { getSecurityScanner, isUrlSafe, containsPII } from './infrastructure/security-integration.js';
|
|
58
|
+
import { getWorkflowManager, listWorkflows, getWorkflow } from './infrastructure/workflow-templates.js';
|
|
59
|
+
export default {
|
|
60
|
+
// Services
|
|
61
|
+
BrowserService,
|
|
62
|
+
createBrowserService,
|
|
63
|
+
createBrowserSwarm,
|
|
64
|
+
// MCP tools
|
|
65
|
+
browserTools,
|
|
66
|
+
// Hooks
|
|
67
|
+
browserHooks,
|
|
68
|
+
preBrowseHook,
|
|
69
|
+
postBrowseHook,
|
|
70
|
+
// Learning
|
|
71
|
+
getReasoningBank,
|
|
72
|
+
// Memory (HNSW-indexed)
|
|
73
|
+
getMemoryAdapter,
|
|
74
|
+
createMemoryManager,
|
|
75
|
+
// Security (AIDefence)
|
|
76
|
+
getSecurityScanner,
|
|
77
|
+
isUrlSafe,
|
|
78
|
+
containsPII,
|
|
79
|
+
// Workflows
|
|
80
|
+
getWorkflowManager,
|
|
81
|
+
listWorkflows,
|
|
82
|
+
getWorkflow,
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,eAAe;AACf,cAAc,mBAAmB,CAAC;AAElC,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,4BAA4B;AAC5B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,2CAA2C,CAAC;AAEnD,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,GAKb,MAAM,uCAAuC,CAAC;AAE/C,4CAA4C;AAC5C,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GAOjB,MAAM,wCAAwC,CAAC;AAEhD,mCAAmC;AACnC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,WAAW,GAOZ,MAAM,0CAA0C,CAAC;AAElD,qBAAqB;AACrB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,kBAAkB,GAQnB,MAAM,wCAAwC,CAAC;AAEhD,uBAAuB;AACvB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAE1C,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,qCAAqC;AACrC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAExG,eAAe;IACb,WAAW;IACX,cAAc;IACd,oBAAoB;IACpB,kBAAkB;IAElB,YAAY;IACZ,YAAY;IAEZ,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,cAAc;IAEd,WAAW;IACX,gBAAgB;IAEhB,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IAEnB,uBAAuB;IACvB,kBAAkB;IAClB,SAAS;IACT,WAAW;IAEX,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,WAAW;CACZ,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sparkleideas/browser - Agent Browser Adapter
|
|
3
|
+
* Wraps agent-browser CLI for programmatic access
|
|
4
|
+
*/
|
|
5
|
+
import type { ActionResult, Snapshot, SnapshotOptions, OpenInput, ClickInput, FillInput, TypeInput, ScreenshotInput, WaitInput, EvalInput, GetInput, NetworkRouteInput } from '../domain/types.js';
|
|
6
|
+
export interface AgentBrowserAdapterOptions {
|
|
7
|
+
session?: string;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
headless?: boolean;
|
|
10
|
+
executablePath?: string;
|
|
11
|
+
proxy?: string;
|
|
12
|
+
viewport?: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
debug?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class AgentBrowserAdapter {
|
|
19
|
+
private session;
|
|
20
|
+
private timeout;
|
|
21
|
+
private headless;
|
|
22
|
+
private executablePath?;
|
|
23
|
+
private proxy?;
|
|
24
|
+
private viewport?;
|
|
25
|
+
private debug;
|
|
26
|
+
constructor(options?: AgentBrowserAdapterOptions);
|
|
27
|
+
private exec;
|
|
28
|
+
open(input: OpenInput): Promise<ActionResult>;
|
|
29
|
+
back(): Promise<ActionResult>;
|
|
30
|
+
forward(): Promise<ActionResult>;
|
|
31
|
+
reload(): Promise<ActionResult>;
|
|
32
|
+
close(): Promise<ActionResult>;
|
|
33
|
+
click(input: ClickInput): Promise<ActionResult>;
|
|
34
|
+
dblclick(target: string): Promise<ActionResult>;
|
|
35
|
+
fill(input: FillInput): Promise<ActionResult>;
|
|
36
|
+
type(input: TypeInput): Promise<ActionResult>;
|
|
37
|
+
press(key: string, delay?: number): Promise<ActionResult>;
|
|
38
|
+
hover(target: string): Promise<ActionResult>;
|
|
39
|
+
focus(target: string): Promise<ActionResult>;
|
|
40
|
+
select(target: string, value: string): Promise<ActionResult>;
|
|
41
|
+
check(target: string): Promise<ActionResult>;
|
|
42
|
+
uncheck(target: string): Promise<ActionResult>;
|
|
43
|
+
scroll(direction: 'up' | 'down' | 'left' | 'right', pixels?: number): Promise<ActionResult>;
|
|
44
|
+
scrollIntoView(target: string): Promise<ActionResult>;
|
|
45
|
+
drag(source: string, target: string): Promise<ActionResult>;
|
|
46
|
+
upload(target: string, files: string[]): Promise<ActionResult>;
|
|
47
|
+
get(input: GetInput): Promise<ActionResult>;
|
|
48
|
+
getText(target: string): Promise<ActionResult<string>>;
|
|
49
|
+
getHtml(target: string): Promise<ActionResult<string>>;
|
|
50
|
+
getValue(target: string): Promise<ActionResult<string>>;
|
|
51
|
+
getAttr(target: string, attribute: string): Promise<ActionResult<string>>;
|
|
52
|
+
getTitle(): Promise<ActionResult<string>>;
|
|
53
|
+
getUrl(): Promise<ActionResult<string>>;
|
|
54
|
+
getCount(selector: string): Promise<ActionResult<number>>;
|
|
55
|
+
getBox(target: string): Promise<ActionResult<{
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
width: number;
|
|
59
|
+
height: number;
|
|
60
|
+
}>>;
|
|
61
|
+
isVisible(target: string): Promise<ActionResult<boolean>>;
|
|
62
|
+
isEnabled(target: string): Promise<ActionResult<boolean>>;
|
|
63
|
+
isChecked(target: string): Promise<ActionResult<boolean>>;
|
|
64
|
+
snapshot(options?: SnapshotOptions): Promise<ActionResult<Snapshot>>;
|
|
65
|
+
screenshot(input?: ScreenshotInput): Promise<ActionResult<string>>;
|
|
66
|
+
pdf(path: string): Promise<ActionResult>;
|
|
67
|
+
wait(input: WaitInput): Promise<ActionResult>;
|
|
68
|
+
waitForSelector(selector: string, timeout?: number): Promise<ActionResult>;
|
|
69
|
+
waitForText(text: string): Promise<ActionResult>;
|
|
70
|
+
waitForUrl(pattern: string): Promise<ActionResult>;
|
|
71
|
+
waitForLoad(state: 'load' | 'domcontentloaded' | 'networkidle'): Promise<ActionResult>;
|
|
72
|
+
waitForFunction(fn: string): Promise<ActionResult>;
|
|
73
|
+
eval<T = unknown>(input: EvalInput): Promise<ActionResult<T>>;
|
|
74
|
+
mouseMove(x: number, y: number): Promise<ActionResult>;
|
|
75
|
+
mouseDown(button?: 'left' | 'right' | 'middle'): Promise<ActionResult>;
|
|
76
|
+
mouseUp(button?: 'left' | 'right' | 'middle'): Promise<ActionResult>;
|
|
77
|
+
mouseWheel(deltaY: number, deltaX?: number): Promise<ActionResult>;
|
|
78
|
+
setViewport(width: number, height: number): Promise<ActionResult>;
|
|
79
|
+
setDevice(device: string): Promise<ActionResult>;
|
|
80
|
+
setGeolocation(lat: number, lng: number): Promise<ActionResult>;
|
|
81
|
+
setOffline(enabled: boolean): Promise<ActionResult>;
|
|
82
|
+
setHeaders(headers: Record<string, string>): Promise<ActionResult>;
|
|
83
|
+
setCredentials(username: string, password: string): Promise<ActionResult>;
|
|
84
|
+
setMedia(scheme: 'dark' | 'light'): Promise<ActionResult>;
|
|
85
|
+
getCookies(): Promise<ActionResult>;
|
|
86
|
+
setCookie(name: string, value: string): Promise<ActionResult>;
|
|
87
|
+
clearCookies(): Promise<ActionResult>;
|
|
88
|
+
getLocalStorage(key?: string): Promise<ActionResult>;
|
|
89
|
+
setLocalStorage(key: string, value: string): Promise<ActionResult>;
|
|
90
|
+
clearLocalStorage(): Promise<ActionResult>;
|
|
91
|
+
getSessionStorage(key?: string): Promise<ActionResult>;
|
|
92
|
+
setSessionStorage(key: string, value: string): Promise<ActionResult>;
|
|
93
|
+
clearSessionStorage(): Promise<ActionResult>;
|
|
94
|
+
networkRoute(input: NetworkRouteInput): Promise<ActionResult>;
|
|
95
|
+
networkUnroute(urlPattern?: string): Promise<ActionResult>;
|
|
96
|
+
networkRequests(filter?: string): Promise<ActionResult>;
|
|
97
|
+
listTabs(): Promise<ActionResult>;
|
|
98
|
+
newTab(url?: string): Promise<ActionResult>;
|
|
99
|
+
switchTab(index: number): Promise<ActionResult>;
|
|
100
|
+
closeTab(index?: number): Promise<ActionResult>;
|
|
101
|
+
newWindow(): Promise<ActionResult>;
|
|
102
|
+
switchFrame(selector: string): Promise<ActionResult>;
|
|
103
|
+
switchToMainFrame(): Promise<ActionResult>;
|
|
104
|
+
dialogAccept(text?: string): Promise<ActionResult>;
|
|
105
|
+
dialogDismiss(): Promise<ActionResult>;
|
|
106
|
+
traceStart(path?: string): Promise<ActionResult>;
|
|
107
|
+
traceStop(path?: string): Promise<ActionResult>;
|
|
108
|
+
getConsole(): Promise<ActionResult>;
|
|
109
|
+
clearConsole(): Promise<ActionResult>;
|
|
110
|
+
getErrors(): Promise<ActionResult>;
|
|
111
|
+
clearErrors(): Promise<ActionResult>;
|
|
112
|
+
highlight(selector: string): Promise<ActionResult>;
|
|
113
|
+
saveState(path: string): Promise<ActionResult>;
|
|
114
|
+
loadState(path: string): Promise<ActionResult>;
|
|
115
|
+
findByRole(role: string, action: string, options?: {
|
|
116
|
+
name?: string;
|
|
117
|
+
exact?: boolean;
|
|
118
|
+
}): Promise<ActionResult>;
|
|
119
|
+
findByText(text: string, action: string): Promise<ActionResult>;
|
|
120
|
+
findByLabel(label: string, action: string, value?: string): Promise<ActionResult>;
|
|
121
|
+
findByPlaceholder(placeholder: string, action: string, value?: string): Promise<ActionResult>;
|
|
122
|
+
findByTestId(testId: string, action: string, value?: string): Promise<ActionResult>;
|
|
123
|
+
findFirst(selector: string, action: string, value?: string): Promise<ActionResult>;
|
|
124
|
+
findLast(selector: string, action: string, value?: string): Promise<ActionResult>;
|
|
125
|
+
findNth(n: number, selector: string, action: string, value?: string): Promise<ActionResult>;
|
|
126
|
+
listSessions(): Promise<ActionResult>;
|
|
127
|
+
getCurrentSession(): Promise<ActionResult>;
|
|
128
|
+
setSession(sessionId: string): void;
|
|
129
|
+
getSession(): string;
|
|
130
|
+
connect(port: number): Promise<ActionResult>;
|
|
131
|
+
static install(withDeps?: boolean): Promise<ActionResult>;
|
|
132
|
+
}
|
|
133
|
+
export default AgentBrowserAdapter;
|
|
134
|
+
//# sourceMappingURL=agent-browser-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-browser-adapter.d.ts","sourceRoot":"","sources":["../../src/infrastructure/agent-browser-adapter.ts"],"names":[],"mappings":"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"}
|