Commit Graph

10228 Commits

Author SHA1 Message Date
can1357 4b2e4085e0 feat(robomp): improved authorization and login normalization
- Implemented case-insensitive normalization for bot logins to handle mention handles and `[bot]` suffixes consistently.
- Added support for `ROBOMP_MAINTAINER_LOGINS` to allow authorized non-owner users to execute implementations.
- Refined authorization logic to distinguish between personal repository owners and organizational accounts.
- Updated documentation and added comprehensive tests to verify authorization handling across tasks, workers, and directive processing.
2026-06-21 19:14:13 +02:00
can1357 4b9f7cd8fa feat(python/robomp): allowed personal repository owners to authorize implementations
- Updated configuration to strip the '@' prefix from bot login names.
- Granted personal repository owners authorization to trigger implementations regardless of their GitHub author association.
2026-06-21 19:05:31 +02:00
can1357 5a99705797 feat(python/robomp): added authorizes_impl support to task directive processing
- Included authorizes_impl field when attaching threads to directives.
- Added a test case to ensure the author authorization flag is preserved during directive hydration.
2026-06-21 18:51:24 +02:00
can1357 7962a39f86 chore: bump version to 16.1.11 2026-06-21 18:34:15 +02:00
can1357 816f4d060d chore: update changelogs 2026-06-21 18:33:57 +02:00
can1357 266723a870 Merge remote-tracking branch 'origin/farm/fb97f79d/fix-prompt-template-optimistic-render' 2026-06-21 18:31:42 +02:00
can1357 5043c182ca Merge remote-tracking branch 'origin/farm/5c02bc51/fix-pi-tool-action-parameter' 2026-06-21 18:31:19 +02:00
can1357 838b5162bc feat(coding-agent): standardized html export styling with brand palette
- Introduced `web-palette.ts` to implement the collab-web pink/purple brand identity for HTML exports.
- Updated `generateThemeVars` to support a `palette` option, allowing users to choose between the brand-web aesthetic and a specific TUI theme.
- Configured public exports and the share-viewer script to default to the brand-web palette rather than inheriting the user's terminal theme.
- Refactored `AgentSession.exportToHtml` to align with the new branding defaults while allowing for per-export theme overrides.
- Adjusted `dark.json` background values to ensure better visual consistency across internal surfaces.
2026-06-21 18:31:03 +02:00
roboomp b0148531b6 style: bun run fix 2026-06-21 16:24:05 +00:00
roboomp f34433112f fix(ai): sanitized responses image history replay
Trimmed stored image_generation_call output items before replaying OpenAI Responses native history so provider-only fields like action no longer leak into the next input array.

Added a regression test covering the proxy-rejected replay shape.

Fixes #3201
2026-06-21 16:23:56 +00:00
can1357 1cb433cbde feat(coding-agent): added browser navigation helpers and improved timeout management
- Implemented `waitForSelector` and `waitForNavigation` methods in the browser tool API.
- Introduced per-operation fail-fast budget management with dynamic timeout clamping.
- Added validation for selector engines to reject unsupported Playwright-only platform features.
- Standardized error handling to provide descriptive, named timeouts for stalled browser operations.
2026-06-21 18:10:10 +02:00
can1357 2e6e0ea3b3 fix(coding-agent): prevented WebP encoding for Codex-bound images
- Updated model detection to exclude WebP format for Codex-based providers, which do not support it.
- Forced the image resize pipeline to encode to PNG or JPEG for incompatible models to resolve transmission errors.
- Added test coverage to verify that WebP images are re-encoded when using the Codex Responses backend.
2026-06-21 18:00:18 +02:00
can1357 ac2bb6a268 feat(catalog/compat): added extended idle timeouts for Xiaomi MiMo Pro
- Added extended idle timeouts for Xiaomi MiMo Pro and Alibaba Coding Plan models.
- Updated the stream timeout logic to support these providers, preventing premature stream termination due to long pre-event stalls.

