Commit Graph

1227 Commits

Author SHA1 Message Date
can1357 baf8a1df7e feat(coding-agent/web): expanded web search and fetching providers
- Expanded web search and fetching providers with robust parsing, authentication storage integration, and response validation.
- Added support for new configurations including SearXNG safesearch, Cloudflare AI Gateway endpoints, and dynamic Firecrawl base URLs.
- Implemented comprehensive test suites covering error handling, content filtering, and provider-specific response behaviors.
2026-08-10 11:06:22 +02:00
roboomp 5b3bed18b5 fix(launch): accepted empty daemon regex matches
Preserved zero-width readiness and wait matches across the daemon wire protocol, and isolated malformed completion events from unrelated pending RPCs.

Fixes #7908
2026-08-07 23:38:25 +02:00
can1357 8b9579c06a fix(bash): preserve escaped newline semantics 2026-08-07 13:39:54 +02:00
can1357 50741716b8 Merge PR #7888: fix(bash): constrain leading cd extraction to a single path token (@roboomp) 2026-08-07 13:39:54 +02:00
can1357 73b91d89d4 Merge PR #7816: fix(coding-agent/tools): preserve native JSON Schema containers (@kimprap) 2026-08-07 13:39:52 +02:00
can1357 b50b05ee39 Merge PR #7790: fix(read): normalize recovery paths (@roboomp) 2026-08-07 13:39:52 +02:00
roboomp 2597244b00 fix(bash): constrain leading cd extraction to a single path token
The `cd <path> && ...` extractor matched everything up to the first `&&`
with a greedy regex, so a redirect or extra argument before the `&&` was
swallowed into the structured cwd. `cd /tmp 2>/dev/null && echo ok` became
cwd `/tmp 2>/dev/null`, which failed fs.stat and killed the command before
the shell ran.

Replace the regex with `extractLeadingCdTarget`, a quote/escape-aware
scanner in shell-tokenize.ts that captures exactly one path token and
bails (leaving the command for the shell) when anything else — a redirect,
extra argument, shell expansion, or a non-`&&` separator — precedes the
top-level `&&`.

Fixes #7883
2026-08-07 06:43:55 +00:00
kimp cde7f7f30b chore: merge upstream main into strict schema fix 2026-08-07 00:17:51 +07:00
kimp 7dcfd9422a fix(coding-agent/tools): deduplicate JTD primitive detection 2026-08-07 00:17:38 +07:00
kimp 103791f14b fix(coding-agent/tools): preserve native JSON Schema containers 2026-08-06 15:50:22 +07:00
roboomp bfd1e64bf6 fix(read): normalized recovery paths
Used the resolved cwd-relative path in summary recovery selectors, PDF image handles, and notebook diagnostics.

