Repository navigation
feat: browser agent fixes from live tests on ten utility sites #76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
senamakel
merged 48 commits into
tinyhumansai:main
from
YellowSnnowmann:fix/task-live-fast-hosted-model
Oct 7, 2026
Merged
Changes from all commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
b940dd3
Run task_live's hosted roles on the managed default model
YellowSnnowmann c4f76f9
Pick the suggestion an autocomplete box lists for entered text
YellowSnnowmann 5be352c
Recognise login walls that name what they hide
YellowSnnowmann 4c626bc
Do not take the reCAPTCHA badge for a captcha to solve
YellowSnnowmann 46e2786
Let task_live wait for the person at the terminal
YellowSnnowmann ed3242c
Never press a panel that strings its suggestions together
YellowSnnowmann b08bc1e
Read the rows inside a panel instead of the panel as one button
YellowSnnowmann fa9cc9e
Ask a request too large for one Jev call in parts
YellowSnnowmann 0d195f5
Ride out a provider's brief outage before failing a decision
YellowSnnowmann 7b6532d
Gate a store's and a ride app's last button
YellowSnnowmann 493b763
Stop waiting when the page says it found nothing
YellowSnnowmann 5e27b56
Report values read into variables the flow declared
YellowSnnowmann c2a3e86
Print what a task read wherever task_live stops
YellowSnnowmann ea910cb
Tell the planner a size or colour is a choose, not a pick
YellowSnnowmann 8662569
Tell the planner a condition names a state, not a change
YellowSnnowmann 8f11f5c
End a pause's reason with one full stop in task_live's prompts
YellowSnnowmann 8d23331
Keep a region the page makes pressable itself a button
YellowSnnowmann 63e804b
Keep the typed text when no suggestion clearly fits it
YellowSnnowmann 80b8892
Tell the planner a result filter belongs in its pick
YellowSnnowmann 1140143
Tally every part of a split request, not only the first
YellowSnnowmann d0e79bf
Tell the planner to keep the task's item and criterion in a pick
YellowSnnowmann 8d91451
Take the first ranked item that belongs to the list a pick names
YellowSnnowmann 60e7879
Find result lists drawn as single controls, and skip bare markers
YellowSnnowmann f1f098d
Pause at OTP sign-in dialogs and "Sign up or Log in" walls
YellowSnnowmann 61a89c2
Read more of what a page draws as controls
YellowSnnowmann 4560be4
Keep a press in the tab and get it past covers it did not mean
YellowSnnowmann 1968290
Teach the planner the store, dialog, seat, and date patterns
YellowSnnowmann 1bda38e
Keep the task's own dialog open and stop presses that repeat
YellowSnnowmann 43967f9
Type what plain steps type, and pick suggestions, lists, and dates cl…
YellowSnnowmann 428fb3b
Document the new step, suggestion, and threshold behaviour
YellowSnnowmann fec1cca
Leave a pick the page already has selected as it is
YellowSnnowmann a7a5306
Tell the planner a stepper in place of Add means the item is in the cart
YellowSnnowmann 6e6abc4
Let a focused box go before a covered retry; keep rescues off added i…
YellowSnnowmann 9dc611f
Take a place box's closest row when none names the place exactly
YellowSnnowmann 18b2f82
Read a table's rows and buttons the way a person sees them
YellowSnnowmann 86337b9
Keep the step after a rescue that reruns the failed one
YellowSnnowmann 25331ad
Take the list Jev leaned to, and drop a list split from another's cards
YellowSnnowmann a390a15
Read the items chosen together in one list as one source
YellowSnnowmann 9418146
Let a step that chooses several items press each one's own copy
YellowSnnowmann f55b43c
Answer the task's own dialog when nothing serves the step
YellowSnnowmann b054d7d
Keep a choice's conditions, and press a booking button first
YellowSnnowmann 6f24205
Name a phone check and a robot challenge as walls; test first and las…
YellowSnnowmann 1fcfd17
Keep a press to what was pressed, and read a page more carefully
YellowSnnowmann 35e4663
Fix the flow engine's review findings: secrets, dialogs, presses, picks
YellowSnnowmann 76ea846
Test the drawn-page, covered-press, and link-follow paths
YellowSnnowmann 4b93e75
Never take a typed-into box for a suggestion row
YellowSnnowmann c3c9a5a
Print page words safely in the runner's terminal prompts
YellowSnnowmann 657fffb
Say which model ids the Tiny Humans gateway refuses
YellowSnnowmann File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| //! Letting a page read where the person is, when the agent presses the | ||
| //! page's own "use my current location" button. | ||
|
|
||
| use serde_json::json; | ||
| use tinycomputer_core::surface::Candidate; | ||
|
|
||
| use super::BrowserSurface; | ||
|
|
||
| /// Words of a control that asks the page to find where the person is. | ||
| const ASKS_WHERE: &[&str] = &[ | ||
| "current location", | ||
| "my location", | ||
| "detect location", | ||
| "detect my location", | ||
| "locate me", | ||
| "use location", | ||
| "use my current", | ||
| ]; | ||
|
|
||
| /// Whether pressing `target` asks the page for the person's location. | ||
| pub(super) fn asks_where(target: &Candidate) -> bool { | ||
| let said = format!( | ||
| "{} {}", | ||
| target.name.as_deref().unwrap_or_default(), | ||
| target.description.as_deref().unwrap_or_default() | ||
| ) | ||
| .to_lowercase() | ||
| .replace('-', " "); | ||
| ASKS_WHERE.iter().any(|words| said.contains(words)) | ||
| } | ||
|
|
||
| impl BrowserSurface { | ||
| /// Grants the session's pages the location permission before a press | ||
| /// that asks for it (`asks_where`). The browser asks a person in a | ||
| /// bubble outside the page, which the agent can neither see nor press, | ||
| /// so a store's "use my current location" waited on it forever; the | ||
| /// press stands in for that person's "Allow". Best effort: a browser | ||
| /// that refuses is pressed as it is. | ||
| /// | ||
| /// Only in a browser the module launched on a throwaway profile: the | ||
| /// grant covers every page of the browser for the session, and a | ||
| /// person's own browser (an `endpoint`) or profile (a `user_data_dir`) | ||
| /// keeps its own say, in the bubble they can answer. | ||
| pub(super) fn allow_location(&self) { | ||
| if self.options.endpoint.is_some() || self.options.user_data_dir.is_some() { | ||
| return; | ||
| } | ||
| let Ok(id) = self.ensure_session() else { | ||
| return; | ||
| }; | ||
| let _granted = self.block(self.browser.command( | ||
| &id, | ||
| json!({"action": "permissions", "permissions": ["geolocation"]}), | ||
| )); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.