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.
Files changed (107) hide show
  1. package/README.md +40 -1
  2. package/dist/agent/agent-loop.d.ts +26 -2
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +371 -89
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/config.d.ts +5 -0
  7. package/dist/agent/config.d.ts.map +1 -1
  8. package/dist/agent/config.js +5 -0
  9. package/dist/agent/config.js.map +1 -1
  10. package/dist/agent/content-budget.d.ts +11 -0
  11. package/dist/agent/content-budget.d.ts.map +1 -0
  12. package/dist/agent/content-budget.js +133 -0
  13. package/dist/agent/content-budget.js.map +1 -0
  14. package/dist/agent/conversation-manager.d.ts +48 -0
  15. package/dist/agent/conversation-manager.d.ts.map +1 -0
  16. package/dist/agent/conversation-manager.js +171 -0
  17. package/dist/agent/conversation-manager.js.map +1 -0
  18. package/dist/agent/error-recovery.d.ts +29 -0
  19. package/dist/agent/error-recovery.d.ts.map +1 -0
  20. package/dist/agent/error-recovery.js +72 -0
  21. package/dist/agent/error-recovery.js.map +1 -0
  22. package/dist/agent/index.js +7 -2
  23. package/dist/agent/index.js.map +1 -1
  24. package/dist/agent/page-state-cache.d.ts +22 -0
  25. package/dist/agent/page-state-cache.d.ts.map +1 -0
  26. package/dist/agent/page-state-cache.js +71 -0
  27. package/dist/agent/page-state-cache.js.map +1 -0
  28. package/dist/agent/progress-estimator.d.ts +17 -0
  29. package/dist/agent/progress-estimator.d.ts.map +1 -0
  30. package/dist/agent/progress-estimator.js +67 -0
  31. package/dist/agent/progress-estimator.js.map +1 -0
  32. package/dist/agent/prompt.d.ts +1 -1
  33. package/dist/agent/prompt.d.ts.map +1 -1
  34. package/dist/agent/prompt.js +91 -48
  35. package/dist/agent/prompt.js.map +1 -1
  36. package/dist/agent/token-tracker.d.ts +22 -0
  37. package/dist/agent/token-tracker.d.ts.map +1 -0
  38. package/dist/agent/token-tracker.js +29 -0
  39. package/dist/agent/token-tracker.js.map +1 -0
  40. package/dist/agent/tool-usage-tracker.d.ts +45 -0
  41. package/dist/agent/tool-usage-tracker.d.ts.map +1 -0
  42. package/dist/agent/tool-usage-tracker.js +149 -0
  43. package/dist/agent/tool-usage-tracker.js.map +1 -0
  44. package/dist/agent/types.d.ts +30 -0
  45. package/dist/agent/types.d.ts.map +1 -1
  46. package/dist/api/mcp-sse.d.ts +2 -1
  47. package/dist/api/mcp-sse.d.ts.map +1 -1
  48. package/dist/api/mcp-sse.js +2 -1
  49. package/dist/api/mcp-sse.js.map +1 -1
  50. package/dist/api/routes.d.ts +2 -1
  51. package/dist/api/routes.d.ts.map +1 -1
  52. package/dist/api/routes.js +355 -7
  53. package/dist/api/routes.js.map +1 -1
  54. package/dist/browser/BrowserManager.d.ts.map +1 -1
  55. package/dist/browser/BrowserManager.js +5 -2
  56. package/dist/browser/BrowserManager.js.map +1 -1
  57. package/dist/cli/mcp-stdio.js +3 -0
  58. package/dist/cli/mcp-stdio.js.map +1 -1
  59. package/dist/cli/server.js +15 -3
  60. package/dist/cli/server.js.map +1 -1
  61. package/dist/mcp/ai-markdown.d.ts +2 -0
  62. package/dist/mcp/ai-markdown.d.ts.map +1 -0
  63. package/dist/mcp/ai-markdown.js +1807 -0
  64. package/dist/mcp/ai-markdown.js.map +1 -0
  65. package/dist/mcp/browser-mcp-server.d.ts +2 -0
  66. package/dist/mcp/browser-mcp-server.d.ts.map +1 -1
  67. package/dist/mcp/browser-mcp-server.js +340 -49
  68. package/dist/mcp/browser-mcp-server.js.map +1 -1
  69. package/dist/mcp/task-tools.d.ts.map +1 -1
  70. package/dist/mcp/task-tools.js +108 -13
  71. package/dist/mcp/task-tools.js.map +1 -1
  72. package/dist/memory/KnowledgeCardStore.d.ts +35 -0
  73. package/dist/memory/KnowledgeCardStore.d.ts.map +1 -0
  74. package/dist/memory/KnowledgeCardStore.js +304 -0
  75. package/dist/memory/KnowledgeCardStore.js.map +1 -0
  76. package/dist/memory/MemoryCapturer.d.ts +14 -0
  77. package/dist/memory/MemoryCapturer.d.ts.map +1 -0
  78. package/dist/memory/MemoryCapturer.js +183 -0
  79. package/dist/memory/MemoryCapturer.js.map +1 -0
  80. package/dist/memory/MemoryInjector.d.ts +23 -0
  81. package/dist/memory/MemoryInjector.d.ts.map +1 -0
  82. package/dist/memory/MemoryInjector.js +180 -0
  83. package/dist/memory/MemoryInjector.js.map +1 -0
  84. package/dist/memory/RecordingConverter.d.ts +16 -0
  85. package/dist/memory/RecordingConverter.d.ts.map +1 -0
  86. package/dist/memory/RecordingConverter.js +108 -0
  87. package/dist/memory/RecordingConverter.js.map +1 -0
  88. package/dist/memory/SessionRecorder.d.ts +39 -0
  89. package/dist/memory/SessionRecorder.d.ts.map +1 -0
  90. package/dist/memory/SessionRecorder.js +198 -0
  91. package/dist/memory/SessionRecorder.js.map +1 -0
  92. package/dist/memory/index.d.ts +8 -0
  93. package/dist/memory/index.d.ts.map +1 -0
  94. package/dist/memory/index.js +6 -0
  95. package/dist/memory/index.js.map +1 -0
  96. package/dist/memory/types.d.ts +39 -0
  97. package/dist/memory/types.d.ts.map +1 -0
  98. package/dist/memory/types.js +2 -0
  99. package/dist/memory/types.js.map +1 -0
  100. package/dist/task/tool-actions.d.ts +4 -0
  101. package/dist/task/tool-actions.d.ts.map +1 -1
  102. package/dist/task/tool-actions.js +72 -0
  103. package/dist/task/tool-actions.js.map +1 -1
  104. package/package.json +5 -2
  105. package/public/index.html +2296 -226
  106. package/public/task-result.html +107 -12
  107. 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 **35 MCP tools**:
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 messages;
10
+ private conversation;
10
11
  private model;
11
12
  private maxIterations;
12
13
  private initialMessages;
13
14
  private tools;
14
- private recentToolCalls;
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;AAgDrF,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAuB;gBAExC,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,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC;KAChD;IAmBD,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;IA2DrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YA8ClC,IAAI;YAoEJ,gBAAgB;IA6IxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B"}
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"}