Fixes #1770
2026-06-21 17:58:03 +02:00
can1357 f29822bb4d fix(utils): forwarded timeout option to fetch calls
- Included the timeout option in the initialization object when prepareInit is absent.
- Ensured that custom timeout settings are preserved for long-running streams instead of being silently dropped.

Fixes #2422
2026-06-21 17:57:26 +02:00
roboomp 1c22d32640 test(tui): restored event-controller optimistic stubs
Added clearOptimisticUserMessage and replaceOptimisticUserMessage stubs to the EventController message_start test double so the optimistic-submission case no longer throws when the controller reconciles the signature.

Fixes #3199
2026-06-21 15:49:58 +00:00
roboomp a57f9d083d fix(tui): preserved local queued message reconciliation
Skipped optimistic replacement when a user message_start matches another recorded local submission, preserving the pending prompt bubble until its own expanded event arrives.

Added coverage for the queued-message drain race between startPendingSubmission and prompt dispatch.

Fixes #3199
2026-06-21 15:43:01 +00:00
roboomp b345b3aa57 fix(tui): refreshed optimistic replay handles
Updated optimistic replay to track the replacement component handles created during transcript rebuilds, so expanded slash prompts still replace the raw replayed message.

Extended the regression test to cover the rebuild window called out in review.

Fixes #3199
2026-06-21 15:37:04 +00:00
roboomp 01f31a6238 fix(tui): replaced raw optimistic slash prompts
Replaced raw optimistic slash-command transcript entries with the canonical user message emitted by AgentSession when prompt expansion changes the text.

Added coverage for prompt-template expansion reconciliation so the transcript keeps one expanded user message.

Fixes #3199
2026-06-21 15:31:52 +00:00
can1357 f353ae0067 chore: biome format after PR integration 2026-06-21 17:20:22 +02:00
can1357 4f5ee4dc5e chore(changelog): normalize [Unreleased] after PR integration 2026-06-21 17:19:12 +02:00
can1357 e43d01a684 Merge PR #1794: fix(coding-agent): mark forked sessions in resume picker (@roboomp)
# Conflicts:
#	packages/coding-agent/src/modes/components/session-selector.ts
2026-06-21 17:18:16 +02:00
can1357 1936705df8 Merge PR #1956: fix(coding-agent): render extension sendMessage(display:true) once during session_start (@roboomp) 2026-06-21 17:16:27 +02:00
can1357 0ca62f1b8b Merge PR #1865: fix(session): keep auto thinking mode active across session resume (@msimon) 2026-06-21 17:09:50 +02:00
can1357 5c9fe0bfa0 Merge PR #2134: fix(coding-agent): submit /agents create form and hook editor on Ctrl+Q (@roboomp) 2026-06-21 17:06:15 +02:00
can1357 e8b60408b2 Merge PR #1939: fix(coding-agent): guard Git-mutating automation in pure jj workspaces (@roboomp)
# Conflicts:
#	packages/coding-agent/src/task/worktree.ts
#	packages/coding-agent/test/task/worktree.test.ts
2026-06-21 17:05:15 +02:00
can1357 ae051a6a33 Merge PR #1807: fix(hindsight): drop punctuation-only assistant turns before retain (@roboomp)
# Conflicts:
#	packages/coding-agent/src/hindsight/transcript.ts
2026-06-21 17:01:47 +02:00
can1357 24b8f3eaf3 chore(changelog): normalize [Unreleased] after PR integration 2026-06-21 16:32:25 +02:00
can1357 a796c22101 Merge PR #2244: fix: route edit/patch/replace writes through ACP client bridge (@Mokto)
# Conflicts:
#	packages/coding-agent/src/edit/modes/replace.ts
#	packages/coding-agent/src/tools/write.ts
2026-06-21 16:31:12 +02:00
can1357 8cab627e26 Merge PR #3166: fix(coding-agent): force-activate write tool while plan mode is live (@roboomp) 2026-06-21 16:28:19 +02:00
can1357 ac192587a6 Merge PR #3182: fix(mcp): normalize OpenCode MCP command arrays (@roboomp) 2026-06-21 16:28:19 +02:00
can1357 310f2a9ce9 Merge PR #3190: fix(coding-agent): honor explicit local providers.tinyModel (@roboomp) 2026-06-21 16:28:19 +02:00
can1357 5751806b17 Merge PR #3195: fix(coding-agent): show xhigh in model picker (@roboomp) 2026-06-21 16:28:19 +02:00
can1357 4bd4db3e26 Merge PR #3186: fix(catalog/umans): treated supports_vision sentinels as text-only (@roboomp) 2026-06-21 16:28:18 +02:00
can1357 eff54a6bfd Merge PR #3191: fix(google-gemini-cli): robust stream thought-leakage filter for gemini-3.5-flash (@cagedbird043) 2026-06-21 16:28:18 +02:00
roboomp b8743ed31f fix(coding-agent): showed xhigh in model picker
Rendered the XHigh thinking selector with the catalog vocabulary so OpenAI GPT-5.5 exposes low/medium/high/xhigh in /model.