Fixes #7788
2026-08-06 03:40:10 +00:00
can1357 fa8922b40c Merge PR #7667: fix(web-search): keep GPT-5.6 hosted tools top-level (@roboomp) 2026-08-05 21:50:25 +02:00
can1357 f37b06eb3b Merge PR #7680: fix(coding-agent): stringify Bash preview env values (@GratefulDave) 2026-08-05 21:50:24 +02:00
can1357 e6ebfd4d49 Merge PR #7705: fix(coding-agent): validate Linux browser executables before launch (@metaphorics) 2026-08-05 21:50:24 +02:00
can1357 e9888367d1 refactor: migrated packages to internal utility modules and removed external dependencies
- Implemented in-house, zero-dependency utility modules in `pi-utils` covering DOM manipulation, markdown parsing, templating, browser automation helpers, and terminal buffers.
- Migrated packages across the repository to consume the new internal utilities and `omptype` schema validators instead of external dependencies.
- Removed multiple external runtime and development dependencies including Zod, Marked, LRU cache, Turndown, and Puppeteer browser packages.
2026-08-05 13:39:09 +02:00
metaphorics e1a7c17c2b fix(coding-agent): bound browser version probes 2026-08-05 11:10:20 +00:00
metaphorics ecb22957cf fix(coding-agent): validate Linux browser executables 2026-08-05 10:50:31 +00:00
brymko 271e621a02 test(coding-agent): synchronized browser rejection checks
Waited for the observable warning event instead of assuming late continuations settle within a fixed wall-clock delay under CI load.
2026-08-05 17:47:03 +08:00
brymko fe086df7bf fix(coding-agent): aborted browser runs before draining
Closed worker and cmux run signals before yielding for floating-rejection drainage. Stale promise continuations can no longer begin page navigation after evaluated code returns.
2026-08-05 16:45:36 +08:00
brymko a51b69ee85 fix(coding-agent): kept unrelated worker failures fatal
Classified only marked browser failures and evaluated-run stack frames as run-owned rejections. Unrelated tab-worker failures now remain on the worker guard's fatal path.
2026-08-05 16:44:41 +08:00
brymko 5c0187dec5 fix(coding-agent): isolated promise combinator tracking
Used a run-scoped Promise subclass instead of mutating native combinator methods. Evaluated code can now freeze its Promise constructor without breaking cleanup or later browser runs.
2026-08-05 16:43:00 +08:00
brymko af35be1105 fix(coding-agent): tracked browser promise combinators
Observed Promise.all and Promise.race results derived from browser calls during each evaluated run. User catch continuations that rethrow browser failures now fail the owning run without changing native await behavior.
2026-08-05 16:43:00 +08:00
brymko bb5d64557d fix(coding-agent): preserved late browser rejections
Logged late user continuation failures in cmux runs and delayed worker rejection folding until request-interception cleanup completed. This closes both windows where missing awaits could be silently dropped.
2026-08-05 15:46:38 +08:00
brymko dd0b7b3176 fix(coding-agent): reported late browser continuations
Logged user continuation rejections that settle after their browser run has ended. This preserves the completed result while making missing awaits visible instead of silently dropping them.
2026-08-05 15:46:38 +08:00
brymko 71c26e5958 fix(coding-agent): reported rethrown browser continuations
Tracked whether user continuation callbacks create each descendant rejection. Browser errors that user code rethrows now fail the owning run instead of being contained as propagated helper failures.
2026-08-05 15:45:17 +08:00
brymko 2fd469de75 fix(coding-agent): corrected browser rejection containment
Scoped browser-error markers to each run and contained only propagated browser failures. Routed floated user continuations into failed runs and added worker coverage for native await plus every continuation method.
2026-08-05 15:45:17 +08:00
David Andrews dff7f8271a fix(coding-agent): stringify preview env values
(cherry picked from commit 2d852c0632116f227b772dbbb646169971bd9398)
2026-08-05 03:07:27 -04:00
brymko 364e13c49e fix(coding-agent): contained browser timeout rejections
Observed every browser facade continuation so fire-and-forget helper
timeouts cannot wedge or kill a tab worker. Preserved native Promise
identity for callers and test matchers.
2026-08-05 14:31:03 +08:00
roboomp 22d02031d9 fix(web-search): kept GPT-5.6 hosted tools top-level
Codex Responses-Lite moves web_search into additional_tools, which the hosted backend ignores. Keep the classic top-level tools contract for all dedicated Codex web searches and cover GPT-5.6 request shape.

Fixes #7666
2026-08-05 02:02:35 +00:00
can1357 b361bbde20 chore(changelog): normalized unreleased entries 2026-08-05 02:56:52 +02:00
can1357 e9c5bc9130 fix(browser): preserve Chromium detection precedence
(cherry picked from commit 028c4d3588879306ab208a1e0b5c913a1004651f)
2026-08-05 02:40:45 +02:00
can1357 b2fe308ecf Merge PR #7515: feat(browser): auto-detect Ungoogled Chromium on Linux (@Mustaqeem66)
# Conflicts:
#	packages/coding-agent/test/tools/browser-launch.test.ts
2026-08-05 02:40:28 +02:00
can1357 6c84b152ad Merge PR #7663: fix(lsp): normalize published diagnostic URI keys (@roboomp) 2026-08-05 02:32:34 +02:00
roboomp 8b120cecc5 fix(lsp): normalized published diagnostic uri keys
Canonicalized file URI keys at the diagnostics map boundary so server and client spellings match across percent encoding and Windows casing.

Added regression coverage for equivalent percent-encoded URIs and the marksman Windows drive-letter form.

