Skip to content

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

Merged
waleedlatif1 merged 28 commits into
mainfrom
staging
Nov 14, 2026

Conversation

@waleedlatif1

@waleedlatif1 waleedlatif1 commented Nov 13, 2026 •

Copy link
Copy Markdown
Collaborator

waleedlatif1 and others added 21 commits November 13, 2026 00:52
…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
…9999)

* docs(library): update best-ai-agents-for-customer-support-automation

* Pi Babysit: address PR #9999 feedback

---------

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>
…ciliation-2026 (#10000)

* docs(library): update best-ai-agents-invoice-processing-finance-reconciliation-2026

* Pi Babysit: address PR #10000 feedback

---------

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
* 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
@vercel

vercel Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
docs Skipped Skipped Nov 14, 2026 12:16am UTC

Request Review

@github-actions github-actions Bot added the requires-mothership-merge Has a companion PR on the mothership/copilot side — merge in lockstep label Nov 13, 2026
@github-actions

Copy link
Copy Markdown

⚠️ Cross-repo companion check

One or more companion PRs aren't merged into main yet (aggregated across the feature PRs in this release). Merging this without them will leave copilot and sim out of sync — merge them in lockstep.

  • ⚠️ simstudioai/mothership#958 — merged into staging (this PR targets main) — feat(computer-use): batch 2-8 native actions planned from one snapshot
  • ⚠️ simstudioai/mothership#960 — merged into staging (this PR targets main) — fix(computer-use): say activateFirst runs before the sequence and narrow the bat

@waleedlatif1 waleedlatif1 changed the title v0.9.57: Computer Use batches 2-8 actions per call with a compact accessibility tree and click-to-focus, Monaco CRM integration, Hex and Stripe validation, keyless subjects held until trust policies apply, AWS Marketplace replica entitlement check, Slack channel search 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 Nov 13, 2026
@greptile-apps

greptile-apps Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[High impact] The PR reaches desktop automation, CRM and payment tools, and credential trust setup.

Fix the unchecked caret position in focusByClicking before merging.

Findings

  1. P1 Text lands in the middle ▶

Summary

This 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.

  • Desktop computer use runs several actions in one call.
  • Desktop computer use sees a shorter app tree and can focus editors safely.
  • Keyless credential setup keeps a subject available for later trust policies.
  • Workflows can read and update Monaco CRM records and outreach.
  • Hex and Stripe tools keep their inputs aligned with their APIs.
  • Slack search results name matching channels and clarify channel filters.
  • Knowledge tool logs explain rejected arguments and batched-read errors.
  • AWS Marketplace replicas check the container license entitlement.
  • Block mappers keep agent arguments and Google Drive page tokens.
  • Stripe webhook output includes connected-account and authentication-context fields.
  • The computer-use activity strip is removed from above the chat composer.
  • The AI agent library articles have refreshed comparisons and recommendations.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Type into an observed editor] --> B{Editor has focus?}
  B -- No --> C[Request Accessibility focus]
  C --> D{Focus still missing in foreground?}
  D -- Yes --> E[Click editor center]
  E --> F{Can read text and change selection?}
  F -- Yes --> G[Move caret to end]
  F -- No --> H[Return without moving caret]
  G --> I[Check focus and send text]
  H --> I
  B -- Yes --> I
Loading

Reviews (1) · Last reviewed commit: "fix(desktop-browser): refuse typing behi..." · Reviewed by Greptile

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread apps/sim/tools/hex/list_projects.ts Resolved
Comment thread apps/sim/tools/hex/list_projects.ts Resolved
Comment thread apps/sim/tools/hex/create_group.ts Resolved
Comment thread apps/sim/blocks/blocks/google_vault.ts Resolved
Comment thread apps/sim/blocks/blocks/hex.ts Resolved
Comment thread apps/sim/blocks/blocks/microsoft_ad.ts Resolved
Comment thread apps/sim/triggers/stripe/webhook.ts Resolved
…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
@waleedlatif1
waleedlatif1 merged commit 50dd74c into main Nov 14, 2026
87 of 89 checks passed

This branch was previously deployed

1 inactive deployment
Preview — 377e81bf Deployed Nov 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

requires-mothership-merge Has a companion PR on the mothership/copilot side — merge in lockstep

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant