Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
d0d3581
feat(posthog): Add tracking on mothership abort (#4023)
TheodoreSpeaks Apr 7, 2026
0f602f7
fix(login): fix captcha headers for manual login (#4025)
TheodoreSpeaks Apr 7, 2026
e0f5cf8
feat(slack): add subtype field and signature verification to Slack tr…
waleedlatif1 Apr 8, 2026
98be968
improvement(secrets): parallelize save mutations and add admin visibi…
waleedlatif1 Apr 8, 2026
6c3caf6
feat(chat): drag workflows and folders from sidebar into chat input (…
waleedlatif1 Apr 8, 2026
2504bfb
feat(athena): add AWS Athena integration (#4034)
waleedlatif1 Apr 8, 2026
712e58a
fix(admin): delete workspaces on ban (#4029)
TheodoreSpeaks Apr 8, 2026
6f9f336
feat(ui): Add copy button for code blocks in mothership (#4033)
TheodoreSpeaks Apr 8, 2026
2760b4b
Revert "fix(sockets): joining currently deleted workflow (#4004)" (#4…
icecrasher321 Apr 8, 2026
086b7d9
refactor(polling): consolidate polling services into provider handler…
waleedlatif1 Apr 8, 2026
a591d7c
fix(manual): mock payloads nested recursion (#4037)
icecrasher321 Apr 8, 2026
7b81a76
fix(kb): show 'pending' instead of past date for overdue next sync (#…
waleedlatif1 Apr 8, 2026
9282d1b
feat(secrets): allow admins to view and edit workspace secret values …
waleedlatif1 Apr 8, 2026
d0d35dd
fix: address PR review comments (#4042)
waleedlatif1 Apr 8, 2026
3c7bfa7
improvement(kb): deferred content fetching and metadata-based hashes …
waleedlatif1 Apr 8, 2026
d7da35b
v0.6.30: slack trigger enhancements, connectors performance improveme…
waleedlatif1 Apr 8, 2026
efb582e
feat(voice): voice input migration to eleven labs (#4041)
icecrasher321 Apr 8, 2026
650487c
fix(kb): doc selector (#4048)
icecrasher321 Apr 8, 2026
04c9057
fix(kb): disable connectors after repeated sync failures (#4046)
waleedlatif1 Apr 8, 2026
579d240
fix(parallel): remove broken node-counting completion + resolver clai…
waleedlatif1 Apr 8, 2026
a1173ee
debug(log): Add logging on socket token error (#4051)
TheodoreSpeaks Apr 8, 2026
c21876a
fix(trigger): add react-dom and react-email to additionalPackages (#4…
waleedlatif1 Apr 8, 2026
621aa65
fix(webhook): throw webhook errors as 4xxs (#4050)
TheodoreSpeaks Apr 8, 2026
1189400
feat(enterprise): cloud whitelabeling for enterprise orgs (#4047)
waleedlatif1 Apr 8, 2026
4700590
fix(editor): stop highlighting start.input as blue when block is not …
waleedlatif1 Apr 8, 2026
cf233bb
v0.6.31: elevenlabs voice, trigger.dev fixes, cloud whitelabeling for…
waleedlatif1 Apr 8, 2026
694f4a5
fix: merge subblock values in auto-layout to prevent losing router co…
waleedlatif1 Apr 8, 2026
91ce55e
fix(whitelabeling): eliminate logo flash by fetching org settings ser…
waleedlatif1 Apr 8, 2026
1856635
fix(whitelabeling): cast activeOrganizationId on session for TS build
waleedlatif1 Apr 8, 2026
c833492
fix(error): catch socket auth error as 4xx (#4059)
TheodoreSpeaks Apr 8, 2026
5f33432
fix(billing): Skip billing on streamed workflows with byok (#4056)
TheodoreSpeaks Apr 8, 2026
c5cc336
fix(subscription-state): remove dead code, change token route check (…
icecrasher321 Apr 9, 2026
3e85218
improvement(hitl): streaming, async support + update docs (#4058)
icecrasher321 Apr 9, 2026
a8468a6
fix(hitl): async resume (#4064)
icecrasher321 Apr 9, 2026
139213e
feat(block): Add cloudwatch publish operation (#4027)
TheodoreSpeaks Apr 9, 2026
9fbe514
fix(hitl): resume workflow output async (#4065)
icecrasher321 Apr 9, 2026
db23078
fix(jsm): improve create request error handling, add form-based submi…
waleedlatif1 Apr 9, 2026
f8f3758
v0.6.32: BYOK fixes, ui improvements, cloudwatch tools, jsm tools ext…
waleedlatif1 Apr 9, 2026
dc7d876
improvement(release): address comments (#4069)
icecrasher321 Apr 9, 2026
d778b3d
fix(trigger): add @react-email/components to additionalPackages (#4068)
waleedlatif1 Apr 9, 2026
b67c068
improvement(deploy): improve auto-generated version descriptions (#4075)
waleedlatif1 Apr 9, 2026
8e222fa
improvement(polling): fix correctness and efficiency across all polli…
waleedlatif1 Apr 9, 2026
7bd271a
fix(credentials): add cross-cache invalidation for oauth credential q…
waleedlatif1 Apr 9, 2026
70f04c0
feat(jsm): add ProForma/JSM Forms discovery tools (#4078)
waleedlatif1 Apr 9, 2026
fc3e762
feat(trigger): add ServiceNow webhook triggers (#4077)
waleedlatif1 Apr 9, 2026
c393791
docs(openapi): add Human in the Loop API endpoints (#4079)
waleedlatif1 Apr 9, 2026
3c8bb40
v0.6.33: polling improvements, jsm forms tools, credentials reactquer…
waleedlatif1 Apr 9, 2026
12deb0f
chore(ci): bump actions/checkout to v6 and dorny/paths-filter to v4 (…
waleedlatif1 Apr 9, 2026
32bdf3c
fix(trigger): use @react-email/render v2 to fix renderToPipeableStrea…
waleedlatif1 Apr 9, 2026
05b5588
improvement(ci): parallelize Docker builds and fix test timeouts (#4083)
waleedlatif1 Apr 9, 2026
bce638d
fix(tools): add Atlassian error extractor to all Jira, JSM, and Confl…
waleedlatif1 Apr 9, 2026
d33acf4
v0.6.34: trigger.dev fixes, CI speedup, atlassian error extractor
waleedlatif1 Apr 9, 2026
171485d
fix(tools): handle all Atlassian error formats in parseJsmErrorMessag…
waleedlatif1 Apr 10, 2026
4074109
fix(log): log cleanup sql query (#4087)
TheodoreSpeaks Apr 10, 2026
476669f
docs(openapi): add Human in the Loop section to API reference sidebar…
waleedlatif1 Apr 10, 2026
04c1f8e
feat(tools): add fields parameter to Jira search block (#4091)
waleedlatif1 Apr 10, 2026
3efbd1d
fix(agent): include model in structured response output (#4092)
waleedlatif1 Apr 10, 2026
4f40c4c
v0.6.35: additional jira fields, HITL docs, logs cleanup efficiency
waleedlatif1 Apr 10, 2026
6099683
feat(trigger): add Google Sheets, Drive, and Calendar polling trigger…
waleedlatif1 Apr 10, 2026
266bc21
feat(ui): allow multiselect in resource tabs (#4094)
TheodoreSpeaks Apr 10, 2026
2b9fb19
fix(trigger): resolve dependsOn for trigger-mode subblocks sharing ca…
waleedlatif1 Apr 10, 2026
59de6bb
fix(trigger): show selector display names on canvas for trigger file/…
waleedlatif1 Apr 10, 2026
2e85361
fix(tools): use OAuth-compatible URL for JSM Forms API (#4099)
waleedlatif1 Apr 10, 2026
fb5ebd3
fix(ui): support Tab key to select items in tag, env-var, and resourc…
waleedlatif1 Apr 10, 2026
34f77e0
update(doc): Update hosted key/byok section (#4098)
TheodoreSpeaks Apr 10, 2026
8bbca9b
fix(trigger): fix polling trigger config defaults, row count, clock-s…
waleedlatif1 Apr 11, 2026
bad78cc
improvement(sockets): workflow switching state machine (#4104)
icecrasher321 Apr 11, 2026
c1d788c
improvement(integrations, models): ui/ux (#4105)
emir-karabeg Apr 11, 2026
1acafe8
feat(knowledge): add token, sentence, recursive, and regex chunkers (…
waleedlatif1 Apr 11, 2026
cbfab1c
v0.6.36: new chunkers, sockets state machine, google sheets/drive/cal…
waleedlatif1 Apr 11, 2026
20cc018
fix(execution): fix isolated-vm memory leak and add worker recycling …
waleedlatif1 Apr 11, 2026
c852585
chore(triggers): deprecate trigger-save subblock (#4107)
waleedlatif1 Apr 11, 2026
74d0a47
fix(trigger): fix Google Sheets trigger header detection and row inde…
waleedlatif1 Apr 11, 2026
6a4f5f2
fix(trigger): handle Drive rate limits, 410 page token expiry, and cl…
waleedlatif1 Apr 11, 2026
30c5e82
feat(ee): add enterprise audit logs settings page (#4111)
waleedlatif1 Apr 11, 2026
bc31710
improvement(landing): rebrand to AI workspace, add auth modal, harden…
emir-karabeg Apr 12, 2026
85f1d96
feat(ee): enterprise feature flags, permission group platform control…
waleedlatif1 Apr 12, 2026
4309d06
v0.6.37: audit logs page, isolated-vm worker rotation, permission gro…
waleedlatif1 Apr 12, 2026
6ef40c5
fix(models): exclude reseller providers from model catalog pages (#4117)
waleedlatif1 Apr 12, 2026
8b57476
v0.6.38: models page
waleedlatif1 Apr 12, 2026
10341ae
fix(billing): unblock on payment success (#4121)
icecrasher321 Apr 12, 2026
6d2deb1
chore(skills): reinforce skill to not guess integration outputs (#4122)
icecrasher321 Apr 12, 2026
cd3e24b
feat(crowdstrike): add tools + validate whatsapp, shopify, trello (#4…
icecrasher321 Apr 12, 2026
ffda344
fix(models): fix mobile overflow and hide cost bars on small screens …
waleedlatif1 Apr 13, 2026
e3d0e74
v0.6.39: billing fixes, tools audit, landing fix
waleedlatif1 Apr 13, 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
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .agents/skills/add-block/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@ When the user asks you to create a block:
2. Configure all subBlocks with proper types, conditions, and dependencies
3. Wire up tools correctly

## Hard Rule: No Guessed Tool Outputs

Blocks depend on tool outputs. If the underlying tool response schema is not documented or live-verified, you MUST tell the user instead of guessing block outputs.

- Do NOT invent block outputs for undocumented tool responses
- Do NOT describe unknown JSON shapes as if they were confirmed
- Do NOT wire fields into the block just because they seem likely to exist

If the tool outputs are not known, do one of these instead:
1. Ask the user for sample tool responses
2. Ask the user for test credentials so the tool responses can be verified
3. Limit the block to operations whose outputs are documented
4. Leave uncertain outputs out and explicitly tell the user what remains unknown

## Block Configuration Structure

```typescript
Expand Down Expand Up @@ -575,6 +589,8 @@ Use `type: 'json'` with a descriptive string when:
- It represents a list/array of items
- The shape varies by operation

If the output shape is unknown because the underlying tool response is undocumented, you MUST tell the user and stop. Unknown is not the same as variable. Never guess block outputs.

## V2 Block Pattern

When creating V2 blocks (alongside legacy V1):
Expand Down Expand Up @@ -829,3 +845,4 @@ After creating the block, you MUST validate it against every tool it references:
- 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
5. **If any tool outputs are still unknown**, explicitly tell the user instead of guessing block outputs
17 changes: 17 additions & 0 deletions .agents/skills/add-connector/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,21 @@ When the user asks you to create a connector:
3. Create the connector directory and config
4. Register it in the connector registry

## Hard Rule: No Guessed Response Or Document Schemas

If the service docs do not clearly show the document list response, document fetch response, pagination shape, or metadata fields, you MUST tell the user instead of guessing.

- Do NOT invent document fields
- Do NOT guess pagination cursors or next-page fields
- Do NOT infer metadata/tag mappings from unrelated endpoints
- Do NOT fabricate `ExternalDocument` content structure from partial docs

If the source schema is unknown, do one of these instead:
1. Ask the user for sample API responses
2. Ask the user for test credentials so you can verify live payloads
3. Implement only the documented parts of the connector
4. Leave the connector incomplete and explicitly say which fields remain unknown

## Directory Structure

Create files in `apps/sim/connectors/{service}/`:
Expand Down Expand Up @@ -92,6 +107,8 @@ export const {service}Connector: ConnectorConfig = {
}
```

Only map fields in `listDocuments`, `getDocument`, `validateConfig`, and `mapTags` when the source payload shape is documented or live-verified. If not, tell the user and stop rather than guessing.

### API key connector example

```typescript
Expand Down
18 changes: 18 additions & 0 deletions .agents/skills/add-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,21 @@ Before writing any code:
- Required vs optional parameters
- Response structures

### Hard Rule: No Guessed Response Schemas

If the official docs do not clearly show the response JSON shape for an endpoint, you MUST stop and tell the user exactly which outputs are unknown.

- Do NOT guess response field names
- Do NOT infer nested JSON paths from related endpoints
- Do NOT invent output properties just because they seem likely
- Do NOT implement `transformResponse` against unverified payload shapes

If response schemas are missing or incomplete, do one of the following before proceeding:
1. Ask the user for sample responses
2. Ask the user for test credentials so you can verify the live payload
3. Reduce the scope to only endpoints whose response shapes are documented
4. Leave the tool unimplemented and explicitly report why

## Step 2: Create Tools

### Directory Structure
Expand Down Expand Up @@ -103,6 +118,7 @@ export const {service}{Action}Tool: ToolConfig<Params, Response> = {
- Set `optional: true` for outputs that may not exist
- Never output raw JSON dumps - extract meaningful fields
- When using `type: 'json'` and you know the object shape, define `properties` with the inner fields so downstream consumers know the structure. Only use bare `type: 'json'` when the shape is truly dynamic
- If you do not know the response JSON shape from docs or verified examples, you MUST tell the user and stop. Never guess outputs or response mappings.

## Step 3: Create Block

Expand Down Expand Up @@ -450,6 +466,8 @@ If creating V2 versions (API-aligned outputs):
- [ ] Verified block subBlocks cover all required tool params with correct conditions
- [ ] Verified block outputs match what the tools actually return
- [ ] Verified `tools.config.params` correctly maps and coerces all param types
- [ ] Verified every tool output and `transformResponse` path against documented or live-verified JSON responses
- [ ] If any response schema remained unknown, explicitly told the user instead of guessing

## Example Command

Expand Down
19 changes: 19 additions & 0 deletions .agents/skills/add-tools/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ When the user asks you to create tools for a service:
2. Create the tools directory structure
3. Generate properly typed tool configurations

## Hard Rule: No Guessed Response Schemas

If the docs do not clearly show the response JSON for a tool, you MUST tell the user exactly which outputs are unknown and stop short of guessing.

- Do NOT invent response field names
- Do NOT infer nested paths from nearby endpoints
- Do NOT guess array item shapes
- Do NOT write `transformResponse` against unverified payloads

If the response shape is unknown, do one of these instead:
1. Ask the user for sample responses
2. Ask the user for test credentials so you can verify live responses
3. Implement only the endpoints whose outputs are documented
4. Leave the tool unimplemented and explicitly say why

## Directory Structure

Create files in `apps/sim/tools/{service}/`:
Expand Down Expand Up @@ -187,6 +202,8 @@ items: {

Only use bare `type: 'json'` without `properties` when the shape is truly dynamic or unknown.

If the response shape is unknown because the docs do not provide it, you MUST tell the user and stop. Unknown is not the same as dynamic. Never guess outputs.

## Critical Rules for transformResponse

### Handle Nullable Fields
Expand Down Expand Up @@ -441,7 +458,9 @@ After creating all tools, you MUST validate every tool before finishing:
- All output fields match what the API actually returns
- No fields are missing from outputs that the API provides
- No extra fields are defined in outputs that the API doesn't return
- Every output field and JSON path is backed by docs or live-verified sample responses
3. **Verify consistency** across tools:
- Shared types in `types.ts` match all tools that use them
- Tool IDs in the barrel export match the tool file definitions
- Error handling is consistent (error checks, meaningful messages)
4. **If any response schema is still unknown**, explicitly tell the user instead of guessing
15 changes: 15 additions & 0 deletions .agents/skills/add-trigger/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,21 @@ You are an expert at creating webhook triggers for Sim. You understand the trigg
3. Create a provider handler if custom auth, formatting, or subscriptions are needed
4. Register triggers and connect them to the block

## Hard Rule: No Guessed Webhook Payload Schemas

If the service docs do not clearly show the webhook payload JSON for an event, you MUST tell the user instead of guessing trigger outputs or `formatInput` mappings.

- Do NOT invent payload field names
- Do NOT guess nested event object paths
- Do NOT infer output fields from the UI or marketing docs
- Do NOT write `formatInput` against unverified webhook bodies

If the payload shape is unknown, do one of these instead:
1. Ask the user for sample webhook payloads
2. Ask the user for a test webhook source so you can inspect a real event
3. Implement only the event registration/setup portions whose payloads are documented
4. Leave the trigger unimplemented and explicitly say which payload fields are unknown

## Directory Structure

```
Expand Down
16 changes: 16 additions & 0 deletions .agents/skills/validate-connector/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,20 @@ Fetch the official API docs for the service. This is the **source of truth** for

Use Context7 (resolve-library-id → query-docs) or WebFetch to retrieve documentation. If both fail, note which claims are based on training knowledge vs verified docs.

### Hard Rule: No Guessed Source Schemas

If the service docs do not clearly show document list responses, document fetch responses, metadata fields, or pagination shapes, you MUST tell the user instead of guessing.

- Do NOT infer document fields from unrelated endpoints
- Do NOT guess pagination cursors or response wrappers
- Do NOT assume metadata keys that are not documented
- Do NOT treat probable shapes as validated

If a schema is unknown, validation must explicitly recommend:
1. sample API responses,
2. live test credentials, or
3. trimming the connector to only documented fields.

## Step 3: Validate API Endpoints

For **every** API call in the connector (`listDocuments`, `getDocument`, `validateConfig`, and any helper functions), verify against the API docs:
Expand Down Expand Up @@ -93,6 +107,7 @@ For **every** API call in the connector (`listDocuments`, `getDocument`, `valida
- [ ] Field names extracted match what the API actually returns
- [ ] Nullable fields are handled with `?? null` or `|| undefined`
- [ ] Error responses are checked before accessing data fields
- [ ] Every extracted field and pagination value is backed by official docs or live-verified sample payloads

## Step 4: Validate OAuth Scopes (if OAuth connector)

Expand Down Expand Up @@ -304,6 +319,7 @@ After fixing, confirm:
1. `bun run lint` passes
2. TypeScript compiles clean
3. Re-read all modified files to verify fixes are correct
4. Any remaining unknown source schemas were explicitly reported to the user instead of guessed

## Checklist Summary

Expand Down
16 changes: 16 additions & 0 deletions .agents/skills/validate-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,20 @@ Fetch the official API docs for the service. This is the **source of truth** for
- Pagination patterns (which param name, which response field)
- Rate limits and error formats

### Hard Rule: No Guessed Response Schemas

If the official docs do not clearly show the response JSON shape for an endpoint, you MUST tell the user instead of guessing.

- Do NOT assume field names from nearby endpoints
- Do NOT infer nested JSON paths without evidence
- Do NOT treat "likely" fields as confirmed outputs
- Do NOT accept implementation guesses as valid just because they are defensive

If a response schema is unknown, the validation must explicitly call that out and require:
1. sample responses from the user,
2. live test credentials for verification, or
3. trimming the tool/block down to only documented fields.

## Step 3: Validate Tools

For **every** tool file, check:
Expand Down Expand Up @@ -81,6 +95,7 @@ For **every** tool file, check:
- [ ] All optional arrays use `?? []`
- [ ] Error cases are handled: checks for missing/empty data and returns meaningful error
- [ ] Does NOT do raw JSON dumps — extracts meaningful, individual fields
- [ ] Every extracted field is backed by official docs or live-verified sample payloads

### Outputs
- [ ] All output fields match what the API actually returns
Expand Down Expand Up @@ -267,6 +282,7 @@ After fixing, confirm:
1. `bun run lint` passes with no fixes needed
2. TypeScript compiles clean (no type errors)
3. Re-read all modified files to verify fixes are correct
4. Any remaining unknown response schemas were explicitly reported to the user instead of guessed

## Checklist Summary

Expand Down
16 changes: 16 additions & 0 deletions .agents/skills/validate-trigger/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,20 @@ Fetch the service's official webhook documentation. This is the **source of trut
- Webhook subscription API (create/delete endpoints, if applicable)
- Retry behavior and delivery guarantees

### Hard Rule: No Guessed Webhook Payload Schemas

If the official docs do not clearly show the webhook payload JSON for an event, you MUST tell the user instead of guessing.

- Do NOT invent payload field names
- Do NOT infer nested payload paths without evidence
- Do NOT treat likely event shapes as verified
- Do NOT accept `formatInput` mappings that are not backed by docs or live payloads

If a payload schema is unknown, validation must explicitly recommend:
1. sample webhook payloads,
2. a live test webhook source, or
3. trimming the trigger to only documented outputs.

## Step 3: Validate Trigger Definitions

### utils.ts
Expand Down Expand Up @@ -93,6 +107,7 @@ Fetch the service's official webhook documentation. This is the **source of trut
- [ ] Nested output paths exist at the correct depth (e.g., `resource.id` actually has `resource: { id: ... }`)
- [ ] `null` is used for missing optional fields (not empty strings or empty objects)
- [ ] Returns `{ input: { ... } }` — not a bare object
- [ ] Every mapped payload field is backed by official docs or live-verified webhook payloads

### Idempotency
- [ ] `extractIdempotencyId` returns a stable, unique key per delivery
Expand Down Expand Up @@ -195,6 +210,7 @@ After fixing, confirm:
1. `bun run type-check` passes
2. Re-read all modified files to verify fixes are correct
3. Provider handler tests pass (if they exist): `bun test {service}`
4. Any remaining unknown webhook payload schemas were explicitly reported to the user instead of guessed

## Checklist Summary

Expand Down
Loading
Loading