Fixes #7662
2026-08-04 23:53:08 +00:00
can1357 130d3318c8 test(coding-agent): update observer registry stubs 2026-08-05 01:11:59 +02:00
can1357 b0984cd25c Merge PR #7598: fix(coding-agent): split semicolon path lists that trip ENAMETOOLONG (@roboomp) 2026-08-05 01:11:59 +02:00
can1357 abc628b63c fix(read): expose artifact source line totals 2026-08-05 01:11:59 +02:00
can1357 a0f203bfd4 Merge PR #7592: fix(cursor): correct inline read range metadata (@roboomp) 2026-08-05 01:11:58 +02:00
can1357 4da44c5492 Merge PR #7604: fix(browser): honor explicit Chromium executable override (@roboomp) 2026-08-05 01:11:57 +02:00
can1357 ca71858545 Merge PR #7497: fix(tool): exempt piped-stdin stages from bash interceptor (@roboomp) 2026-08-05 01:11:55 +02:00
roboomp 62cb7a0e62 fix(browser): honored explicit Chromium executable override
Selected PUPPETEER_EXECUTABLE_PATH before probing system browser installations so compatible headless-shell binaries remain usable by the shared daemon.

Added an isolated Windows candidate-selection regression probe.

Fixes #7601
2026-08-04 06:37:29 +00:00
roboomp 262ce960fc fix(coding-agent): split semicolon path lists that trip ENAMETOOLONG
The grep/glob multipath detector probed the raw joined string with lstat
and only split when the probe reported "missing" (ENOENT/ENOTDIR).
ENAMETOOLONG was classified as "unknown", which suppressed the split, so
a semicolon-delimited path list long enough to exceed NAME_MAX or
PATH_MAX collapsed to one literal path and failed with
"Path not found: <whole list>" even though every entry existed.

Classify ENAMETOOLONG as "missing" in probeLiteralPathExists and
delimitedPathPartResolves (a too-long string can never name a real
single entry), and broaden glob's stat catch so the raw errno never
reaches the caller.

Fixes #7597
2026-08-04 06:07:42 +00:00
roboomp 9be8d797fc fix(cursor): corrected inline read range metadata
Detected path-embedded OMP line selectors when reporting Cursor read results and stopped treating ranged payload lengths as whole-file totals.

Exposed exact source line counts from EOF-reaching read results and covered both the wire response and read metadata contracts.

Fixes #7590
2026-08-04 04:13:35 +00:00
roboomp 98a65ffbdf fix(coding-agent): blocked escaped reinterpreted payloads
- Preserved escaped control characters for the downstream reinterpretation safety decision.
- Covered the backslash-escaped git inline shell-alias bypass.

Fixes #7552
2026-08-03 21:18:35 +00:00
roboomp b621a9a637 fix(coding-agent): flagged double-quoted reinterpreted payloads
- Treated double-quoted shell-control chars like single-quoted ones so a -c/-e reinterpretation option still gates them.
- Covered the double-quoted git inline shell-alias bypass.

Fixes #7552
2026-08-03 21:13:13 +00:00
roboomp 9bcd31fcd2 fix(coding-agent): blocked reinterpreted quoted shell payloads
- Kept quoted shell controls prompt-gated when code-evaluation options can reinterpret the argument.
- Covered the reported git inline shell-alias bypass while retaining Cargo regex approval.

Fixes #7552
2026-08-03 21:08:52 +00:00
roboomp 54b2e38564 fix(coding-agent): allowed quoted bash pattern metacharacters
- Replaced the raw character guard with quote-aware scanning while retaining command substitution and unquoted shell-control protections.
- Added regression coverage for the reported Cargo benchmark filter.

Fixes #7552
2026-08-03 20:54:41 +00:00
can1357 bc39ffa265 feat: introduced omptype validation package and migrated workspace dependencies
- Introduce `@oh-my-pi/omptype` as a new ArkType-compatible schema validation package featuring a lazy JIT runtime, JSON Schema emission, and compatibility adapters.
- Replace `arktype` across workspace packages and test utilities with `@oh-my-pi/omptype`.
- Add benchmark suites, tests, and documentation for the new validation engine and adapters.
- Update workspace build, test runner, and release configurations to include the new package.
2026-08-03 21:56:48 +02:00
Muhammad Mustaqeem cc66b1d742 feat(browser): detect Ungoogled Chromium on Linux
Add the executable names and absolute paths that are unique to Ungoogled
Chromium to the Linux branch of systemChromiumCandidates(), including the
system-wide and per-user Flatpak shims for
io.github.ungoogled_software.ungoogled_chromium.

The entries are appended after the existing ones, so a stock Chrome or
Chromium install still wins and PUPPETEER_EXECUTABLE_PATH keeps working
exactly as before.

Closes #7509
2026-08-03 20:06:18 +05:00
can1357 6a44844c57 Merge PR #7377: fix(hub): wake owners when supervised processes exit (@paralin) 2026-08-03 15:12:03 +02:00