Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
860 commits
Select commit Hold shift + click to select a range
2e200d5
fix(docs): correct delivery headers and preview details (#9042)
waleedlatif1 Oct 14, 2026
6b0c69e
improvement(ci): track flaky checks daily and fix the live flakes (#9…
waleedlatif1 Oct 14, 2026
b958bfc
improvement(naming): rename sandbox-tasks to sandboxes and standardiz…
waleedlatif1 Oct 14, 2026
7589537
fix(docs): preserve negotiated response cache headers (#9043)
waleedlatif1 Oct 14, 2026
a754780
improvement(docs): standardize integration copy and generated referen…
waleedlatif1 Oct 14, 2026
bca7836
feat(project-files): add core storage and realtime operations (#9016)
mzxchandra Oct 14, 2026
16a7e9a
fix(resume): answer a sync v2 resume whose run fails with the failed …
waleedlatif1 Oct 14, 2026
afbd7b1
fix(knowledge): serialize chunk date tags on the internal chunk read …
waleedlatif1 Oct 14, 2026
811b10a
fix(uploads): sign transfers for in-process v2 callers that carry no …
waleedlatif1 Oct 14, 2026
3c3bbaa
fix(resume): retry automatic resumes after read deadlines and an unre…
waleedlatif1 Oct 14, 2026
9f9befd
fix(folders): run reorder lock checks on the reorder transaction (#9055)
waleedlatif1 Oct 14, 2026
7ab2eef
fix(api): map MCP reauth redirect, deleted-account visit, and task se…
waleedlatif1 Oct 14, 2026
39e3ad5
fix(appconfig): share the polled snapshot with Trigger.dev runs (#9053)
waleedlatif1 Oct 14, 2026
c6a00fc
fix(byok): preserve credential ownership on lookup failures (#9054)
icecrasher321 Oct 15, 2026
6c30b71
fix(logging): log expected outcomes below ERROR and acknowledge a los…
waleedlatif1 Oct 15, 2026
ce1612a
fix(mothership): surface actionable workbench file read failures (#9048)
waleedlatif1 Oct 15, 2026
93249e5
fix(projects): gate the Project list on the projects rollout flag (#9…
waleedlatif1 Oct 15, 2026
3ba393d
fix(file-doc): stop the permission resend loop and restore the 10 MB …
waleedlatif1 Oct 15, 2026
29158c6
fix(mothership): drop queued tab adds the server already removed (#9050)
waleedlatif1 Oct 15, 2026
4d4de52
fix(project-files): hold the Project and permission-group locks share…
waleedlatif1 Oct 15, 2026
219b292
feat(project-files): add rendered delivery and indexed search (#9017)
mzxchandra Oct 15, 2026
2916f4a
fix(contracts): drop unused project file search query exports (#9062)
waleedlatif1 Oct 15, 2026
e111f4f
feat(project-files): add cross-owner copy and bulk transfers (#9018)
mzxchandra Oct 15, 2026
e1451e9
fix(project-files): requeue rendered-artifact search after commit and…
waleedlatif1 Oct 15, 2026
f2d7826
fix(pii): load models only in workers and recycle them before memory …
waleedlatif1 Oct 15, 2026
5c7d838
chore(ci): tag production promotions with release-<sha> for rollback …
waleedlatif1 Oct 15, 2026
96ab45e
fix(files): restore workspace read-path behavior after rendered deliv…
waleedlatif1 Oct 15, 2026
02cd2f6
feat(project-files): add public sharing and protected delivery (#9019)
mzxchandra Oct 15, 2026
2e98120
fix(mothership): take over runs whose controller died and re-run thei…
waleedlatif1 Oct 15, 2026
21c4f73
improvement(api): publish an RFC 9727 API catalog and stop padding ta…
waleedlatif1 Oct 15, 2026
ce76f14
fix(chat): preserve panel resize gestures (#9065)
waleedlatif1 Oct 15, 2026
d3065fc
feat(library): Best AI Agents for Querying SQL Databases in Plain Eng…
icecrasher321 Oct 15, 2026
bbad1d1
feat(library): 6 Best AI Agent Options for Ecommerce Operations in 20…
icecrasher321 Oct 15, 2026
d48861a
feat(library): 5 Best Discord AI Bot Builders for Community Automatio…
icecrasher321 Oct 15, 2026
30631ad
feat(library): How Do You Build a WhatsApp AI Agent With Sim? (#9080)
icecrasher321 Oct 15, 2026
d6cd3a2
improvement(browser): accept observe on every page action (#9085)
waleedlatif1 Oct 15, 2026
e309463
improvement(changelog): expand release coverage and refine content st…
waleedlatif1 Oct 15, 2026
9411deb
fix(db): throttle autovacuum on the largest tables so vacuum WAL burs…
waleedlatif1 Oct 15, 2026
ae6d45b
fix(mothership): parse each checkpoint control request on its own and…
waleedlatif1 Oct 15, 2026
fda495d
fix(desktop): make computer use act on the app the user sees (#9084)
waleedlatif1 Oct 15, 2026
6a9a79d
improvement(seo): list the v2 API as a catalog item and answer markdo…
waleedlatif1 Oct 15, 2026
e79bd40
fix(mothership): stop live runs when their chat, owner or access is r…
waleedlatif1 Oct 15, 2026
44b824a
fix(mothership): bound every handed tool call by the deadline its fra…
waleedlatif1 Oct 15, 2026
c41323b
fix(billing): re-read the usage gate often once a payer nears its lim…
waleedlatif1 Oct 15, 2026
455c2bd
fix(mothership): start no tool call with less than a minute of its de…
waleedlatif1 Oct 16, 2026
debdd0e
fix(desktop): accept common computer calls and let input reach attach…
waleedlatif1 Oct 16, 2026
f4fd25e
fix(billing): answer an in-flight retry at once, and tell Chat what p…
waleedlatif1 Oct 16, 2026
7fa70e0
fix(content): keep stored provenance consistent (#9097)
icecrasher321 Oct 16, 2026
ee081a5
improvement(seo): lead comparison pages with a direct answer, re-veri…
waleedlatif1 Oct 16, 2026
f73b9db
feat(memory): authorize scoped note access and durable cleanup (#9096)
mzxchandra Oct 16, 2026
ce1f2f5
fix(desktop): count only UI-opening AX actions as delivered on timeou…
waleedlatif1 Oct 16, 2026
b3fa00b
fix(seo): answer Markdown OPTIONS on unknown paths and list every acc…
waleedlatif1 Oct 16, 2026
1469aa2
chore(mothership): sync the computer-use contract copies (#9105)
waleedlatif1 Oct 16, 2026
ebd8efb
fix(memory): read note access from an unlocked snapshot and defer una…
waleedlatif1 Oct 16, 2026
0c6c375
fix(mothership): serialize headless run admission with chat soft dele…
waleedlatif1 Oct 16, 2026
ecc3128
fix(mothership): hold desktop leases, the resume wait and first claim…
waleedlatif1 Oct 16, 2026
f3cb7a1
fix(media): bill a completed fal generation even when a Stop ends its…
waleedlatif1 Oct 16, 2026
e7076a9
fix(scim): push Stop for runs a directory sync ends, after its transa…
waleedlatif1 Oct 16, 2026
e25a6cf
fix(billing): release the reporting prefix lease once its prefix is s…
waleedlatif1 Oct 16, 2026
62f609b
fix(slack): refuse binding a Search bot to a different app or workspa…
waleedlatif1 Oct 16, 2026
88b4f45
fix(file-search): stop requeueing skipped artifacts, and fix public s…
waleedlatif1 Oct 16, 2026
0e0de65
improvement(search): lead an overflowing Jira all-terms match with is…
waleedlatif1 Oct 16, 2026
30fc8e3
fix(mothership): keep a started call's result after Stop, and let a b…
waleedlatif1 Oct 16, 2026
5eb0b33
fix(copilot): load workflow chat history through the windowed chat ro…
waleedlatif1 Oct 16, 2026
f67d024
improvement(search): fall back to Jira summaries holding half the ter…
waleedlatif1 Oct 16, 2026
9d39d7c
docs(library): update byok-multi-model-ai-agent-builder (#9116)
waleedlatif1 Oct 16, 2026
0899d63
docs(library): update n8n-alternatives (#9119)
waleedlatif1 Oct 16, 2026
bc9e138
docs(library): update langgraph-alternatives (#9118)
waleedlatif1 Oct 16, 2026
a53d92b
docs(library): update best-ai-agents-for-regulated-industry-workflows…
waleedlatif1 Oct 16, 2026
7d4a113
docs(library): update best-ai-agent-platforms-for-enterprise-teams-20…
waleedlatif1 Oct 16, 2026
28eaf54
fix(desktop): tighten computer use input guards for text, tabs, menus…
waleedlatif1 Oct 16, 2026
adbbe18
improvement(search): follow Jira summaries holding every term with th…
waleedlatif1 Oct 16, 2026
200b219
fix(desktop): let computer use type into date and time pickers (#9128)
waleedlatif1 Oct 16, 2026
28e91f7
fix(search): keep the Jira half-terms summary tier within the all-ter…
waleedlatif1 Oct 16, 2026
1e14cc0
feat(library): 6 Best CrewAI Alternatives in 2026 for Visual and Flex…
waleedlatif1 Oct 16, 2026
40e430c
feat(library): 6 Best Microsoft Copilot Studio and Power Automate Alt…
waleedlatif1 Oct 16, 2026
3d21e44
feat(library): How Do You Build an AI Agent That Remembers Context Ac…
waleedlatif1 Oct 16, 2026
5fa7d97
improvement(search): rank live results across sources by the query te…
waleedlatif1 Oct 16, 2026
ae6ac39
feat(library): How Do You Embed an AI Agent Inside Your SaaS Product?…
waleedlatif1 Oct 16, 2026
f542992
improvement(library): refresh license comparison and Zapier alternati…
waleedlatif1 Oct 16, 2026
854dc6a
fix(files): answer 499 instead of 500 when a client disconnects mid-s…
waleedlatif1 Oct 16, 2026
7561e0f
fix(trigger): complete async workflow runs whose failure is already r…
waleedlatif1 Oct 16, 2026
e5feb08
fix(execution): end runs quietly when their workspace is deleted mid-…
waleedlatif1 Oct 16, 2026
282524f
revert(search): restore the v0.9.23 Jira text search (#9148)
waleedlatif1 Oct 16, 2026
c3f2b30
fix(trigger): do not alert on runs whose workspace was deleted mid-ru…
waleedlatif1 Oct 16, 2026
84f41ea
fix(execution): stop in-flight workflow runs when an account is delet…
waleedlatif1 Oct 16, 2026
99ed5fb
feat(project-files): let Chat read and write Project files (#9034)
mzxchandra Oct 16, 2026
678c1a4
fix(account-deletion): durably purge a deleted account's storage with…
waleedlatif1 Oct 17, 2026
d44cee4
improvement(landing): serve the homepage as Markdown when clients ask…
waleedlatif1 Oct 17, 2026
f4daf59
fix(billing): stop account deletion from resetting the free allowance…
waleedlatif1 Oct 17, 2026
2af5443
chore(ci): remove the flaky-test issue workflow (#9156)
waleedlatif1 Oct 17, 2026
e16fd83
fix(search): count two-letter query terms when ranking across sources…
waleedlatif1 Oct 17, 2026
99b6de7
fix(account-deletion): resume the workspace storage sweep from its sa…
waleedlatif1 Oct 17, 2026
962786f
fix(chat): open and close Project file tabs by their owner (#9160)
waleedlatif1 Oct 17, 2026
96555d3
fix(chat): treat browser tab metadata as untrusted and bound attachme…
waleedlatif1 Oct 17, 2026
c5c1a1e
feat(data-drains): add Microsoft Sentinel ingestion (#9162)
waleedlatif1 Oct 17, 2026
b7394be
fix: release-review follow-ups for account removal (workflow-state re…
waleedlatif1 Oct 17, 2026
0a140b4
feat(oracle-fusion): add core financial business operations (#9165)
waleedlatif1 Oct 17, 2026
5f49cbf
feat(databricks): expand API coverage and preserve paginated results …
waleedlatif1 Oct 17, 2026
477028d
fix(chat): release-audit follow-ups for Project file tabs and sandbox…
waleedlatif1 Oct 17, 2026
c05168a
docs(library): update best-zapier-alternatives (#9170)
waleedlatif1 Oct 17, 2026
4e8919f
feat(library): 6 Best Make.com Alternatives for AI Agents in 2026 (#9…
waleedlatif1 Oct 17, 2026
c9527c5
feat(library): How Much Does It Cost to Build and Run an AI Agent? (#…
waleedlatif1 Oct 17, 2026
f40e321
feat(library): 6 Best Relevance AI Alternatives for Flexible AI Agent…
waleedlatif1 Oct 17, 2026
3dc0283
fix(credentials): reject managed OAuth kind mismatches before resolut…
waleedlatif1 Oct 17, 2026
ca43d9d
docs(library): update apache-2-0-vs-fair-code (#9174)
waleedlatif1 Oct 17, 2026
5848bd5
fix(databricks): preserve mutation intent and complete task outputs (…
waleedlatif1 Oct 17, 2026
2d0ac79
fix(salesforce): pin instance URL to Salesforce domains and guard upd…
waleedlatif1 Oct 17, 2026
f79d322
fix(auth): revoke sessions and OAuth grants on password reset (#9178)
waleedlatif1 Oct 17, 2026
2fe1e88
fix(executor): read files in Copilot-started runs and replay repeated…
waleedlatif1 Oct 17, 2026
3dcf9fb
fix(copilot): re-derive the turn's secret authority on the in-band to…
waleedlatif1 Oct 17, 2026
22a0333
fix(auth): end OAuth grants on SCIM address change and add sign out o…
waleedlatif1 Oct 17, 2026
d195710
fix(resume): require write access to resume a paused run on the legac…
waleedlatif1 Oct 17, 2026
9f7ca62
improvement(computer-use): roll out computer use per organization (#9…
waleedlatif1 Oct 17, 2026
760594b
fix(logs): remove the client log-persistence route that let a run's a…
waleedlatif1 Oct 17, 2026
93d2171
improvement(mcp): prepare the hosted MCP server for registry and plug…
waleedlatif1 Oct 17, 2026
af8284b
docs(library): update best-conversational-ai-platforms-crm-helpdesk (…
waleedlatif1 Oct 18, 2026
7be602f
docs(library): update ai-agent-examples-by-department-and-industry (#…
waleedlatif1 Oct 18, 2026
453b708
docs(library): update agentic-ai-coding-tools-what-they-are-and-how-t…
waleedlatif1 Oct 18, 2026
33c3063
feat(library): How Do AI Agents Use Tools and APIs? (#9190)
waleedlatif1 Oct 18, 2026
3aad201
feat(library): 6 Best AWS Bedrock Agents and Vertex AI Agent Builder …
waleedlatif1 Oct 18, 2026
4346f70
fix(providers): refuse an empty Responses input before sending instea…
waleedlatif1 Oct 18, 2026
246ff83
fix(streaming): stop writing workflow stream frames after the client …
waleedlatif1 Oct 18, 2026
bd8dd00
fix(account-deletion): list storage keys through the S3 client so Tri…
waleedlatif1 Oct 18, 2026
124a319
fix(mcp): route deferred transport requests under the client's outbou…
waleedlatif1 Oct 18, 2026
109bd82
fix(media): send ElevenLabs TTS text under the field fal requires (#9…
waleedlatif1 Oct 18, 2026
768141a
fix(copilot): read sandbox paths in files view and admit missing over…
waleedlatif1 Oct 18, 2026
c1c0843
improvement(landing): search-length titles, model comparison pages, a…
waleedlatif1 Oct 18, 2026
4c02fa1
fix(custom-tools): skip title conflicts when persisting inline tools …
waleedlatif1 Oct 18, 2026
8c30945
feat(cloudflare): expand API coverage and validate operations (#9194)
waleedlatif1 Oct 18, 2026
2d5b698
docs(library): update best-zapier-alternatives (#9201)
waleedlatif1 Oct 18, 2026
9ef474c
fix(memory): read memory records and their provenance in one statemen…
waleedlatif1 Oct 18, 2026
9cdc1bd
fix(landing): correct model version names, fit model page titles, and…
waleedlatif1 Oct 18, 2026
cc6e91f
feat(greenhouse): add versioned Harvest v3 integration (#9206)
waleedlatif1 Oct 18, 2026
282d952
improvement(db): name chat uploads in one indexed read and index work…
waleedlatif1 Oct 18, 2026
9f7b00d
fix(file): bind copied workspace files to their source by storage key…
waleedlatif1 Oct 18, 2026
da5d059
fix(api): answer upstream MCP, OAuth, and id-conflict failures with 4…
waleedlatif1 Oct 18, 2026
9324ef3
feat(excel): expand workbook operations and align Graph contracts (#9…
waleedlatif1 Oct 19, 2026
bd44d7b
fix(execution): classify SDK run aborts and refuse doomed provider an…
waleedlatif1 Oct 19, 2026
5187677
feat(zoho-desk): expand help desk operations (#9205)
waleedlatif1 Oct 19, 2026
9f8b03d
fix(greenhouse): align configured agent inputs with API parameters (#…
waleedlatif1 Oct 19, 2026
c0cf608
fix(billing): stop free-plan workflow runs at their usage limit mid-r…
waleedlatif1 Oct 19, 2026
799008b
feat(greenhouse): connect Harvest v3 with a customer-owned API creden…
waleedlatif1 Oct 19, 2026
781cedb
docs(library): update best-ai-agent-platforms-for-enterprise-teams-20…
waleedlatif1 Oct 19, 2026
82a4981
feat(library): LLMs vs AI Agents: What Is the Difference? (#9217)
waleedlatif1 Oct 19, 2026
1b74202
docs(library): update n8n-alternatives (#9219)
waleedlatif1 Oct 19, 2026
f874666
docs(library): update best-conversational-ai-platforms-crm-helpdesk (…
waleedlatif1 Oct 19, 2026
6bec12d
feat(library): How Do You Connect a Google Drive MCP Server to an AI …
waleedlatif1 Oct 19, 2026
1f0dd8a
fix(library): point cross-links at the renamed 15 Best Zapier Alterna…
waleedlatif1 Oct 19, 2026
63afac4
fix(cloudflare): require explicit R2 lifecycle replacement rules (#9225)
waleedlatif1 Oct 19, 2026
5c93e8f
improvement(async-jobs): warn when Trigger.dev run acceptance is slow…
waleedlatif1 Oct 19, 2026
91cb0b0
fix(execution): precheck the default video target and attribute 4xx r…
waleedlatif1 Oct 19, 2026
081759a
improvement(comparisons): noindex self-hosted marketing pages, link e…
waleedlatif1 Oct 19, 2026
324e400
chore(deps): audit and update dependencies, raise security override f…
waleedlatif1 Oct 19, 2026
72855bc
chore(mothership): drop unused worker contract copies (#9228)
waleedlatif1 Oct 19, 2026
4f26454
feat(library): Best Pipedream Alternatives in 2026 with Visual Builde…
waleedlatif1 Oct 19, 2026
064f10d
feat(library): Best Vellum Alternatives in 2026 for Non-Engineers (#9…
waleedlatif1 Oct 19, 2026
99675a3
feat(library): Best Langflow Alternatives in 2026 for Production AI W…
waleedlatif1 Oct 19, 2026
074148a
improvement(deps): shared Standard Webhooks verifier, MCP SDK 1.32.1,…
waleedlatif1 Oct 19, 2026
126ecae
fix(comparisons): Retool lists self-hosting on Enterprise only (#9235)
waleedlatif1 Oct 19, 2026
8c19812
feat(library): Best Flowise Alternatives in 2026 for Production AI Ag…
waleedlatif1 Oct 19, 2026
76aadfd
feat(library): Best Dust Alternatives in 2026 for AI Agent Workflows …
waleedlatif1 Oct 19, 2026
eb20d0d
feat(library): Best Retool Alternatives in 2026 for Building AI Agent…
waleedlatif1 Oct 19, 2026
9a72a84
fix(comparisons): stop recommending Flowise after its end of life and…
waleedlatif1 Oct 20, 2026
8b7afed
fix(credentials): declare service-account oauth policy on Snowflake, …
waleedlatif1 Oct 20, 2026
edbf408
feat(mothership): let an agent chat list its owner's other live chats…
waleedlatif1 Oct 20, 2026
0bf5d40
improvement(changelog): more relevant Search across sources (#9215)
waleedlatif1 Oct 20, 2026
22e7b18
improvement(search): return 30 previews by default for a Search MCP q…
waleedlatif1 Oct 20, 2026
8a3df57
docs(library): update apache-2-0-vs-fair-code (#9243)
waleedlatif1 Oct 20, 2026
7389124
docs(library): update can-ai-agents-talk-to-each-other-multi-agent-co…
waleedlatif1 Oct 20, 2026
3b3a5db
docs(library): update best-ai-agents-for-scheduling-and-calendar-mana…
waleedlatif1 Oct 20, 2026
acea972
docs(library): update byok-multi-model-ai-agent-builder (#9246)
waleedlatif1 Oct 20, 2026
583e0ea
fix(tls): distrust the roots behind the compromised eMudhra intermedi…
waleedlatif1 Oct 20, 2026
d904e17
chore(mothership): sync the Search assistant tool contract from mothe…
waleedlatif1 Oct 20, 2026
58b3485
fix(chat): keep previous messages stable when sending (#9249)
waleedlatif1 Oct 20, 2026
57cc81e
improvement(sim-cli): publish each command's path aliases and renamed…
waleedlatif1 Oct 20, 2026
4b3adfe
feat(helpscout): add Help Scout integration with OAuth and app creden…
waleedlatif1 Oct 20, 2026
4a8d7d3
improvement(mothership): show the worker's display copy for a turn er…
waleedlatif1 Oct 20, 2026
06d4334
docs(library): rework no-code AI agent builders roundup into the lean…
waleedlatif1 Oct 20, 2026
fcf8fab
improvement(library): merge near-duplicate posts into their stronger …
waleedlatif1 Oct 20, 2026
fa72023
docs(library): tighten n8n alternatives and fix its tool count (#9258)
waleedlatif1 Oct 20, 2026
fe4a403
docs(library): restructure open source AI agents guide around its hea…
waleedlatif1 Oct 20, 2026
e24a910
docs(library): rework Zapier alternatives into the lean roundup forma…
waleedlatif1 Oct 20, 2026
4bd6871
feat(helpscout): knowledge base connector, auto-registered triggers, …
waleedlatif1 Oct 21, 2026
4be882a
fix(mothership): keep integration discovery working when a tagged mcp…
waleedlatif1 Oct 21, 2026
72eef16
fix(tools): advertise json and any params without an object type, and…
waleedlatif1 Oct 21, 2026
463350c
feat(mothership): send workspace skill ids and descriptions in the ch…
waleedlatif1 Oct 21, 2026
f2b5823
feat(mothership): discover every workspace mcp server without tagging…
waleedlatif1 Oct 21, 2026
9c977fb
improvement(mothership): rank integration discovery by bm25 and conne…
waleedlatif1 Oct 21, 2026
36dc539
docs(library): correct vendor facts and Flowise status found in the l…
waleedlatif1 Oct 21, 2026
96ab7c8
fix(mothership): keep untagged mcp discovery side-effect free and the…
waleedlatif1 Oct 21, 2026
19f2475
fix(comparisons): lead Flowise copy with its end of life, qualify Ret…
waleedlatif1 Oct 21, 2026
c8e39fb
improvement(insights): clarify unassigned usage and refresh usage cha…
waleedlatif1 Oct 21, 2026
fd4323a
improvement(docs): refine screenshots, copy, and API interactions (#9…
waleedlatif1 Oct 21, 2026
daca837
fix(comparisons): Retool self-hosting is on every plan, not Enterpris…
waleedlatif1 Oct 21, 2026
f2ead22
fix(insights): keep paused calendars visible and chart scales finite …
waleedlatif1 Oct 21, 2026
6511ea4
fix(helpscout): require explicit tags to clear, validate custom field…
waleedlatif1 Oct 21, 2026
5d029a3
fix(mothership): bound best-effort mcp discovery and stop retrying a …
waleedlatif1 Oct 21, 2026
658ccc8
improvement(docs): simplify integration page headers (#9275)
waleedlatif1 Oct 21, 2026
f839cc2
fix(ci): reset a broken desktop-live dev cache from a passing job (#9…
waleedlatif1 Oct 21, 2026
daf2379
fix(gemini): send the lowest thinking level when thinking is 'none' o…
waleedlatif1 Oct 21, 2026
6819ce1
docs(library): update langgraph-alternatives (#9279)
waleedlatif1 Oct 21, 2026
7f21cd2
feat(library): 5 Best Claude Cowork Alternatives in 2026 for Shared a…
waleedlatif1 Oct 21, 2026
16fb6e5
feat(library): 6 Best Lindy Alternatives in 2026 for AI Agents and Au…
waleedlatif1 Oct 21, 2026
4e47da1
feat(library): 6 Best OpenClaw Alternatives for Teams in 2026 (#9281)
waleedlatif1 Oct 21, 2026
c287577
fix(deps): pin patched xmldom, axios, follow-redirects, qs, proxy-add…
waleedlatif1 Oct 21, 2026
3544f9f
feat(library): 6 Best Workato Alternatives for AI Agents in 2026 (#9282)
waleedlatif1 Oct 21, 2026
b1168ac
fix(mothership): keep display activity out of integration and mcp too…
waleedlatif1 Oct 21, 2026
71044e8
improvement(mothership): calmer activity header: wait wording until a…
waleedlatif1 Oct 21, 2026
5e4339f
improvement(docs): reduce navigation payload and build work (#9285)
waleedlatif1 Oct 21, 2026
20b9461
fix(mothership): let the agent copy files between workspaces without …
waleedlatif1 Oct 21, 2026
6e6243b
improvement(emails): refresh the platform update broadcast (#9291)
waleedlatif1 Oct 21, 2026
04f524c
feat(chat): recall sent messages from composer (#9289)
waleedlatif1 Oct 21, 2026
75f2960
fix(mothership): report a Copilot workflow tool whose paused run sett…
waleedlatif1 Oct 21, 2026
044805a
fix(mothership): report a paused Copilot workflow whose cancel lost t…
waleedlatif1 Oct 21, 2026
cb5027a
fix(chat): validate restored contexts against send schema (#9294)
waleedlatif1 Oct 21, 2026
b8be2f0
fix(docs): preserve clipboard activation and validate copied content …
waleedlatif1 Oct 21, 2026
6381473
fix(mothership): hold a tool call's display grouping beside its argum…
waleedlatif1 Oct 22, 2026
d38aac1
feat(library): OpenClaw vs Claude Cowork: Setup, Pricing, Security, a…
waleedlatif1 Oct 22, 2026
8df21ea
feat(library): CrewAI vs LangGraph vs AutoGen: Which Multi-Agent Fram…
waleedlatif1 Oct 22, 2026
6b67ca4
feat(library): LangChain vs LangGraph: What’s the Difference and Whic…
waleedlatif1 Oct 22, 2026
8924116
feat(library): n8n vs Zapier vs Make: Which Automation Platform Is Be…
waleedlatif1 Oct 22, 2026
eea2dcc
fix(library): correct facts in four new comparison posts (#9303)
waleedlatif1 Oct 22, 2026
003c352
improvement(ci): run affected suites and reuse production builds (#9297)
waleedlatif1 Oct 22, 2026
53f4e91
feat(ec2): add Amazon EC2 integration (#9304)
waleedlatif1 Oct 22, 2026
7992b56
fix(logs): keep trace secret projection from blocking the event loop …
waleedlatif1 Oct 22, 2026
93c71ad
fix(logs): skip workflow state on logs query trace reads (#9307)
waleedlatif1 Oct 22, 2026
d3da633
fix(executions): skip archive materialization on status polls that re…
waleedlatif1 Oct 22, 2026
8bf876f
fix(deps): update Next.js to 16.4.1, stop untrusted Office uploads re…
waleedlatif1 Oct 22, 2026
f81b7da
fix(logs): cap logs-list pages that carry execution data (#9309)
waleedlatif1 Oct 22, 2026
22864e9
fix(parsers): yield the event loop during PDF extraction and CSV row …
waleedlatif1 Oct 22, 2026
9f73c4a
fix(logs): yield to the event loop while exporting large trace rows (…
waleedlatif1 Oct 22, 2026
b26b436
ci: balance macOS Electron smoke shards by measured duration (#9315)
waleedlatif1 Oct 22, 2026
d0c10bb
improvement(file-parsers): parse spreadsheets on a worker thread (#9313)
waleedlatif1 Oct 22, 2026
8972b6b
improvement(executor): size payload compaction bottom-up instead of r…
waleedlatif1 Oct 22, 2026
0847b21
feat(monitoring): log event-loop lag, stalls, and in-flight route han…
waleedlatif1 Oct 22, 2026
053c933
fix(logs): mark withheld trace span content so logs query stops repor…
waleedlatif1 Oct 22, 2026
0d3dda9
fix(logs): treat a logs query path as withheld only when its content …
waleedlatif1 Oct 22, 2026
7fcfdf6
fix(telemetry): send browser events to the configured collector and k…
waleedlatif1 Oct 22, 2026
28e34a8
fix(executor): resume payload compaction on a fresh stack every 256 l…
waleedlatif1 Oct 22, 2026
0751de2
fix(ec2): describe the states each instance state-change tool actuall…
waleedlatif1 Oct 22, 2026
64992ca
fix(file-parsers): share the event-loop slice across PDF parses and y…
waleedlatif1 Oct 22, 2026
8e73220
docs(telemetry): describe the relay's disable gate and the anonymous …
waleedlatif1 Oct 22, 2026
972b92e
fix(ci): isolate desktop shard CLI regressions (#9324)
waleedlatif1 Oct 23, 2026
9a66fee
fix(tests): derive document grant expiry from one timestamp (#9325)
waleedlatif1 Oct 23, 2026
71bd22e
improvement(ci): balance integration jobs and retain documentation bu…
waleedlatif1 Oct 23, 2026
dd6efb0
improvement(insights): shorten the unassigned usage tooltip (#9330)
waleedlatif1 Oct 23, 2026
ff98c86
feat(knowledge): import knowledge base bundles through the API and `s…
waleedlatif1 Oct 23, 2026
bec4639
feat(mothership): run scheduled jobs as durable unattended chat turns…
waleedlatif1 Oct 23, 2026
de585d0
chore(dev): sync dev with staging
waleedlatif1 Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .agents/skills/add-block-preview/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ To pull an already-GA block from discovery surfaces on hosted (incident, depreca
- **Clone-not-remove:** gated blocks stay in `getAllBlocks()` output as clones with `hideFromToolbar: true` — `.find`-by-type consumers rely on this. Never filter them out.
- **Keys are registry block types.** Never `custom_block_*` (parse drops them — custom blocks have their own enabled/disabled lifecycle).
- **The shared hidden-predicate is `isHiddenUnder`** (`apps/sim/blocks/visibility/context.ts`). Never restate the preview/disabled rule inline at a new consumer.
- **Process-global caches stay ungated.** `getStaticComponentFiles` (VFS) and `getExposedIntegrationTools` build the ungated universe; per-viewer filtering happens at stamp/consumer time. Never move gating into a shared builder.
- **Process-global caches stay ungated.** Shared builders such as `getExposedIntegrationTools` (`apps/sim/lib/integrations/tool-catalog.ts`) build the ungated universe; per-viewer filtering happens at consumer time via `isHiddenUnder`. Never move gating into a shared builder.
- Gating is **surface hiding, not secrecy** — the full config ships in the client JS bundle. Anything truly secret cannot be a registered block.

## Tests
Expand Down
99 changes: 55 additions & 44 deletions .agents/skills/add-block/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ export const {ServiceName}Block: BlockConfig = {
docsLink: 'https://docs.sim.ai/integrations/{service}',
category: 'tools', // 'tools' | 'blocks' | 'triggers'
integrationType: IntegrationType.X, // Primary category (see IntegrationType enum)
tags: ['oauth', 'api'], // Cross-cutting tags (see IntegrationTag type)
bgColor: '#HEXCOLOR', // Brand color
icon: {ServiceName}Icon,

Expand Down Expand Up @@ -63,7 +62,7 @@ export const {ServiceName}Block: BlockConfig = {
},

inputs: {
// Optional: define expected inputs from other blocks
// Required: the params the block accepts, keyed by tool param / canonical id
},

outputs: {
Expand All @@ -74,7 +73,7 @@ export const {ServiceName}Block: BlockConfig = {

## SubBlock Types Reference

**Critical:** Every subblock `id` must be unique within the block. Duplicate IDs cause conflicts even with different conditions.
**Critical:** Give every subblock a unique `id`: duplicates collide silently (the last definition wins). `blocks.test.ts` fails a duplicate within one condition unless the copies are a basic/advanced mode-swap pair, one basic plus trigger-mode copies, or all carry `canonicalParamId`. The only sanctioned cross-condition reuse is the hosted-key `apiKey` pair (`add-hosted-key` skill), where both fields deliberately share one value.

### Text Inputs
```typescript
Expand Down Expand Up @@ -129,6 +128,7 @@ export const {ServiceName}Block: BlockConfig = {
id: 'credential',
title: 'Account',
type: 'oauth-input',
canonicalParamId: 'oauthCredential',
serviceId: '{service}', // Must match OAuth provider service key
requiredScopes: getScopesForService('{service}'), // Import from @/lib/oauth/utils
placeholder: 'Select account',
Expand Down Expand Up @@ -177,7 +177,7 @@ When adding or changing an OAuth integration block:
`packages/sim-setup/src/capability-config.ts`. The CLI catalog is exhaustively typed and checked
against the runtime field list; do not infer secrecy from the field name.
4. If the canonical OAuth service declares `serviceAccountProviderId`, run
`bun run deployment-config:generate`; this regenerates the provider-ID facts in
`bun run generate:deployment-config`; this regenerates the provider-ID facts in
`packages/deployment-config/src/service-account-providers.generated.ts`. Never hand-edit that
generated map. Add `deploymentRequirement` policy in
`packages/deployment-config/src/service-account-metadata.ts` only when the service-account path
Expand Down Expand Up @@ -310,7 +310,7 @@ When several fields are mutually exclusive alternatives, mark them all `required
other paths ever get a chance to supply the value.

**Constraints (block-wide):**
- `canonicalParamId` must not equal any subblock `id` in the block.
- `canonicalParamId` may equal only the `id` of a member of its own group, as `channel` does in the canonicalParamId Pattern below; it must never equal any other subblock's `id`. (`blocks.test.ts` enforces the case of a subblock with no `canonicalParamId`.)
- One canonical id links exactly one basic/advanced pair for one logical parameter. Groups are keyed by canonical id across every subblock and hold one `basicId`, so two operations that each need a pair need two canonical ids.
- All members of a group share the same `required` status.

Expand Down Expand Up @@ -350,7 +350,7 @@ sourceIds.forEach((id) => delete params[id]) // subblock ids are deleted
if (chosen !== undefined) params[group.canonicalId] = chosen
```

So by the time `tools.config.params(inputs)` runs (`executor/handlers/generic/generic-handler.ts`),
So by the time `tools.config.params(inputs)` runs (`executor/handlers/generic/handler.ts`),
`params.uploadFile` and `params.fileRef` are **gone** and the value is under `params.file`. Reading a
subblock id there yields `undefined` and silently sends no file.

Expand All @@ -359,7 +359,7 @@ and the first non-empty advanced value in advanced mode, so a stale value in the
never leak. `normalizeFileInput` then handles the JSON string that advanced-mode template resolution
produces.

Note that `generic-handler` merges rather than replaces (`{ ...inputs, ...transformedParams }`), so
Note that `generic/handler` merges rather than replaces (`{ ...inputs, ...transformedParams }`), so
omitting a key from the returned object does not strip it from what the tool receives. Tools simply
ignore params they do not declare.

Expand All @@ -370,8 +370,6 @@ Declare the **canonical** id with `type: 'json'` — the subblock ids never reac
```typescript
inputs: {
file: { type: 'json', description: 'File to upload (UserFile or reference)' },
// Legacy field for backwards compatibility
fileContent: { type: 'string', description: 'Legacy: base64 encoded content' },
}
```

Expand Down Expand Up @@ -500,6 +498,7 @@ Controls which UI view shows the field.
- `'advanced'` - Only in advanced view
- `'both'` - Both views (default if not specified)
- `'trigger'` - Only in trigger configuration
- `'trigger-advanced'` - The advanced side of a trigger field (a canonical pair member, or a standalone field under the block-level advanced toggle)

### canonicalParamId Pattern

Expand Down Expand Up @@ -563,6 +562,11 @@ Use `wandConfig` on fields that are hard to fill by hand — timestamps (`genera

## Tools Configuration

**Write operation ids and tool ids as string literals** in the `operation` dropdown `options` and
`tools.access`, never through constants (`id: SEARCH`, `access: [SEARCH]`). `scripts/generate-docs.ts`
reads them from source with regexes, so a constant parses as empty: the docs page loses its whole
Actions section and the integration catalog ships blank operation descriptions, with no check failing.

**Preferred:** Use tool names directly as dropdown option IDs to avoid switch cases:
```typescript
// Dropdown options use tool IDs directly
Expand Down Expand Up @@ -611,12 +615,12 @@ tools: {

## Outputs Definition

**IMPORTANT:** Block outputs have a simpler schema than tool outputs. Block outputs do NOT support:
Block outputs have a simpler schema than tool outputs. They do not support:
- `optional: true` - This is only for tool outputs
- `items` property - This is only for tool outputs with array types

Block outputs only support:
- `type` - The data type ('string', 'number', 'boolean', 'json', 'array')
- `type` - The data type ('string', 'number', 'boolean', 'json', 'array', 'file', 'file[]', 'any')
- `description` - Human readable description
- `condition` - Optional visibility condition
- `hiddenFromDisplay` - Optional flag to hide from the output display
Expand Down Expand Up @@ -679,7 +683,7 @@ export const ServiceV2Block: BlockConfig = {
access: ServiceBlock.tools?.access?.map(id => `${id}_v2`) || [],
config: {
tool: createVersionedToolSelector({
baseToolSelector: (params) => (ServiceBlock.tools?.config as any)?.tool(params),
baseToolSelector: (params) => ServiceBlock.tools.config?.tool(params) ?? 'service_default',
suffix: '_v2',
fallbackToolId: 'service_default_v2',
}),
Expand All @@ -697,7 +701,7 @@ export const ServiceV2Block: BlockConfig = {
Register the block in `apps/sim/blocks/registry-maps.ts` — add the import and an entry to each map alphabetically:

```typescript
import { ServiceBlock, ServiceBlockMeta } from '@/blocks/blocks/service'
import { ServiceBlock, ServiceBlockMeta } from '@/blocks/blocks/{service}'

export const BLOCK_REGISTRY: Record<string, BlockConfig> = {
// ... existing blocks ...
Expand Down Expand Up @@ -725,12 +729,24 @@ export const ServiceBlock: BlockConfig = {
longDescription: 'Full description for documentation...',
docsLink: 'https://docs.sim.ai/integrations/service',
category: 'tools',
integrationType: IntegrationType.DeveloperTools,
tags: ['oauth', 'api'],
integrationType: IntegrationType.DevOps,
bgColor: '#FF6B6B',
icon: ServiceIcon,
authMode: AuthMode.OAuth,

// Sentence rules: apps/sim/blocks/AGENTS.md → "Canvas sentences"
canvasPresentation: {
defaultTitle: 'Create Resource',
sentences: {
byOperation: {
create: [{ text: 'Create resource', field: 'name', core: true }],
read: [{ text: 'Read resource', field: 'resourceId', core: true }],
update: [{ text: 'Update resource', field: 'resourceId', core: true }],
delete: [{ text: 'Delete resource', field: 'resourceId', core: true }],
},
},
},

subBlocks: [
{
id: 'operation',
Expand All @@ -748,6 +764,7 @@ export const ServiceBlock: BlockConfig = {
id: 'credential',
title: 'Service Account',
type: 'oauth-input',
canonicalParamId: 'oauthCredential',
serviceId: 'service',
requiredScopes: getScopesForService('service'),
placeholder: 'Select account',
Expand Down Expand Up @@ -778,6 +795,13 @@ export const ServiceBlock: BlockConfig = {
},
},

inputs: {
operation: { type: 'string', description: 'Operation to perform' },
oauthCredential: { type: 'string', description: 'Service access token' },
resourceId: { type: 'string', description: 'Resource ID' },
name: { type: 'string', description: 'Resource name' },
},

outputs: {
id: { type: 'string', description: 'Resource ID' },
name: { type: 'string', description: 'Resource name' },
Expand Down Expand Up @@ -902,16 +926,16 @@ Every block declares a one-line prose summary that replaces its card's field row

```
Slack ← header (already names the block)
Posts ⟨Ship it 🚀⟩ to ⟨#eng⟩ ← the sentence; ⟨…⟩ are live value chips
Post ⟨Ship it 🚀⟩ to ⟨#eng⟩ ← the sentence; ⟨…⟩ are live value chips
```

Write one `byOperation` entry per operation dropdown option (or a single `default`
when the block has no operation dropdown).

**The full authoring contract — voice, structure, and the two mistakes that break
**The full authoring contract — voice, structure, and the four mistakes that break
cards silently — is `apps/sim/blocks/AGENTS.md` → "Canvas sentences". Read it
before writing any.** The two failures worth repeating here, because both are
invisible at runtime:
before writing any.** Two of those four are worth repeating here, because both
are invisible at runtime:

1. A clause naming only one member of a `canonicalParamId` pair drops the sentence
for every advanced-mode user. List all members:
Expand All @@ -935,32 +959,19 @@ Verify it with `bun run check:block-successors`.
Adding a block on its own needs no **tool metadata** regeneration — a block references existing
tool IDs through `tools.access` and does not change any tool's shape.

But if the same change also adds, edits **or removes** a tool, run `bun run tool-metadata:generate` and commit the result, or CI fails on stale artifacts. That matters here because a block's `outputs` are authored to match its tools' outputs, and the UI reads those from the generated metadata, not the executable registry — an unregenerated tool change makes the block's outputs disagree with what the panel renders. See `.agents/skills/tool-registry-boundary/SKILL.md`.

A visible integration block does require the generated integration catalog and docs to be refreshed.
After adding or changing one, run:

```bash
bun run scripts/generate-docs.ts
bun run deployment-config:generate
bun run integration-catalog:check
bun run deployment-config:check
bun run docs:check
```
But if the same change also adds, edits **or removes** a tool, run `bun run generate:tool-metadata` and commit the result, or CI fails on stale artifacts. That matters here because a block's `outputs` are authored to match its tools' outputs, and the UI reads those from the generated metadata, not the executable registry — an unregenerated tool change makes the block's outputs disagree with what the panel renders. See `.agents/skills/tool-registry-boundary/SKILL.md`.

The catalog check independently derives deployment metadata from the executable block registry and
compares it with the committed `packages/deployment-config/src/integrations.json`. The deployment
config check verifies the generated service-account facts against the canonical OAuth registry and
catalog. `docs:check` re-renders every generated docs artifact in memory and fails on any committed
file that differs — it runs in CI via `check:audits`, so commit the full generator output. If the
generator also trues up pages an earlier PR left stale, commit that catch-up too; reverting it as
"unrelated drift" makes `docs:check` fail. Review the generated diff and keep only intentional
changes.
A visible integration block does require the generated integration catalog and docs to be refreshed:
`bun run generate:tool-metadata` (only when a tool changed), `bun run scripts/generate-docs.ts`,
`bun run generate:deployment-config`, then `bun run check:audits`. Also run
`bun run apps/sim/scripts/check-block-registry.ts origin/staging` (CI runs it outside `check:audits`). Commit the
full generator output. For what each check verifies, see the `validate-integration` skill →
Regenerate Derived Artifacts.

## Checklist Before Finishing

- [ ] `integrationType` is set to the correct `IntegrationType` enum value
- [ ] `tags` array includes all applicable `IntegrationTag` values
- [ ] `{Service}BlockMeta.tags` lists every applicable `IntegrationTag` (tags live on the meta, not the block)
- [ ] All subBlocks have `id`, `title` (except switch), and `type`
- [ ] Conditions use correct syntax (field, value, not, and)
- [ ] DependsOn set for fields that need other values
Expand All @@ -975,10 +986,10 @@ changes.
- [ ] Outputs match tool outputs
- [ ] Block + meta registered in registry-maps.ts (`BLOCK_REGISTRY` / `BLOCK_META_REGISTRY`)
- [ ] If `sunset.replacedBy` changed: regenerated and committed the block successor map; `bun run check:block-successors` passes
- [ ] If any tool was added, changed or removed alongside the block: ran `bun run tool-metadata:generate` and committed the artifacts
- [ ] If any tool was added, changed or removed alongside the block: ran `bun run generate:tool-metadata` and committed the artifacts
- [ ] Ran `bun run scripts/generate-docs.ts`, reviewed the generated diff, and committed the integration catalog changes
- [ ] `bun run integration-catalog:check` passes
- [ ] `bun run docs:check` passes (CI gate — fails on any stale generated docs page)
- [ ] `bun run check:integration-catalog` passes
- [ ] `bun run check:docs` passes (CI gate — fails on any stale generated docs page)
- [ ] If icon missing: asked user to provide SVG
- [ ] If triggers exist: `triggers` config set, trigger subBlocks spread
- [ ] Optional/rarely-used fields set to `mode: 'advanced'`
Expand All @@ -996,7 +1007,7 @@ Validate the block against every tool in `tools.access`:
2. **For each tool, verify the block has correct:**
- SubBlock inputs that cover all required tool params (with correct `condition` to show for that operation)
- SubBlock input types that match the tool param types (e.g., dropdown for enums, short-input for strings)
- `tools.config.params` correctly maps subBlock IDs to tool param names (if they differ)
- Each subBlock (or its `canonicalParamId`) is named exactly after the tool param it fills. A required `user-only` param that is only renamed in `tools.config.params` fails `bun run apps/sim/scripts/check-block-registry.ts origin/staging`; remap only optional or `user-or-llm` params
- Type coercions in `tools.config.params` for any params that need conversion (Number(), Boolean(), JSON.parse())
3. **Verify block outputs** cover the key fields returned by all tools
4. **Verify conditions** — each subBlock should only show for the operations that actually use it
Expand Down
Loading
Loading