ai-browser 0.2.4 → 0.3.0
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/README.md +40 -1
- package/dist/agent/agent-loop.d.ts +26 -2
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +371 -89
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/config.d.ts +5 -0
- package/dist/agent/config.d.ts.map +1 -1
- package/dist/agent/config.js +5 -0
- package/dist/agent/config.js.map +1 -1
- package/dist/agent/content-budget.d.ts +11 -0
- package/dist/agent/content-budget.d.ts.map +1 -0
- package/dist/agent/content-budget.js +133 -0
- package/dist/agent/content-budget.js.map +1 -0
- package/dist/agent/conversation-manager.d.ts +48 -0
- package/dist/agent/conversation-manager.d.ts.map +1 -0
- package/dist/agent/conversation-manager.js +171 -0
- package/dist/agent/conversation-manager.js.map +1 -0
- package/dist/agent/error-recovery.d.ts +29 -0
- package/dist/agent/error-recovery.d.ts.map +1 -0
- package/dist/agent/error-recovery.js +72 -0
- package/dist/agent/error-recovery.js.map +1 -0
- package/dist/agent/index.js +7 -2
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/page-state-cache.d.ts +22 -0
- package/dist/agent/page-state-cache.d.ts.map +1 -0
- package/dist/agent/page-state-cache.js +71 -0
- package/dist/agent/page-state-cache.js.map +1 -0
- package/dist/agent/progress-estimator.d.ts +17 -0
- package/dist/agent/progress-estimator.d.ts.map +1 -0
- package/dist/agent/progress-estimator.js +67 -0
- package/dist/agent/progress-estimator.js.map +1 -0
- package/dist/agent/prompt.d.ts +1 -1
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +91 -48
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/token-tracker.d.ts +22 -0
- package/dist/agent/token-tracker.d.ts.map +1 -0
- package/dist/agent/token-tracker.js +29 -0
- package/dist/agent/token-tracker.js.map +1 -0
- package/dist/agent/tool-usage-tracker.d.ts +45 -0
- package/dist/agent/tool-usage-tracker.d.ts.map +1 -0
- package/dist/agent/tool-usage-tracker.js +149 -0
- package/dist/agent/tool-usage-tracker.js.map +1 -0
- package/dist/agent/types.d.ts +30 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/api/mcp-sse.d.ts +2 -1
- package/dist/api/mcp-sse.d.ts.map +1 -1
- package/dist/api/mcp-sse.js +2 -1
- package/dist/api/mcp-sse.js.map +1 -1
- package/dist/api/routes.d.ts +2 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +355 -7
- package/dist/api/routes.js.map +1 -1
- package/dist/browser/BrowserManager.d.ts.map +1 -1
- package/dist/browser/BrowserManager.js +5 -2
- package/dist/browser/BrowserManager.js.map +1 -1
- package/dist/cli/mcp-stdio.js +3 -0
- package/dist/cli/mcp-stdio.js.map +1 -1
- package/dist/cli/server.js +15 -3
- package/dist/cli/server.js.map +1 -1
- package/dist/mcp/ai-markdown.d.ts +2 -0
- package/dist/mcp/ai-markdown.d.ts.map +1 -0
- package/dist/mcp/ai-markdown.js +1807 -0
- package/dist/mcp/ai-markdown.js.map +1 -0
- package/dist/mcp/browser-mcp-server.d.ts +2 -0
- package/dist/mcp/browser-mcp-server.d.ts.map +1 -1
- package/dist/mcp/browser-mcp-server.js +340 -49
- package/dist/mcp/browser-mcp-server.js.map +1 -1
- package/dist/mcp/task-tools.d.ts.map +1 -1
- package/dist/mcp/task-tools.js +108 -13
- package/dist/mcp/task-tools.js.map +1 -1
- package/dist/memory/KnowledgeCardStore.d.ts +35 -0
- package/dist/memory/KnowledgeCardStore.d.ts.map +1 -0
- package/dist/memory/KnowledgeCardStore.js +304 -0
- package/dist/memory/KnowledgeCardStore.js.map +1 -0
- package/dist/memory/MemoryCapturer.d.ts +14 -0
- package/dist/memory/MemoryCapturer.d.ts.map +1 -0
- package/dist/memory/MemoryCapturer.js +183 -0
- package/dist/memory/MemoryCapturer.js.map +1 -0
- package/dist/memory/MemoryInjector.d.ts +23 -0
- package/dist/memory/MemoryInjector.d.ts.map +1 -0
- package/dist/memory/MemoryInjector.js +180 -0
- package/dist/memory/MemoryInjector.js.map +1 -0
- package/dist/memory/RecordingConverter.d.ts +16 -0
- package/dist/memory/RecordingConverter.d.ts.map +1 -0
- package/dist/memory/RecordingConverter.js +108 -0
- package/dist/memory/RecordingConverter.js.map +1 -0
- package/dist/memory/SessionRecorder.d.ts +39 -0
- package/dist/memory/SessionRecorder.d.ts.map +1 -0
- package/dist/memory/SessionRecorder.js +198 -0
- package/dist/memory/SessionRecorder.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +6 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/types.d.ts +39 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/task/tool-actions.d.ts +4 -0
- package/dist/task/tool-actions.d.ts.map +1 -1
- package/dist/task/tool-actions.js +72 -0
- package/dist/task/tool-actions.js.map +1 -1
- package/package.json +5 -2
- package/public/index.html +2296 -226
- package/public/task-result.html +107 -12
- package/public/tasks.html +83 -10
package/README.md
CHANGED
|
@@ -84,6 +84,13 @@ Notes:
|
|
|
84
84
|
- This server currently exposes legacy HTTP+SSE MCP transport (`/mcp/sse` + `/mcp/message`).
|
|
85
85
|
- The message endpoint is `POST /mcp/message?sessionId=...` and is primarily for transport internals.
|
|
86
86
|
|
|
87
|
+
### 4.1 MCP AI Consumer Guide
|
|
88
|
+
|
|
89
|
+
For AI-oriented consumption rules (`nextActions`, `hasMore/nextCursor`, `topIssues`, detail levels), see:
|
|
90
|
+
- `docs/18-mcp-ai-consumer-guide.md`
|
|
91
|
+
- `docs/19-mcp-ai-readability-roadmap.md` (P0-P2 roadmap and execution checklist)
|
|
92
|
+
- benchmark command: `npm run baseline:v1` (includes `aiFieldCoverageRate` / `invalidToolCallRate`)
|
|
93
|
+
|
|
87
94
|
### 5. Use as a library
|
|
88
95
|
|
|
89
96
|
```typescript
|
|
@@ -138,12 +145,35 @@ import {
|
|
|
138
145
|
|
|
139
146
|
## MCP Tools
|
|
140
147
|
|
|
141
|
-
The server currently exposes **
|
|
148
|
+
The server currently exposes **38 MCP tools**:
|
|
142
149
|
- **28 browser primitive tools** (navigation, interaction, tabs, logs, uploads, etc.)
|
|
150
|
+
- **3 composite tools** (multi-step operations in one call)
|
|
143
151
|
- **7 task-runtime tools** (template execution, run tracking, artifacts)
|
|
144
152
|
|
|
145
153
|
Most browser tools accept an optional `sessionId` — omitting it auto-creates/reuses a default session.
|
|
146
154
|
|
|
155
|
+
AI-oriented tool responses now include additive helper fields on key tools:
|
|
156
|
+
- `aiSchemaVersion`: schema version for AI helper payload
|
|
157
|
+
- `aiDetailLevel`: applied detail level (`brief` / `normal` / `full`)
|
|
158
|
+
- `aiSummary`: short status sentence for fast decision-making
|
|
159
|
+
- `aiMarkdown`: compact, sectioned markdown with high-signal details
|
|
160
|
+
- `aiHints`: suggested next actions (text)
|
|
161
|
+
- `nextActions`: structured next-step suggestions (`tool`, `args`, `reason`)
|
|
162
|
+
- `deltaSummary`: polling-oriented change summary (`key`, `changes`)
|
|
163
|
+
- `schemaRepairGuidance`: repair-oriented hints for schema verification failures
|
|
164
|
+
|
|
165
|
+
List-like responses are also normalized with:
|
|
166
|
+
- `hasMore` + `nextCursor` for continuation semantics
|
|
167
|
+
- `topIssues` on log-oriented tools (network/console) for quick fault triage
|
|
168
|
+
|
|
169
|
+
These fields are additive and backward-compatible; existing JSON fields are unchanged.
|
|
170
|
+
|
|
171
|
+
You can control verbosity via environment variable `AI_MARKDOWN_DETAIL_LEVEL=brief|normal|full` (default: `normal`).
|
|
172
|
+
|
|
173
|
+
Optional adaptive policy (prototype): `AI_MARKDOWN_ADAPTIVE_POLICY=1`
|
|
174
|
+
- For polling-heavy tools, detail can auto-shift to `brief`
|
|
175
|
+
- On terminal failure states, detail can auto-escalate to `full`
|
|
176
|
+
|
|
147
177
|
### Session Management
|
|
148
178
|
|
|
149
179
|
| Tool | Description |
|
|
@@ -207,6 +237,14 @@ Most browser tools accept an optional `sessionId` — omitting it auto-creates/r
|
|
|
207
237
|
| `upload_file` | Upload a file to a file input element (**local mode only**) |
|
|
208
238
|
| `get_downloads` | Get downloaded files list |
|
|
209
239
|
|
|
240
|
+
### Composite Tools (Multi-Step Operations)
|
|
241
|
+
|
|
242
|
+
| Tool | Description |
|
|
243
|
+
|------|-------------|
|
|
244
|
+
| `fill_form` | Fill multiple form fields and optionally submit in one call (`fields: [{ element_id, value }]`, optional `submit`) |
|
|
245
|
+
| `click_and_wait` | Click an element then wait for stable/navigation/selector (`element_id` + `waitFor: 'stable'\|'navigation'\|'selector'`) |
|
|
246
|
+
| `navigate_and_extract` | Navigate to URL and extract content in one call (`url` + `extract: 'content'\|'elements'\|'both'`) |
|
|
247
|
+
|
|
210
248
|
### Task Runtime (Non-LLM Templates)
|
|
211
249
|
|
|
212
250
|
| Tool | Description |
|
|
@@ -335,6 +373,7 @@ npm run build # Build TypeScript
|
|
|
335
373
|
npm test # Run tests
|
|
336
374
|
npm run test:run # Run tests once
|
|
337
375
|
npm run baseline:v1 # Collect v1 baseline report
|
|
376
|
+
npm run benchmark:v1:expanded # Run expanded readability scenarios (P2 prototype)
|
|
338
377
|
npm run stress:v1 # Run 100-task stress report
|
|
339
378
|
```
|
|
340
379
|
|
|
@@ -2,34 +2,58 @@ import { EventEmitter } from 'node:events';
|
|
|
2
2
|
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions.js';
|
|
3
3
|
import type { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
4
4
|
import type { AgentRunResult } from './types.js';
|
|
5
|
+
import type { KnowledgeCardStore } from '../memory/KnowledgeCardStore.js';
|
|
5
6
|
export declare class BrowsingAgent extends EventEmitter {
|
|
6
7
|
private openai;
|
|
7
8
|
private mcpClient;
|
|
8
9
|
private state;
|
|
9
|
-
private
|
|
10
|
+
private conversation;
|
|
10
11
|
private model;
|
|
11
12
|
private maxIterations;
|
|
12
13
|
private initialMessages;
|
|
13
14
|
private tools;
|
|
14
|
-
private
|
|
15
|
+
private toolTracker;
|
|
16
|
+
private tokenTracker;
|
|
17
|
+
private pageStateCache;
|
|
18
|
+
private progressEstimator;
|
|
19
|
+
private subGoals;
|
|
20
|
+
private knowledgeStore;
|
|
15
21
|
private stepWarningInjected;
|
|
16
22
|
private pendingInputResolve;
|
|
17
23
|
private pendingInputRequestId;
|
|
24
|
+
private _askHumanTimer;
|
|
25
|
+
private recalledDomains;
|
|
26
|
+
private taskText;
|
|
18
27
|
constructor(options: {
|
|
19
28
|
apiKey?: string;
|
|
20
29
|
baseURL?: string;
|
|
21
30
|
model?: string;
|
|
22
31
|
mcpClient: Client;
|
|
23
32
|
maxIterations?: number;
|
|
33
|
+
timeout?: number;
|
|
24
34
|
initialMessages?: ChatCompletionMessageParam[];
|
|
35
|
+
subGoals?: string[];
|
|
36
|
+
knowledgeStore?: KnowledgeCardStore;
|
|
25
37
|
});
|
|
26
38
|
get sessionId(): string;
|
|
27
39
|
resolveInput(requestId: string, response: Record<string, string>): boolean;
|
|
28
40
|
private emitEvent;
|
|
29
41
|
private discoverTools;
|
|
42
|
+
private _running;
|
|
30
43
|
run(task: string): Promise<AgentRunResult>;
|
|
44
|
+
private _run;
|
|
31
45
|
private loop;
|
|
32
46
|
private executeToolCalls;
|
|
47
|
+
/**
|
|
48
|
+
* Ask LLM to select relevant site memories from the index.
|
|
49
|
+
* Returns cards for domains the LLM considers useful for the task (max 3).
|
|
50
|
+
*/
|
|
51
|
+
private selectMemories;
|
|
52
|
+
/**
|
|
53
|
+
* Find the best knowledge card for a domain, checking normalized domain,
|
|
54
|
+
* full hostname, and subdomain variants in the index.
|
|
55
|
+
*/
|
|
56
|
+
private findBestCard;
|
|
33
57
|
cleanup(): Promise<void>;
|
|
34
58
|
}
|
|
35
59
|
//# sourceMappingURL=agent-loop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,sCAAsC,CAAC;AAC3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGxE,OAAO,KAAK,EAAc,cAAc,EAA0B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../src/agent/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,sCAAsC,CAAC;AAC3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGxE,OAAO,KAAK,EAAc,cAAc,EAA0B,MAAM,YAAY,CAAC;AASrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAM1E,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAM;gBAEV,OAAO,EAAE;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,cAAc,CAAC,EAAE,kBAAkB,CAAC;KACrC;IA0BD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAe1E,OAAO,CAAC,SAAS;YAIH,aAAa;IA4D3B,OAAO,CAAC,QAAQ,CAAS;IAEnB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAYlC,IAAI;YAwGJ,IAAI;YAsFJ,gBAAgB;IAmP9B;;;OAGG;YACW,cAAc;IAmE5B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA2Cd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB/B"}
|