Commit Graph

230 Commits

Author SHA1 Message Date
Saurav Panda fc27ac9bb2 fixed table selector formatting 2026-02-05 17:19:33 -08:00
Saurav Panda c946451221 Merge branch 'main' into experiment-js-codegen-extraction 2026-02-05 16:53:42 -08:00
Laith Weinberger 7455b3c1af deduplicate code; allow CDP events to propagate; error handling 2026-02-04 21:14:14 -05:00
Laith Weinberger d66181cdc6 notify agent if new tab opened 2026-02-04 21:02:13 -05:00
Saurav Panda b3f2cc179e Improve JS codegen prompt 2026-02-04 16:39:39 -08:00
Saurav Panda e206616e98 added result deduplication 2026-02-03 21:45:28 -08:00
Saurav Panda a488a2d852 Revert "added html de duplication"
This reverts commit cf22532963.
2026-02-03 21:26:34 -08:00
Saurav Panda cf22532963 added html de duplication 2026-02-03 20:06:55 -08:00
Saurav Panda e58c435ce7 reverted MAX HTML chars to 100k 2026-02-03 18:52:51 -08:00
Saurav Panda d24dea0aa4 Merge branch 'main' into improve-input-field-handling 2026-02-03 18:22:19 -08:00
Saurav Panda 12628fb904 added hrefs and pagination clues 2026-02-03 18:11:35 -08:00
Saurav Panda 5d7ff041d3 improved concatenation heuristic 2026-02-03 18:02:58 -08:00
Saurav Panda d210ba06a9 removed strip tags and added structure probe 2026-02-03 15:45:22 -08:00
Laith Weinberger f9c36f11a4 lint 2026-02-03 17:59:24 -05:00
Laith Weinberger 799e714c2b mitigate injection; don't drop overbudget pages
- restricted read_long_content file access to only paths in available_file_paths or browser_session.download_files to mitigate injection
- made PDF page selection truncate pages that exceed char budget instead of dropping them entirely
- fixed truncation hint in file_system.py to reference read_long_context instead of search_page
2026-02-03 17:42:02 -05:00
Saurav Panda 749fa56d1a improve text field handling 2026-02-03 12:52:56 -08:00
Saurav Panda 36e85ae85c added reuseable script id 2026-02-03 12:46:14 -08:00
Saurav Panda 14de7f5610 added empty partial detection and JS caching 2026-02-03 11:30:51 -08:00
Laith Weinberger 38fb5b12df Merge remote-tracking branch 'origin/main' into feat/smart-pdf-reading 2026-02-03 14:15:49 -05:00
Saurav Panda f7ccd2bf42 excluded the extract function 2026-02-02 23:20:03 -08:00
Saurav Panda f6b06275b0 strip unwanted attributes from html in JS code gen 2026-02-02 22:03:52 -08:00
Saurav Panda 855d726fbc JS Code gen for parsing 2026-02-02 16:53:39 -08:00
Saurav Panda b88e440b75 Merge branch 'main' into markdown-chunking-for-extraction 2026-02-02 16:10:00 -08:00
Saurav Panda defe37dd28 Improve multiact for agent 2026-02-02 12:50:03 -08:00
Saurav Panda 7c05e73bbf improve markdown splitting based on header 2026-02-02 12:37:28 -08:00
Saurav Panda e66eac8a37 Improve Markdown Chunker 2026-02-02 00:05:09 -08:00
Saurav Panda beefe832af Merge branch 'main' into schema-enforced-extraction-v2 2026-02-01 20:33:32 -08:00
Saurav Panda db832bcb83 added extraction schema 2026-02-01 20:26:50 -08:00
Saurav Panda ba68695d65 Merge branch 'main' into schema-enforced-extraction 2026-01-31 22:47:48 -08:00
Saurav Panda a27cc17f35 fix: optional enum fields default to None instead of empty string
Empty string is outside most enum value sets, so model_dump would
serialize an out-of-set value violating the schema. Use None with
a type union (same treatment as nested objects) since no in-set
default can be safely chosen.
2026-01-31 22:33:59 -08:00
Saurav Panda 357af489d4 Merge branch 'main' into fix-file-sanitization-issue 2026-01-31 21:27:43 -08:00
Saurav Panda d5f38a5eeb add grep tool to agent 2026-01-31 19:48:22 -08:00
Saurav Panda 69635e7745 fix: non-required fields no longer unconditionally nullable
Non-required fields were always unioned with None, allowing null values
even when the JSON Schema did not permit them. Now only explicitly
nullable fields accept null. Non-required primitives get type-appropriate
zero defaults (empty string, 0, 0.0, False), arrays get [], and nested
objects fall back to None only where constructing a default is infeasible.
2026-01-31 17:55:51 -08:00
Saurav Panda 7c4220845e fix: hide output_schema from JSON schema to fix Gemini INVALID_ARGUMENT
Gemini rejects OBJECT types with no properties in the response schema.
The output_schema field (dict | None) produced exactly that. Since this
field is only used programmatically, wrap it with SkipJsonSchema to
exclude it from the generated JSON schema while keeping it functional.
2026-01-31 17:45:44 -08:00
Saurav Panda 69004dda09 schema enforcement in extract tool 2026-01-31 17:41:42 -08:00
Saurav Panda 65fb1db7db Merge branch 'main' into fix-file-sanitization-issue 2026-01-31 16:17:47 -08:00
Laith Weinberger 7a1b76a5f0 bug fixes + lint 2026-01-31 19:03:23 -05:00
Laith Weinberger 556ecd93ab search_content and read_long_content actions for long webpages and files
Made read_file smarter for PDFs - instead of just reading the first 20 pgs, it reads up to 60k chars and uses IDF scoring to prioritize pgs w unique content
2026-01-31 18:50:44 -05:00
Laith Weinberger a81a493794 added optional file_name param to ss action
so it can return path if it needs; resolves 833 failures where agents tried write_file with .png and got rejected
2026-01-31 15:52:15 -05:00
Saurav Panda a4380060b9 improved filename sanitization 2026-01-31 11:14:11 -08:00
laithrw 372bf822c2 Merge branch 'main' into fix-write-file-issues 2026-01-30 21:51:27 -05:00
Saurav Panda 5524c986e5 Merge branch 'main' into fix/increase-max-memory-length 2026-01-30 16:35:13 -08:00
Saurav Panda 3d4dc6fe15 fixed aria hash pop up handling 2026-01-30 15:50:28 -08:00
Saurav Panda 6878bd1ca4 handle autocomplete fields 2026-01-30 11:04:00 -08:00
Magnus Müller 3ba50e68b0 Increase MAX_MEMORY_LENGTH from 1000 to 10000 chars
When evaluate or extract returns results longer than MAX_MEMORY_LENGTH,
the full data is placed in extracted_content (shown only once via
read_state) and long_term_memory gets a useless summary. This causes
the agent to lose access to the data in later steps and hallucinate
placeholder text like "JSON_STRING_FROM_STEP_6".

