v0.8.0: new workflow UI, v2 API, salesforce JWT, provenance improvements, incidentio tools, block retries by waleedlatif1 · Pull Request #6533 · simstudioai/sim · GitHub
Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
5f4dc19
fix(sidebar): pluralize the Knowledge bases nav label (#6514)
j15z Aug 11, 2026
4bafd14
improvement(provenance): name every guard that can latch a registry (…
icecrasher321 Aug 11, 2026
4d37572
fix(knowledge): pluralize the module header and root breadcrumb (#6516)
j15z Aug 11, 2026
c5db403
feat(comparisons): add code-sandbox and session-policy rows (#6517)
waleedlatif1 Aug 11, 2026
fff6606
fix(folders): show the folder trail in table and knowledge base heade…
waleedlatif1 Aug 11, 2026
f5c06d4
fix(tables): handle row deletion during cell execution (#6520)
TheodoreSpeaks Aug 11, 2026
245ad1b
feat(workflows): new workflow block card, progress indicator, colors,…
icecrasher321 Aug 11, 2026
ba5dfb1
feat(salesforce): add JWT bearer flow and sandbox OAuth support (#6508)
waleedlatif1 Aug 11, 2026
507def6
fix(workflows): port the canvas card icons off lucide-react (#6523)
icecrasher321 Aug 11, 2026
daac4f3
docs(salesforce): correct the setup steps that would strand an admin …
waleedlatif1 Aug 11, 2026
5478a69
improvement(setup): complete knowledge and update flows (#6521)
TheodoreSpeaks Aug 11, 2026
ff64389
fix(logs): keep run provenance when compaction drops the execution st…
waleedlatif1 Aug 11, 2026
1a39e29
fix(chat): stop the streaming transcript floor inventing scroll space…
waleedlatif1 Aug 11, 2026
a64ce49
feat(incidentio): add on-call, alert, catalog, and team tools (#6529)
waleedlatif1 Aug 11, 2026
1551923
fix(chat): stop losing sends aborted during mount-settling (#6525)
j15z Aug 11, 2026
2f43148
improvement(ui): align terminal with the workflow design system, fix …
waleedlatif1 Aug 11, 2026
9277e7d
feat(search): page-aware cmd+k palette with ask-Sim mode (#6518)
j15z Aug 11, 2026
263e3ca
improvement(external-endpoints): v2 versions with clean signatures + …
icecrasher321 Aug 11, 2026
7c75061
fix(ci): include auth package in app prune (#6538)
TheodoreSpeaks Aug 11, 2026
783e1b5
fix(executor): restore delegated workflow execution (#6539)
TheodoreSpeaks Aug 11, 2026
f8644cc
fix(chat): deduplicate chat sends server-side instead of probing for …
waleedlatif1 Aug 11, 2026
ff378fa
fix(knowledge): retain model input provenance (#6540)
TheodoreSpeaks Aug 11, 2026
71ea7e5
fix(cmdk): New Chat -> New chat (#6543)
j15z Aug 11, 2026
6fdb145
fix(v2-api): standardization (#6542)
waleedlatif1 Aug 11, 2026
fee45e2
fix(atlassian): share one cached, retrying cloudId resolver across Ji…
waleedlatif1 Aug 11, 2026
2f1bb5a
fix(cmdk): update search-modal assertions to the renamed New chat lab…
waleedlatif1 Aug 11, 2026
c365b14
feat(calendly): extend tools with booking, availability, no-shows, an…
waleedlatif1 Aug 11, 2026
bf82512
fix(auth): let Microsoft sign-in link via Entra's domain-verified ema…
waleedlatif1 Aug 11, 2026
df052ac
fix(tools): bound internal tool calls by the plan deadline, not Bun's…
icecrasher321 Aug 11, 2026
440a68b
improvement(audits): skip the sql-date-binding parse for files withou…
waleedlatif1 Aug 11, 2026
061ecd3
fix(api): restore legacy endpoint compatibility (#6552)
TheodoreSpeaks Aug 11, 2026
31bfcdd
fix(auth): rate limit the password reset endpoints (#6553)
waleedlatif1 Aug 11, 2026
596bf4f
feat(library): What Is Retrieval-Augmented Generation (RAG)? (#6555)
icecrasher321 Aug 11, 2026
b879960
fix(provenance): make one length floor the whole substitution rule (#…
icecrasher321 Aug 11, 2026
bd91ab7
fix(files): restore horizontal scroll in CSV and XLSX preview tables …
waleedlatif1 Aug 11, 2026
81e04a8
fix(agiloft): align the integration with the documented ewws REST int…
waleedlatif1 Aug 11, 2026
ae1f62d
improvement(provenance): make the incompleteness reason set closed an…
icecrasher321 Aug 11, 2026
d6505f6
feat(blog): Tracking Secrets Through an Agent Run (#6558)
icecrasher321 Aug 11, 2026
6d3e484
fix(api): align v2 permissions and resource behavior (#6557)
TheodoreSpeaks Aug 11, 2026
1dd85eb
improvement(desktop): add apple signing, fix some bugs (#6519)
Sg312 Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix(tools): bound internal tool calls by the plan deadline, not Bun's…
… fetch default (#6547)

* fix(tools): bound internal tool calls by the plan deadline, not Bun's fetch default

* fix(tools): disarm Bun's fetch idle timer instead of passing a numeric deadline

Bun 1.3.14 ignores a positive numeric `timeout` on fetch and honors only the
boolean/zero form, so passing the plan deadline through changed nothing and
internal tool calls still died at the 300s default. Verified against the pinned
runtime: `{ timeout: 1000 }` does not abort a request that takes 3s to answer,
and `BUN_CONFIG_HTTP_IDLE_TIMEOUT` has no effect either — both are `main`-only.

The caller on this path already arms an AbortController with the plan timeout,
so the transport timer is disarmed rather than re-negotiated, leaving one
enforcement point instead of two that disagree.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs(tools): record the measured Bun 1.3.14 timeout behavior

Replaces the inferred note with the numbers from a probe against the pinned
runtime: no option dies at 300028ms, timeout:false survives 310031ms, and a
numeric timeout is ignored. Also records that bun-types@1.3.14 does not declare
the option even though the runtime honors it, which is why the interface is
declared locally.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
  • Loading branch information
icecrasher321 and claude authored Aug 11, 2026
commit df052ac75c488dbc0cb6a1ae148cee8c875214e8
56 changes: 56 additions & 0 deletions apps/sim/lib/core/utils/fetch-deadline.test.ts
77 changes: 77 additions & 0 deletions apps/sim/lib/core/utils/fetch-deadline.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/**
* Keeps the transport deadline from undercutting the application deadline.
*
* Bun's HTTP client arms an idle timer defaulting to 300s. It is not raised by
* an `AbortSignal`, and it does not re-arm while awaiting response headers, so
* it acts as an absolute deadline for the peer to begin answering. Any request
* whose peer legitimately works before it replies dies at five minutes no
* matter what deadline the caller computed for it.
*
* This bit production. Workflow function blocks are bounded by a plan deadline
* (50 minutes on enterprise), but the executor's call into the internal
* function route inherited Bun's default instead, so every sandbox run longer
* than five minutes failed with a bare `fetch failed` that read as user-code
* failure rather than a transport cap.
*
* The timer is therefore disarmed rather than re-negotiated: callers on this
* path already own an in-process deadline (an `AbortController` armed with the
* plan timeout), and a second, shorter, invisible deadline underneath it is
* exactly the bug. Disarming leaves one enforcement point instead of two that
* disagree.
*
* The pinned runtime accepts only the boolean/zero form. Measured on Bun 1.3.14
* against a server that withholds response headers, so the numbers below are
* the real deadline rather than an inferred one:
*
* no option -> THREW 300028ms (TimeoutError) <- the 300s default
* timeout: false -> RESOLVED 310031ms <- disarmed
* timeout: 1000 -> RESOLVED 3008ms on a 3s request <- numeric ignored
*
* So a positive numeric `timeout` silently changes nothing on this version; the
* numeric idle-deadline form and `BUN_CONFIG_HTTP_IDLE_TIMEOUT` both exist only
* on Bun's `main`. Do not "improve" this into a numeric pass-through until the
* pinned version supports it, and re-measure with the probe above if you do.
*
* `bun-types@1.3.14` does not declare `timeout` on `BunFetchRequestInit` even
* though the runtime honors the boolean form — the types lag the runtime, which
* is why the interface below is declared locally rather than imported.
*
* Node's undici has no equivalent default and ignores the option, so this is
* safe on both runtimes.
*/

/**
* `RequestInit` plus Bun's idle-timeout control, which the DOM lib does not
* declare. `false` disarms the timer; `true` or omitted keeps the default.
*/
export interface DeadlineRequestInit extends RequestInit {
timeout?: number | boolean
}

/**
* Disarms the transport idle timer so the caller's own deadline is the only one
* in force.
*
* Only use this where the caller genuinely enforces a deadline in-process —
* an `AbortSignal` wired to a timer or an execution budget. Without one, a
* request to a peer that never answers would hang until the socket dies.
*/
export function withCallerOwnedDeadline(init: RequestInit): DeadlineRequestInit {
return { ...init, timeout: false }
}

/**
* Whether a caught error is the transport giving up rather than the request
* being cancelled or the peer erroring.
*
* Bun reports both an unanswered request and a truncated body as
* `TimeoutError: The operation timed out.`, and surfaces a severed connection
* as a bare `fetch failed` — none of which name the hop, the elapsed time, or
* the fact that a cap was hit. Callers use this to annotate before rethrowing
* so a transport cap cannot masquerade as a failure of the work itself.
*/
export function isTransportTimeoutError(error: unknown): error is Error {
if (!(error instanceof Error)) return false
if (error.name === 'TimeoutError') return true
return error.name === 'TypeError' && error.message === 'fetch failed'
}
38 changes: 32 additions & 6 deletions apps/sim/tools/index.ts
Loading