Repository navigation
v0.9.57: cua improvements, Monaco CRM integration, Hex and Stripe validation, keyless subjects held until trust policies apply, AWS Marketplace replica entitlement check, Slack channel search - #10017
Conversation
…omposer (#9994) Stopping the chat response already cancels the native action, and Cmd+Shift+Esc still stops it; Settings keeps the in-progress action.
…ntitlement so every replica turns Enterprise on (#9996)
…one round trip per element (#9995) * improvement(computer-use): read each node's attributes in one Accessibility round trip Index observed elements by CFHash so membership and parent lookups stay linear, and query value settability only for text roles. * feat(computer-use): batch 2-8 actions planned from one snapshot Each step runs through its single action's checks; the batch stops at the first failure and after any step that changes the app's window structure, and returns one fresh observation. * test(computer-use): check the sheet batch's skipped step after dismissing the sheet * fix(computer-use): stop a batch on menu or sheet switches and before any step after Stop The structure guard compares on-screen window and focused-window child identities instead of counts, and every step checks cancellation first. Synced the contract, which now bounds batch progress to 2-8 steps.
…ccessibility tree shown to the model (#9997) * improvement(computer-use): fold empty layout groups and compact rows in the model's accessibility tree Wrapper groups with no text, state or action no longer spend the observation budget; their children point at the nearest shown ancestor. Rows drop the selected window id, JSON array syntax and fractional coordinates, and a one-line legend explains the format. * fix(computer-use): keep disabled layout groups in the model's accessibility tree * fix(computer-use): keep JSON-encoded action names so custom actions stay exact
…9998) Co-authored-by: Sim Pi Agent <pi@sim.ai>
* docs(library): update open-source-ai-agent-platforms * Pi Babysit: address PR #10001 feedback * Pi: # Task Fix repeated questions in ONE existing post: `apps/sim/conte... --------- Co-authored-by: Sim Pi Agent <pi@sim.ai>
* docs(library): update best-ai-agent-platforms-2026 * Pi Babysit: address PR #10002 feedback --------- Co-authored-by: Sim Pi Agent <pi@sim.ai>
…rguments carry (#10003) * improvement(search-mcp): log the field names a rejected tool call's arguments carry * improvement(search-mcp): say the logged-key cap applies per schema issue
…ot focus it (#10004) * fix(computer-use): click an editor into focus when Accessibility cannot focus it SwiftUI sheets such as Clock's city search ignore an Accessibility focus request, so type_text refused with 'the exact editor is no longer focused'. In a foreground app the helper now clicks the editor's center, only when that point hit-tests to the editor inside its observed window, then applies the usual focus checks. * docs(computer-use): describe the click-to-focus fallback * fix(computer-use): click only onto the editor or a text control inside it, and cover click-to-focus in the live fixture * test(computer-use): move focus away before checking the background click-to-focus refusal * fix(computer-use): check for Stop before the click-to-focus mouse-down * fix(computer-use): never click a secure field into focus
* fix(hex): keep stale list filters out of other operations, add documented run trigger and pagination fields
- get_project_runs no longer receives the List Projects status filter, and list
users/groups/collections/data connections drop a stored List Projects sort
field they reject (valid ones still pass)
- get_queried_tables gains after/before cursors via dedicated subBlocks, plus
after/before outputs
- list_groups gains the documented userId filter via a dedicated subBlock
- run status and project runs expose runTrigger; elapsedTime is milliseconds
- path ids go through safeUrlPathSegment
- correct documented limit ranges and the create_group createdAt output
* fix(stripe): stop unset Yes/No fields from changing Stripe objects, honor subscription item ids, guard path ids, add pagination
- Yes/No dropdowns (cancel_at_period_end, auto_advance, capture, active, prorate,
invoice_now, paid_out_of_band) gain a leading Default option that is never sent.
The UI seeded the first option ("Yes") as soon as advanced options were shown, so
merely opening them on Update Subscription scheduled a cancellation and on Pay
Invoice marked the invoice paid out of band. Stored 'true'/'false'/null map exactly
as before, and every key is now assigned so a raw '' cannot leak past the mapper.
- update_subscription sends items[i][id] (and deleted when true): Stripe adds a new
item when id is omitted, so changing a price created a duplicate billed item.
- All path ids go through safeUrlPathSegment, so an id cannot traverse to another
Stripe endpoint with the caller's key.
- create_price no longer sends unit_amount=0 for an empty field; create_subscription
no longer sends trial_period_days=0 for an empty field.
- starting_after/ending_before on every list tool and page/next_page on every search
tool, wired through new list_starting_after/list_ending_before/search_page subBlocks.
- Stripe trigger declares the documented account and context event fields.
* chore(docs): regenerate Hex and Stripe tool metadata and docs
* fix(hex,stripe): keep agent-supplied cursors and filters when the block maps dedicated fields
* fix(hex,stripe): type run projectVersion as a string, send zero item quantities, mark nullable event fields
* fix(hex): only fall back to raw run status and user id on agent calls
…rom dedicated fields (#10006) * fix(blocks): keep agent-supplied tool args that block mappers remap from dedicated fields * fix(blocks): gate every agent fallback on the call context, type the new mapper tests * chore(types): shrink test-types baseline for the fixed block tests
…iltered channel exists (#10007) * improvement(search): name matching Slack channels and say whether a filtered channel exists * chore(search): format the Slack channel tests * fix(search): say a filtered Slack channel is missing only after the whole lookup, and only when no result page remains
… Hex/Stripe validation code (#10014)
* feat(monaco): add Monaco CRM integration Adds 46 Monaco tools (contacts, accounts, opportunities, pipelines, tasks, meetings, messages, conversations, tags, users, field schemas, sequences, audiences, campaigns), a Monaco block, and a saved Monaco API key credential verified against GET /v1/me. * fix(monaco): use toRecordOrNull and type the block mapper test helpers * fix(monaco): allow clearing tags on update and reject empty audience filter groups at any depth
…cies applied later still match (#10011) * improvement(credentials): hold unsaved keyless subjects so trust policies applied later still match * fix(credentials): verify Databricks through the organization's egress, keep keyless reconnects on their mode, and harden held-subject renewal * test(credentials): save on the proof a renewal returns, and record the keyless-subject usage fence
…he staging audit (#10012) * fix(computer-use): tighten batch and click-to-focus edge cases from the staging audit Validate every batch step before the first runs and name a refused first step; observe the window a batch targets; wait 250 ms for Accessibility focus before clicking, treat a refused click as no click and put the caret at the end; never report nothing-dispatched after a click; skip per-attribute fallback reads on a hung app; guard a self-parent in the projection; fix legend and README wording. Syncs the contract's activateFirst wording. * fix(computer-use): check Stop before every batch step, validate click and scroll targets up front, and keep the escaped-newline row cost * fix(computer-use): send no text when the caret cannot be moved to the end after a focus click
…dal or when no sampled point lands (#10013) * fix(desktop-browser): refuse typing behind an unmarked full-screen modal or when no sampled point lands Top-page typing through a covering element now also refuses when the cover sits in a fixed layer spanning the viewport that does not hold the field, and when every sampled point hits nothing. The never-settling settle test now asserts the cap. * refactor(desktop-browser): compute the field's ancestors once, dedupe sampled hits, and time the settle cap from its first probe * test(desktop-browser): pass only the element to visible() from map * test(desktop-browser): drop a typing assertion that cannot fail and bound the settle cap from below * fix(desktop-browser): count a full-screen fixed layer as a modal only when it catches the pointer * fix(desktop-browser): detect an unmarked modal by probing the viewport for the layer that covers the field * fix(desktop-browser): treat an element painted above the field and under every viewport corner as a modal backdrop * test(desktop-browser): cover a field painted below its own full-screen container * test(desktop-browser): type the corner stacks as Element arrays
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
|
[High impact] The PR reaches desktop automation, CRM and payment tools, and credential trust setup. Fix the unchecked caret position in Findings
SummaryThis release adds Computer Use batches, a smaller Accessibility tree, and click-to-focus. It also adds Monaco CRM tools and updates credentials, billing, and search.
|
There was a problem hiding this comment.
All reported issues were addressed across 242 files
Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.
Turn on auto-fix | Re-trigger cubic
…nd report no hold for an unheld reconnect subject (#10021)
…searches and read channel names in any script (#10023)
…ry descriptions optional (#10022) * fix(hex): type the block projectVersion output as any and mark category descriptions optional * fix(hex): declare category description nullable
…nfirmed at the end (#10019) * fix(computer-use): type after a focus click only once the caret is confirmed at the end The click-to-focus fallback typed at the click point when the editor exposed no settable selection range or no string value, or when focus settled only after its poll. It now reads the editor's length (value or AXNumberOfCharacters), accepts an empty editor or a caret already at the end, verifies a caret move by reading the range back, and otherwise refuses with caret_unconfirmed before any keystroke. An input_sequence that starts with Cmd+A skips the check, since it replaces the value. * test(computer-use): cover the caret_unconfirmed refusal with an editor that ignores caret moves
Uh oh!
There was an error while loading. Please reload this page.