Commit Graph

6223 Commits

Author SHA1 Message Date
Adrià Arrufat
f84d830ff6 agent: use enum tag for eval tool name 2026-05-05 10:36:46 +02:00
Adrià Arrufat
b3cd77b4b4 agent: unify LLM turn execution into runTurn 2026-05-05 09:44:56 +02:00
Adrià Arrufat
ee398df774 mcp: simplify handleCall parameter handling 2026-05-05 09:34:43 +02:00
Adrià Arrufat
0f2aa3c273 agent: simplify JSON parsing in extractEvalScript 2026-05-05 09:31:57 +02:00
Adrià Arrufat
58b0c1052a browser.tools: restrict env var substitution to LP_ prefix 2026-05-05 09:28:01 +02:00
Adrià Arrufat
f0a859514c agent: extract synthesis prompt and clean up comments 2026-05-05 09:13:03 +02:00
Adrià Arrufat
542cd33cf1 agent.mcp: simplify Transport doc comment 2026-05-05 09:04:53 +02:00
Adrià Arrufat
d5f9f12de8 agent: use zenai for provider defaults and api keys 2026-05-05 08:40:34 +02:00
Adrià Arrufat
976d188820 agent: use dupeMessages from zenai library 2026-05-05 08:33:43 +02:00
Adrià Arrufat
80075efd6b agent: centralize session and node registry resets 2026-05-05 08:16:01 +02:00
Adrià Arrufat
a00161f54c Merge branch 'main' into agent 2026-05-05 08:05:57 +02:00
Karl Seguin
d360fcc07b Merge pull request #2352 from navidemad/fix-input-pattern-validation
forms: implement HTMLInputElement.pattern + patternMismatch validity
2026-05-05 07:49:18 +08:00
Karl Seguin
91074ea834 Merge pull request #2361 from lightpanda-io/worker_deinit_order
Fix potential use-after-free by clearing worker AFTER frame context
2026-05-05 07:34:42 +08:00
Karl Seguin
d1d85e9f5d Fix potential use-after-free by clearing worker AFTER frame context 2026-05-05 07:21:37 +08:00
Karl Seguin
bc081247e7 update v8 dep 2026-05-05 07:04:02 +08:00
Nikolay Govorov
9c669974e4 Merge pull request #2359 from lightpanda-io/wp/mrdimidium/spli-cdp-http
Reorganize Server, Client, CDP and HttpClient
2026-05-04 17:03:19 +01:00
Nikolay Govorov
9a312a4177 Refactor server/client/cdp structure 2026-05-04 16:41:22 +01:00
Pierre Tachoire
0794fbdc68 upgrade zig-v8-fork 2026-05-04 17:27:44 +02:00
Adrià Arrufat
3b99796379 browser.tools: remove google from search fallback chain 2026-05-04 16:28:18 +02:00
Adrià Arrufat
dc441a85a1 browser.tools: add Tavily search support with scraping fallback
Integrates the Tavily Search API as the primary search provider when
TAVILY_API_KEY is set. Falls back to scraping Google and DuckDuckGo
on failure or if the key is missing. Updates zenai dependency.
2026-05-04 15:45:51 +02:00
Pierre Tachoire
cf7dbc98de use v8 RegExp for Input.suffersPatternMismatch 2026-05-04 14:41:38 +02:00
Karl Seguin
112d4d1603 Merge pull request #2356 from lightpanda-io/cdp-audits
cdp: rename Audit into Audits
2026-05-04 19:03:35 +08:00
Pierre Tachoire
080e1e6415 cdp: rename Audit into Audits 2026-05-04 12:42:55 +02:00
Karl Seguin
6b896ba243 Merge pull request #2355 from lightpanda-io/worker_timers
Extract Window Scheduling and re-use it in Worker
2026-05-04 18:18:31 +08:00
Karl Seguin
d1bf44b686 Extract Window Scheduling and re-use it in Worker
Add worker.setInterval, clearInterval, setTimeout, clearTimeout by extracting
the scheduling logic from Window and making it use Execution rather than Frame.
2026-05-04 17:57:05 +08:00
Pierre Tachoire
5aa47f0837 Merge pull request #2354 from lightpanda-io/brew-AUR
README: add hombrew and AUR install
2026-05-04 11:42:07 +02:00
Pierre Tachoire
584d817d2e Merge pull request #2353 from lightpanda-io/remove-archlinux-pkg
ci: remove archlinux packaging
2026-05-04 11:40:43 +02:00
Pierre Tachoire
a266ae7c51 README: add hombrew and AUR install 2026-05-04 11:36:52 +02:00
Pierre Tachoire
2fde24c9c1 ci: remove archlinux packaging
Better use
```
yay -S lightpanda-bin
```
2026-05-04 11:29:24 +02:00
Adrià Arrufat
8171868ced browser.tools: use startsWithIgnoreCase for LP_ check 2026-05-04 11:06:25 +02:00
Adrià Arrufat
c0491bd69e agent: clean up and optimize code
- Fix typo in REPL info message.
- Optimize Recorder to avoid unnecessary allocations.
- Simplify field type detection in SlashCommand using stringToEnum.
- Remove unused yellow ANSI constant in Terminal.
- Shorten log message in McpServer.
2026-05-04 10:51:41 +02:00
Adrià Arrufat
03d883b263 agent: improve script healing atomicity and error handling 2026-05-04 10:41:46 +02:00
Adrià Arrufat
a9b3b66802 agent.mcp: prevent path traversal in task attachments 2026-05-04 10:33:46 +02:00
Adrià Arrufat
804b596d5b agent: block navigation and eval during self-heal
Restricts self-heal turns to only allow page-local commands. Commands
like `goto` and `eval_js` are now ignored to prevent the model from
navigating away or executing arbitrary scripts during healing.
2026-05-04 10:21:31 +02:00
Adrià Arrufat
fba00e33cc agent: ensure atomic message pruning 2026-05-04 10:14:27 +02:00
Karl Seguin
116cc3aee7 Merge pull request #2350 from lightpanda-io/worker_importScripts
Worker.importScripts
2026-05-04 16:00:42 +08:00
Karl Seguin
5238799f6c Merge pull request #2348 from lightpanda-io/window_close_scheduler_reset
On window.close, reset the frame's scheduler
2026-05-04 15:56:46 +08:00
Karl Seguin
b25b91447c Merge pull request #2344 from lightpanda-io/sighandler_threadsafety
Make sighandler thread-safe
2026-05-04 15:56:33 +08:00
Karl Seguin
3d8499abe4 Merge pull request #2317 from lightpanda-io/worker_xhr_fetch
Make Fetch and XHR usable from Worker
2026-05-04 15:56:10 +08:00
Adrià Arrufat
2ca7550947 agent: restrict getEnv tool to LP_ namespace
Limits the getEnv tool to variables starting with LP_ to prevent the
model from probing sensitive system environment variables or API keys.
2026-05-04 09:54:13 +02:00
Pierre Tachoire
65308f01c4 Merge pull request #2297 from lightpanda-io/pending-page
keep the existing page active until the pending one is loaded
2026-05-04 09:42:27 +02:00
Navid EMAD
f8f14efe40 forms: implement HTMLInputElement.pattern + patternMismatch validity
The `pattern` IDL attribute had no accessor registered on
`HTMLInputElement.prototype` (returned undefined despite getAttribute
working), and `Input.suffersPatternMismatch` was a TODO stub returning
false. As a result, `validity.patternMismatch` never fired for
`<input pattern="…">` and `validationMessage` was always empty for
pattern violations.

