Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
64b3f98
feat(copilot): add commands (#2797)
Sg312 Jan 14, 2026
eb52f69
improvement(schedule): default schedule timezone (#2800)
Sg312 Jan 14, 2026
3d037c9
fix(executor): pattern match more errors to prevent swallow (#2802)
Sg312 Jan 14, 2026
2b49d15
fix(comparison): add condition to prevent duplicate identical edges (…
waleedlatif1 Jan 14, 2026
ebbe67a
fix(triggers): cleanup trigger outputs formatting, fix display name i…
icecrasher321 Jan 14, 2026
6e0055f
feat(slack): added get message by timestamp and get thread tool (#2803)
waleedlatif1 Jan 14, 2026
e3fa40a
fix(sockets): redrawing edges should not lead to socket ops (#2804)
icecrasher321 Jan 14, 2026
d6e4c91
fix(invitations): preserve tokens after error (#2806)
waleedlatif1 Jan 14, 2026
70ed19f
fix(chat): remove special handling for non-streaming (#2808)
icecrasher321 Jan 14, 2026
f6b7c15
improvement(oauth): added random identifier in unused accountId to by…
waleedlatif1 Jan 14, 2026
4b026ad
fix(a2a): added file data part and data data part to a2a agents (#2805)
waleedlatif1 Jan 14, 2026
258e96d
improvement(pricing): drop agent multiplier in docs, change base exec…
icecrasher321 Jan 14, 2026
4f04b1e
feat(terminal): migrate from zustand for console terminal logs to ind…
waleedlatif1 Jan 14, 2026
bd7009e
fix(copilot): commands (#2811)
Sg312 Jan 14, 2026
d5bd97d
feat(tinybird): added tinybird block (#2781)
lakeesiv Jan 14, 2026
a353563
fix(copilot): rewrote user input popover to optimize UX (#2814)
waleedlatif1 Jan 14, 2026
51477c1
fix(terminal): pop all entries from a single execution when the limit…
waleedlatif1 Jan 14, 2026
d7e0d9b
fix(i18n): update translations action to run once per week on sunday …
waleedlatif1 Jan 14, 2026
468ec2e
fix(terminal-colors): change algo to compute colors based on hash of …
waleedlatif1 Jan 14, 2026
3f1dccd
fix(batch-add): on batch add persist subblock values (#2819)
icecrasher321 Jan 14, 2026
6c8c3d6
feat(reorder): allow workflow/folder reordering (#2818)
icecrasher321 Jan 14, 2026
41f9374
fix(agent-tools): added special handling for workflow tool in agent t…
waleedlatif1 Jan 14, 2026
2cee30f
feat(langsmith): add langsmith tools for logging, output selector use…
icecrasher321 Jan 15, 2026
4899c28
fix(notifications): consolidate notification utils, update email styl…
waleedlatif1 Jan 15, 2026
5af72ea
feat(dashboard): added stats endpoint to compute stats on server side…
waleedlatif1 Jan 15, 2026
2129337
improvement(langsmith): ugpraded langsmith to use tool names directly…
waleedlatif1 Jan 15, 2026
4195cfe
fix(otp): send welcome email even when user signs up via email/pass a…
waleedlatif1 Jan 15, 2026
3db9ad2
improvement(emails): update email footer links to link to sim.ai/prov…
waleedlatif1 Jan 15, 2026
5eca660
improvement(langsmith): add wand for batch ingestion schemas (#2827)
icecrasher321 Jan 15, 2026
ccf2685
improvement(copilot): update copilot to match copilot repo (#2829)
Sg312 Jan 15, 2026
85d6e3e
fix(misc): added trace spans back to notifications for webhooks, upda…
waleedlatif1 Jan 15, 2026
45bd1e8
feat(starter): in start block input format, don't prevent deletion if…
waleedlatif1 Jan 15, 2026
26d0799
fix(popover): fix frozen workspace popover (#2832)
waleedlatif1 Jan 15, 2026
d4c171c
fix(sortOrder): initial ordering must be deterministic (#2833)
icecrasher321 Jan 15, 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
28 changes: 21 additions & 7 deletions .claude/commands/add-block.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,14 +351,16 @@ Enables AI-assisted field generation.

## Tools Configuration

### Simple Tool Selector
**Preferred:** Use tool names directly as dropdown option IDs to avoid switch cases:
```typescript
tools: {
access: ['service_create', 'service_read', 'service_update'],
config: {
tool: (params) => `service_${params.operation}`,
},
}
// Dropdown options use tool IDs directly
options: [
{ label: 'Create', id: 'service_create' },
{ label: 'Read', id: 'service_read' },
]

// Tool selector just returns the operation value
tool: (params) => params.operation,
```

### With Parameter Transformation
Expand Down Expand Up @@ -577,6 +579,17 @@ export const ServiceBlock: BlockConfig = {

See the `/add-trigger` skill for creating triggers.

## Icon Requirement

If the icon doesn't already exist in `@/components/icons.tsx`, **do NOT search for it yourself**. After completing the block, ask the user to provide the SVG:

```
The block is complete, but I need an icon for {Service}.
Please provide the SVG and I'll convert it to a React component.

You can usually find this in the service's brand/press kit page, or copy it from their website.
```

## Checklist Before Finishing

- [ ] All subBlocks have `id`, `title` (except switch), and `type`
Expand All @@ -588,4 +601,5 @@ See the `/add-trigger` skill for creating triggers.
- [ ] Tools.config.tool returns correct tool ID
- [ ] Outputs match tool outputs
- [ ] Block registered in registry.ts
- [ ] If icon missing: asked user to provide SVG
- [ ] If triggers exist: `triggers` config set, trigger subBlocks spread
35 changes: 26 additions & 9 deletions .claude/commands/add-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,17 +226,26 @@ export function {Service}Icon(props: SVGProps<SVGSVGElement>) {
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
{/* SVG paths from brand assets */}
{/* SVG paths from user-provided SVG */}
</svg>
)
}
```

### Finding Icons
1. Check the service's brand/press kit page
2. Download SVG logo
3. Convert to React component
4. Ensure it accepts and spreads props
### Getting Icons
**Do NOT search for icons yourself.** At the end of implementation, ask the user to provide the SVG:

```
I've completed the integration. Before I can add the icon, please provide the SVG for {Service}.
You can usually find this in the service's brand/press kit page, or copy it from their website.

Paste the SVG code here and I'll convert it to a React component.
```

Once the user provides the SVG:
1. Extract the SVG paths/content
2. Create a React component that spreads props
3. Ensure viewBox is preserved from the original SVG

## Step 5: Create Triggers (Optional)

Expand Down Expand Up @@ -405,6 +414,7 @@ If creating V2 versions (API-aligned outputs):
- [ ] If triggers: spread trigger subBlocks with `getTrigger()`

### Icon
- [ ] Asked user to provide SVG
- [ ] Added icon to `components/icons.tsx`
- [ ] Icon spreads props correctly

Expand Down Expand Up @@ -433,11 +443,18 @@ You: I'll add the Stripe integration. Let me:
1. First, research the Stripe API using Context7
2. Create the tools for key operations (payments, subscriptions, etc.)
3. Create the block with operation dropdown
4. Add the Stripe icon
5. Register everything
6. Generate docs
4. Register everything
5. Generate docs
6. Ask you for the Stripe icon SVG

[Proceed with implementation...]

[After completing steps 1-5...]

I've completed the Stripe integration. Before I can add the icon, please provide the SVG for Stripe.
You can usually find this in the service's brand/press kit page, or copy it from their website.

Paste the SVG code here and I'll convert it to a React component.
```

## Common Gotchas
Expand Down
52 changes: 52 additions & 0 deletions .claude/commands/add-trigger.md
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,53 @@ All fields automatically have:
- `mode: 'trigger'` - Only shown in trigger mode
- `condition: { field: 'selectedTriggerId', value: triggerId }` - Only shown when this trigger is selected

## Trigger Outputs & Webhook Input Formatting

### Important: Two Sources of Truth

There are two related but separate concerns:

1. **Trigger `outputs`** - Schema/contract defining what fields SHOULD be available. Used by UI for tag dropdown.
2. **`formatWebhookInput`** - Implementation that transforms raw webhook payload into actual data. Located in `apps/sim/lib/webhooks/utils.server.ts`.

**These MUST be aligned.** The fields returned by `formatWebhookInput` should match what's defined in trigger `outputs`. If they differ:
- Tag dropdown shows fields that don't exist (broken variable resolution)
- Or actual data has fields not shown in dropdown (users can't discover them)

### When to Add a formatWebhookInput Handler

- **Simple providers**: If the raw webhook payload structure already matches your outputs, you don't need a handler. The generic fallback returns `body` directly.
- **Complex providers**: If you need to transform, flatten, extract nested data, compute fields, or handle conditional logic, add a handler.

### Adding a Handler

In `apps/sim/lib/webhooks/utils.server.ts`, add a handler block:

```typescript
if (foundWebhook.provider === '{service}') {
// Transform raw webhook body to match trigger outputs
return {
eventType: body.type,
resourceId: body.data?.id || '',
timestamp: body.created_at,
resource: body.data,
}
}
```

**Key rules:**
- Return fields that match your trigger `outputs` definition exactly
- No wrapper objects like `webhook: { data: ... }` or `{service}: { ... }`
- No duplication (don't spread body AND add individual fields)
- Use `null` for missing optional data, not empty objects with empty strings

### Verify Alignment

Run the alignment checker:
```bash
bunx scripts/check-trigger-alignment.ts {service}
```

## Trigger Outputs

Trigger outputs use the same schema as block outputs (NOT tool outputs).
Expand Down Expand Up @@ -649,6 +696,11 @@ export const {service}WebhookTrigger: TriggerConfig = {
- [ ] Added `delete{Service}Webhook` function to `provider-subscriptions.ts`
- [ ] Added provider to `cleanupExternalWebhook` function

### Webhook Input Formatting
- [ ] Added handler in `apps/sim/lib/webhooks/utils.server.ts` (if custom formatting needed)
- [ ] Handler returns fields matching trigger `outputs` exactly
- [ ] Run `bunx scripts/check-trigger-alignment.ts {service}` to verify alignment

### Testing
- [ ] Run `bun run type-check` to verify no TypeScript errors
- [ ] Restart dev server to pick up new triggers
Expand Down
27 changes: 14 additions & 13 deletions .github/workflows/i18n.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
name: 'Auto-translate Documentation'

on:
push:
branches: [ staging ]
paths:
- 'apps/docs/content/docs/en/**'
- 'apps/docs/i18n.json'
schedule:
# Run every Sunday at midnight UTC
- cron: '0 0 * * 0'
workflow_dispatch: # Allow manual triggers

permissions:
contents: write
Expand All @@ -20,6 +19,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: staging
token: ${{ secrets.GH_PAT }}
fetch-depth: 0

Expand Down Expand Up @@ -68,12 +68,11 @@ jobs:
title: "feat(i18n): update translations"
body: |
## Summary
Automated translation updates triggered by changes to documentation.

This PR was automatically created after content changes were made, updating translations for all supported languages using Lingo.dev AI translation engine.

**Original trigger**: ${{ github.event.head_commit.message }}
**Commit**: ${{ github.sha }}
Automated weekly translation updates for documentation.

This PR was automatically created by the scheduled weekly i18n workflow, updating translations for all supported languages using Lingo.dev AI translation engine.

**Triggered**: Weekly scheduled run
**Workflow**: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

## Type of Change
Expand Down Expand Up @@ -107,7 +106,7 @@ jobs:
## Screenshots/Videos
<!-- Translation changes are text-based - no visual changes expected -->
<!-- Reviewers should check the documentation site renders correctly for all languages -->
branch: auto-translate/staging-merge-${{ github.run_id }}
branch: auto-translate/weekly-${{ github.run_id }}
base: staging
labels: |
i18n
Expand Down Expand Up @@ -145,6 +144,8 @@ jobs:
bun install --frozen-lockfile

- name: Build documentation to verify translations
env:
DATABASE_URL: postgresql://dummy:dummy@localhost:5432/dummy
run: |
cd apps/docs
bun run build
Expand All @@ -153,7 +154,7 @@ jobs:
run: |
cd apps/docs
echo "## Translation Status Report" >> $GITHUB_STEP_SUMMARY
echo "**Triggered by merge to staging branch**" >> $GITHUB_STEP_SUMMARY
echo "**Weekly scheduled translation run**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

en_count=$(find content/docs/en -name "*.mdx" | wc -l)
Expand Down
Loading
Loading