Increasing the threshold 10x means most real-world results will stay
in long_term_memory and persist across steps.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 00:27:55 -08:00
Magnus Müller e072135590 fix: add file validation for uploads and dynamic text extension list
- Add 0-byte file check in upload_file handler to catch empty files early
  with a clear error message instead of silently passing them to websites
- Add 0-byte file check in CDP upload watchdog before setFileInputFiles
  to prevent uploading empty files that cause cascading failures
- Replace hardcoded text extension list in read_file_structured() with
  dynamic derivation from _file_types, so new text-based file types
  are automatically supported for external file reading

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 00:25:36 -08:00
Magnus Müller a2fce46245 fix(filesystem): improve write_file filename handling and error messages
- Allow dots, spaces, and parentheses in filenames (e.g. report.v2.md, my file.csv)
- Auto-sanitize invalid filenames instead of rejecting them (spaces→hyphens, strip bad chars)
- Add specific error messages for binary extensions (.png, .jpg, etc.) to stop infinite retry loops
- Add specific error messages for unsupported extensions explaining which ones are valid
- Add .html and .xml as supported file types
- Improve write_file tool description with explicit filename rules and append behavior
- Add HtmlFile and XmlFile classes
- Add comprehensive tests for sanitization, new file types, and error messages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 00:04:26 -08:00
Laith Weinberger a75fa14d14 increase char limit for extraction 2026-01-23 16:38:38 -05:00
LarsenCundric dd8a63ce41 Improve placeholder handling for 2FA secrets in registry service 2026-01-16 17:05:50 -08:00
Magnus Müller c4b9710a84 Less priming for scroll 2026-01-10 18:33:17 -08:00