This change registers `pattern = bridge.accessor(Input.getPattern,
Input.setPattern, .{})` and rewrites `suffersPatternMismatch` to
evaluate `new RegExp("^(?:" + pattern + ")$", "v").test(value)` via
`ls.local.exec` on the owner frame. Strings are JSON-encoded for safe
interpolation. Per HTML §4.10.5.3.5, the constraint applies only to
text-like input types and skips empty values; an unparseable pattern
is ignored. `ValidityState.getPatternMismatch` now takes a `*Frame` so
the regex evaluation can reach the owner frame's V8 scope.

Closes #2351
2026-05-04 09:04:15 +02:00
Pierre Tachoire
14743e4369 replace pages array from Session to allocated active and pending pages 2026-05-04 08:59:59 +02:00
Pierre Tachoire
f9cdc12bf6 use qn.is_about_blank for check instead of string comparison
And fix comment
2026-05-04 08:59:58 +02:00
Pierre Tachoire
6e7398d586 Don't re-init fields w/ default values 2026-05-04 08:59:57 +02:00
Pierre Tachoire
35cecf6fcc fix lp.assert usage
Remove unreachable code and use `comptime IS_DEBUG` check when need.
2026-05-04 08:59:57 +02:00
Pierre Tachoire
3fc5e6d8a5 rename var old_idx into old_active_idx for clarity 2026-05-04 08:59:56 +02:00
Pierre Tachoire
38169fdb52 rename pendingOrCurrentFrame
Co-authored-by: Karl Seguin <karlseguin@users.noreply.github.com>
2026-05-04 08:59:55 +02:00
Pierre Tachoire
e3eb8eba46 typo fix 2026-05-04 08:59:54 +02:00
Pierre Tachoire
ddbdaafa28 refacto Session install and teardown active page 2026-05-04 08:59:54 +02:00