Fixes #3194
2026-06-21 12:36:57 +00:00
cagedbird043 8fd0961f76 fix(google-gemini-cli): improve stream thought-leakage filter and add tests 2026-06-21 19:07:12 +08:00
roboomp 853e8abda4 fix(coding-agent): honored explicit local providers.tinyModel choice in title generation
When the user set `providers.tinyModel` to a local key, `generateSessionTitle`
still raced local against the online `smol` path with a 10 s timeout and
silently fired the online request whenever the local worker returned `null`
(unknown key, model not downloaded, transformers.js failure). The online path
resolves the `smol` role through `priority.json` (haiku → flash → mini → …);
with an `OPENROUTER_API_KEY` picked up from env, that silently billed
OpenRouter without consent.

Drop the race entirely for local choices: honor the user's setting, log a
warning on local failure, leave the session untitled. The `raceFirstNonNull`
helper and `TITLE_LOCAL_FALLBACK_DELAY_MS` had no other consumer and are
removed; the obsolete \"silently bills online when local fails\" tests are
flipped into regressions that lock the no-fallback contract, including the
unknown-key path (e.g. \"ollama:gpt-oss\") which previously also leaked
straight through to the online billing path.

Fixes #3187
2026-06-21 10:51:04 +00:00
roboomp 77b146518d style: bun run fix 2026-06-21 10:42:05 +00:00
roboomp 12ab84be91 fix(catalog/umans): dropped stale GLM cache rows
Upgraded installs can carry an Umans model cache written before the
GLM via-handoff catalog correction. If dynamic discovery is skipped or
fails, resolveProviderModels merges cache rows over the corrected static
catalog; mergeDynamicModel preserves image support when either side has
it, so a stale cached ["text", "image"] GLM row can re-add native image
support until the next successful refresh.

Add a provider-scoped cache drop hook for model ids whose cached rows
are unsafe across static fingerprint changes, opt Umans into it for
`umans-glm-5.1` and `umans-glm-5.2`, and cover the offline stale-cache
upgrade path with a regression test.

Fixes #3184
2026-06-21 10:41:58 +00:00
roboomp 565aba94bc fix(catalog/umans): treated supports_vision sentinels as text-only
`umans-glm-5.1` / `umans-glm-5.2` advertise themselves on the Umans
`models/info` endpoint with `supports_vision: "via-handoff"`. That
sentinel means image inputs are routed through a separate vision
handoff pre-analysis step; the GLM endpoint itself rejects raw image
blocks with `400 This model does not support image inputs`.

`umansSupportsVision` was returning `true` for any non-empty string,
so dynamic discovery mapped the GLM models to `input: ["text",
"image"]` and the agent sent images straight to GLM. The bundled
`umans-glm-5.1` / `umans-glm-5.2` rows in `models.json` carried the
same stale `["text","image"]` from a previous regen.

- Tighten `umansSupportsVision` to `value === true`; document the
  sentinel contract.
- Correct the two bundled rows to `input: ["text"]` so the vision
  handoff path runs.
- Add resolver- and bundle-level regression tests that cover
  `supports_vision: "via-handoff"` alongside the native-vision
  `umans-coder` case.

Fixes #3184
2026-06-21 10:32:53 +00:00
roboomp c531117869 fix(mcp): normalized opencode command arrays
Mapped OpenCode MCP array commands to stdio command plus args and accepted environment as the provider-native env key.\n\nAdded regression coverage for array command normalization, environment mapping, env fallback, and empty args omission.\n\nFixes #3180
2026-06-21 09:23:54 +00:00
can1357 35508c48f7 chore: bump version to 16.1.10 2026-06-21 08:40:20 +02:00
can1357 076fd0de81 test(coding-agent): realign discovery and TTSR fixtures with current tool invariants
- sdk-mcp-discovery: `find` became an essential tool (2eef88978), so it can no longer be hidden/rediscovered under `tools.discoveryMode: all`. Switch the discoverable-tool assertions to `search` (still `loadMode: discoverable`).
- agent-session-concurrent: the agent loop now drops tool calls that never reached `toolcall_end` from an aborted turn (0890b2be6, partial args are unsafe to replay). Emit `toolcall_end` before the TTSR rule-driven abort so the labeled placeholder result is minted.
2026-06-21 08:37:37 +02:00
can1357 a70f3f0614 fix(ai/providers): prevented cross-turn frame and tool result misattribution
- Implement ID-based guards for Codex WebSocket frames to reject stale or unauthorized interleaved frames from previous turns.
- Check sequence numbers within Codex responses to detect and handle out-of-order frame delivery.
- Restrict tool result consumption to occurrences appearing after the associated tool call, preventing the reuse of orphaned results from earlier conversation turns.
2026-06-21 08:30:37 +02:00
can1357 24cb2412a6 fix(tui): prevented streaming output loss under unstable barriers
- Fixed streaming output being lost from native scrollback when an unstable "barrier" block preceded it.
- Adjusted the engine commit logic to ensure all scrolled-off content reaches history, treating the `windowTop` as the persistent commit floor.
- Updated the committed-prefix logic to perform range-aware auditing, ensuring forced-overflow rows are accurately re-anchored rather than dropped upon barrier finalization.
2026-06-21 08:24:13 +02:00
can1357 5207a98fd8 refactor(coding-agent): simplified temporary model status message
- Inlined the temporary model status formatting logic directly into the controller.
- Removed the unused `formatTemporaryModelStatus` utility function and its associated test.
2026-06-21 07:42:46 +02:00
can1357 78f6586dd4 Merge remote-tracking branch 'origin/farm/09065be8/opencode-insufficient-balance' 2026-06-21 07:37:39 +02:00
can1357 67938f6bde Merge remote-tracking branch 'origin/farm/0e78447e/dashscope-rate-limit-auth' 2026-06-21 07:37:31 +02:00
can1357 26e9c1122b fix(tui): resolved stability regressions in committed prefix audits
- Refactored committed prefix auditing into distinct byte-stable, durable, and forced-overflow zones.
- Integrated a hard scan detector and refined boundary management to prevent data loss during commit-unstable barrier shifts.
- Implemented robust regression testing via the streaming-scrollback-defer harness to verify frame continuity.
- Updated audit logic to independently manage boundaries, ensuring forced-overflow rows remain correctly finalized.
2026-06-21 07:37:11 +02:00
can1357 c5cf47aa7f fix(coding-agent/utils): handled EISDIR and ENOTDIR errors during ref resolution
- Update `shouldRetry` to treat `EISDIR` and `ENOTDIR` as terminal errors, preventing unnecessary retries when encountering Git reference directory conflicts.
- Add a test suite to verify graceful resolution of branches in scenarios where a packed ref conflicts with a directory path in the filesystem.
2026-06-21 07:36:25 +02:00