Commit Graph

4263 Commits

Author SHA1 Message Date
Vikhyath Mondreti
da28f8a4b8 improved autolayout 2026-04-10 12:11:52 -07:00
Vikhyath Mondreti
e2b4eb370d fix type error 2026-04-10 10:01:16 -07:00
Siddharth Ganesan
734a4d1f5b Fix editable 2026-04-10 03:03:03 -07:00
Siddharth Ganesan
91301df20a Update request tracing and skills and handlers 2026-04-10 02:15:23 -07:00
Vikhyath Mondreti
949601ca02 lint 2026-04-09 23:46:43 -07:00
Siddharth Ganesan
ca361a3115 Fix 2026-04-09 21:02:01 -07:00
Siddharth Ganesan
c74c4a915f Restore and mass delete tools 2026-04-09 20:30:12 -07:00
Siddharth Ganesan
2156f49951 Folder vfs 2026-04-09 19:40:35 -07:00
Siddharth Ganesan
5b94db6905 Options ordering 2026-04-09 19:38:42 -07:00
Siddharth Ganesan
c026ce715a Clickable resources 2026-04-09 19:34:48 -07:00
Vikhyath Mondreti
33d1342452 remove worker code 2026-04-09 19:15:02 -07:00
Vikhyath Mondreti
c61cbb04a5 Merge branch 'staging' into dev 2026-04-09 18:48:45 -07:00
Siddharth Ganesan
32527363f3 Fix 2026-04-09 18:40:59 -07:00
Siddharth Ganesan
9272b1546c fix 2026-04-09 18:14:56 -07:00
Theodore Li
4074109362 fix(log): log cleanup sql query (#4087)
* fix(log): log cleanup sql query

* perf(log): use startedAt index for cleanup query filter

Switch cleanup WHERE clause from createdAt to startedAt to leverage
the existing composite index (workspaceId, startedAt), converting a
full table scan to an index range scan. Also remove explanatory comment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Theodore Li <theo@sim.ai>
Co-authored-by: Waleed Latif <walif6@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 18:04:15 -07:00
Vikhyath Mondreti
24abd8764e Merge branch 'dev' of github.com:simstudioai/sim into dev 2026-04-09 17:56:16 -07:00
Vikhyath Mondreti
7835df4c99 fix snapshot crash bug 2026-04-09 17:55:03 -07:00
Siddharth Ganesan
8f3c8e4b73 Fix name 2026-04-09 17:36:01 -07:00
Vikhyath Mondreti
e321e99c09 Merge branch 'dev' of github.com:simstudioai/sim into dev 2026-04-09 17:28:25 -07:00
Vikhyath Mondreti
f509e33601 fix payload accesses 2026-04-09 17:28:16 -07:00
Siddharth Ganesan
485dce7bed Tool call names 2026-04-09 17:15:45 -07:00
Waleed
171485d3b6 fix(tools): handle all Atlassian error formats in parseJsmErrorMessage (#4088)
Update parseJsmErrorMessage to extract errors from all Atlassian API
response formats: errorMessage (JSM), errorMessages array (Jira),
errors[].title RFC 7807 (Confluence/Forms), field-level errors object,
and message (gateway). Remove redundant prefix wrapping so the raw
error message surfaces cleanly through the extractor.
2026-04-09 17:08:19 -07:00
Siddharth Ganesan
2d2f7828c9 Fix persistence 2026-04-09 15:56:06 -07:00
Siddharth Ganesan
3ef87e55a3 Add req id 2026-04-09 15:23:41 -07:00
Waleed
bce638dd75 fix(tools): add Atlassian error extractor to all Jira, JSM, and Confluence tools (#4085)
* fix(tools): add Atlassian error extractor to all Jira, JSM, and Confluence tools

Wire up the existing `atlassian-errors` error extractor to all 95 Atlassian
tool configs so the executor surfaces meaningful error messages instead of
generic status codes. Also fix the extractor itself to handle all three
Atlassian error response formats: `errorMessage` (JSM), `errorMessages`
array (Jira), and `message` (Confluence).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore(tools): lint formatting fix for error extractor

* fix(tools): handle all Atlassian error formats in error extractor

Add RFC 7807 errors[].title format (Confluence v2, Forms/ProForma API)
and Jira field-level errors object to the atlassian-errors extractor.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 15:18:34 -07:00
Waleed
05b5588a7b improvement(ci): parallelize Docker builds and fix test timeouts (#4083)
* improvement(ci): parallelize Docker builds with tests and remove duplicate turbo install

* fix(test): use SecureFetchResponse shape in mock instead of standard Response
2026-04-09 15:18:19 -07:00
Siddharth Ganesan
649ee9c869 Speed up dev ci 2026-04-09 14:54:33 -07:00
Waleed
32bdf3cfa5 fix(trigger): use @react-email/render v2 to fix renderToPipeableStream error (#4084) 2026-04-09 14:46:57 -07:00
Siddharth Ganesan
9da574a112 Fix dev 2026-04-09 14:43:01 -07:00
Waleed
12deb0f5b4 chore(ci): bump actions/checkout to v6 and dorny/paths-filter to v4 (#4082)
* chore(ci): bump actions/checkout to v6 and dorny/paths-filter to v4

* fix(ci): mock secureFetchWithPinnedIP in tools tests to prevent timeouts

* lint
2026-04-09 14:33:11 -07:00
Siddharth Ganesan
0638604780 Fix tests 2026-04-09 14:32:18 -07:00
Siddharth Ganesan
f0d3819093 Fix dev 2026-04-09 14:23:34 -07:00
Waleed
c393791f04 docs(openapi): add Human in the Loop API endpoints (#4079)
* docs(openapi): add Human in the Loop API endpoints

Add HITL pause/resume endpoints to the OpenAPI spec covering
the full workflow pause lifecycle: listing paused executions,
inspecting pause details, and resuming with input.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(openapi): add 403 and 500 responses to HITL endpoints

Address PR review feedback: add missing 403 Forbidden response
to all HITL endpoints (from validateWorkflowAccess), and 500
responses to resume endpoints that have explicit error paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* lint

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 14:01:09 -07:00
Waleed
fc3e762b1f feat(trigger): add ServiceNow webhook triggers (#4077)
* feat(trigger): add ServiceNow webhook triggers

* fix(trigger): add webhook secret field and remove non-TSDoc comment

Add webhookSecret field to ServiceNow triggers (matching Salesforce pattern)
so users are prompted to protect the webhook endpoint. Update setup
instructions to include Authorization header in the Business Rule example.
Remove non-TSDoc inline comment in the block config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(trigger): add ServiceNow provider handler with event matching

Add dedicated ServiceNow webhook provider handler with:
- verifyAuth: validates webhookSecret via Bearer token or X-Sim-Webhook-Secret
- matchEvent: filters events by trigger type and table name using
  isServiceNowEventMatch utility (matching Salesforce/GitHub pattern)

The event matcher handles incident created/updated and change request
created/updated triggers with table name enforcement and event type
normalization. The generic webhook trigger passes through all events
but still respects the optional table name filter.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* lint

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 13:59:07 -07:00
Waleed
70f04c003b feat(jsm): add ProForma/JSM Forms discovery tools (#4078)
* feat(jsm): add ProForma/JSM Forms discovery tools

Add three new tools for discovering and inspecting JSM Forms (ProForma) templates
and their structure, enabling dynamic form-based workflows:

- jsm_get_form_templates: List form templates in a project with request type bindings
- jsm_get_form_structure: Get full form design (questions, layout, conditions, sections)
- jsm_get_issue_forms: List forms attached to an issue with submission status

All endpoints validated against the official Atlassian Forms REST API OpenAPI spec.
Uses the Forms Cloud API base URL (jira/forms/cloud/{cloudId}) with X-ExperimentalApi header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jsm): add input validation and extract shared error parser

- Add validateJiraIssueKey for projectIdOrKey in templates and structure routes
- Add validateJiraCloudId for formId (UUID) in structure route
- Extract parseJsmErrorMessage to shared utils.ts (was duplicated across 3 routes)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore(jsm): remove unused FORM_QUESTION_PROPERTIES constant

Dead code — the get_form_structure tool passes the raw design object
through as JSON, so this output constant had no consumers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 13:58:41 -07:00
Siddharth Ganesan
fe5baf7569 Tool display intetns 2026-04-09 13:45:02 -07:00
Vikhyath Mondreti
e610df6843 Merge branch 'dev' of github.com:simstudioai/sim into dev 2026-04-09 13:35:43 -07:00
Vikhyath Mondreti
c77f204d02 streamed text change 2026-04-09 13:35:38 -07:00
Vikhyath Mondreti
b1caeb0b28 cleanup subagent + streaming issues 2026-04-09 13:33:18 -07:00
Siddharth Ganesan
6f04c48c31 tool joining 2026-04-09 13:01:49 -07:00
Siddharth Ganesan
d25c2430dc Fix file tools 2026-04-09 12:53:03 -07:00
Siddharth Ganesan
69d69ee95b temp 2026-04-09 11:57:49 -07:00
Vikhyath Mondreti
a738a6d711 fix stream persistence 2026-04-09 11:54:00 -07:00
Vikhyath Mondreti
2abf6ac245 Merge branch 'dev' of github.com:simstudioai/sim into dev 2026-04-09 11:35:40 -07:00
Vikhyath Mondreti
81ac66f104 fix code block 2026-04-09 11:35:27 -07:00
Waleed
7bd271ae5b fix(credentials): add cross-cache invalidation for oauth credential queries (#4076) 2026-04-09 11:32:08 -07:00
Siddharth Ganesan
2ba4228669 Checkpoitn 2026-04-09 11:28:05 -07:00
Vikhyath Mondreti
817833c3a3 replace react markdown with streamdown 2026-04-09 11:27:49 -07:00
Waleed
8e222fa369 improvement(polling): fix correctness and efficiency across all polling handlers (#4067)
* improvement(polling): fix correctness and efficiency across all polling handlers

- Gmail: paginate history API, add historyTypes filter, differentiate 403/429,
  fetch fresh historyId on fallback to break 404 retry loop
- Outlook: follow @odata.nextLink pagination, use fetchWithRetry for all Graph
  calls, fix $top alignment, skip folder filter on partial resolution failure,
  remove Content-Type from GET requests
- RSS: add conditional GET (ETag/If-None-Match), raise GUID cap to 500, fix 304
  ETag capture per RFC 9111, align GUID tracking with idempotency fallback key
- IMAP: single connection reuse, UIDVALIDITY tracking per mailbox, advance UID
  only on successful fetch, fix messageFlagsAdd range type, remove cross-mailbox
  legacy UID fallback
- Dispatch polling via trigger.dev task with per-provider concurrency key;
  fall back to synchronous Redis-locked polling for self-hosted

* fix(rss): align idempotency key GUID fallback with tracking/filter guard

* removed comments

* fix(imap): clear stale UID when UIDVALIDITY changes during state merge

* fix(rss): skip items with no identifiable GUID to avoid idempotency key collisions

* fix(schedules): convert dynamic import of getWorkflowById to static import

* fix(imap): preserve fresh UID after UIDVALIDITY reset in state merge

* improvement(polling): remove trigger.dev dispatch, use synchronous Redis-locked polling

* fix(polling): decouple outlook page size from total email cap so pagination works
2026-04-09 11:22:38 -07:00
Siddharth Ganesan
f2fcfe7e6e Bad hook 2026-04-09 10:55:24 -07:00