Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
a87c413
improvement(enrichments): consolidate lookups through Firecrawl (#9707)
waleedlatif1 Nov 5, 2026
8e3df8a
fix(falai): bound pricing lookups and preserve result receipts (#9706)
waleedlatif1 Nov 5, 2026
34456f8
docs(library): update what-is-human-in-the-loop-in-ai-agents (#9709)
waleedlatif1 Nov 5, 2026
04bcfa3
docs(library): update ai-agents-in-procurement (#9710)
waleedlatif1 Nov 5, 2026
cd0bcb1
feat(library): How Do You Connect Salesforce’s Hosted MCP Server to a…
waleedlatif1 Nov 5, 2026
4383862
docs(library): update best-ai-agents-for-data-extraction-and-rag-in-2…
waleedlatif1 Nov 5, 2026
ef35218
feat(library): 6 Best Tines Alternatives in 2026 for Teams Beyond Sec…
waleedlatif1 Nov 5, 2026
a144143
improvement(org): move the organization view onto the new design syst…
waleedlatif1 Nov 5, 2026
271e8da
feat(library): Best LLM Orchestration Tools for Multi-Provider Call C…
waleedlatif1 Nov 5, 2026
f17f1b6
fix(org): drop the removed shortcuts slot from the landing test (#9715)
waleedlatif1 Nov 5, 2026
a40804c
fix(desktop): route organization members to their organization and se…
waleedlatif1 Nov 5, 2026
25d5929
feat(library): The 7 Best Free AI Agent Builders in 2026 (#9719)
waleedlatif1 Nov 5, 2026
a5ae48c
improvement(geo): clarify self-hosting and compliance for answer engi…
waleedlatif1 Nov 5, 2026
7625929
improvement(org): move the People page onto the new design system (#9…
waleedlatif1 Nov 5, 2026
ab2a5c0
fix(assistant-actions): read a run that closes mid-review as nothing …
waleedlatif1 Nov 6, 2026
6d8c34f
feat(search): connect multiple accounts per integration (#9716)
waleedlatif1 Nov 6, 2026
79dbf14
improvement(logs): log each admission refusal once per window and dem…
waleedlatif1 Nov 6, 2026
7e79983
improvement(logs): move correlation ids from message tags into metada…
waleedlatif1 Nov 6, 2026
7ee2814
feat(integrations): add Jama and Flow workflows and live Search (#9723)
waleedlatif1 Nov 6, 2026
bba90ab
chore(contracts): sync the worker's steering v2 contract (#9727)
waleedlatif1 Nov 6, 2026
6e19240
fix(library): use the renamed self-hosted pricing row in comparison p…
waleedlatif1 Nov 6, 2026
d703873
fix(library): describe self-hosted Enterprise features accurately in …
waleedlatif1 Nov 6, 2026
eb4eb57
fix(search): preserve query attribution on fused results (#9730)
waleedlatif1 Nov 6, 2026
192e65a
fix(docs): align navigation and collapse integration fields (#9732)
waleedlatif1 Nov 6, 2026
09742f1
feat(gauge): add Gauge Chat integration (#9733)
waleedlatif1 Nov 6, 2026
0c7c1fb
feat(billing): AWS Marketplace SaaS contract registration and entitle…
waleedlatif1 Nov 6, 2026
c7ddcc7
feat(library): 6 Best AI Workflow Tools for Google Drive Document Aut…
waleedlatif1 Nov 6, 2026
17dc9c4
feat(library): Best AI Agents for Sales Call Summaries and CRM Update…
waleedlatif1 Nov 6, 2026
75c7489
feat(library): AI Agent Builders for Claude, Gemini, GPT, and Open Mo…
waleedlatif1 Nov 6, 2026
143960a
feat(library): Best AI Agents for Content Operations: Repurposing, Fa…
waleedlatif1 Nov 6, 2026
99a029d
feat(library): Best AI Agents for Microsoft 365: Outlook, Teams, Shar…
waleedlatif1 Nov 6, 2026
fb9163d
revert(org): hold the org view and People redesigns for #9687 (#9740)
waleedlatif1 Nov 6, 2026
29a75dd
feat(providers): add Thinking Machines (Inkling) provider (#9731)
myxamediyar Nov 6, 2026
37a8ad3
improvement(search): steer Confluence native queries to siteSearch fo…
waleedlatif1 Nov 6, 2026
ce3e0b6
fix(billing): withhold hosted Fal.ai video generation from free-plan …
waleedlatif1 Nov 6, 2026
d27970a
chore(contracts): sync the worker's steer disposition read contract (…
waleedlatif1 Nov 6, 2026
d22623b
fix(org): drop leftovers of the reverted search history source remova…
waleedlatif1 Nov 6, 2026
4f89a61
chore(agents): trim root CLAUDE.md by ablation; AGENTS.md links to it…
waleedlatif1 Nov 6, 2026
08e5c6a
chore(release): merge staging into the v0.9.45 release
waleedlatif1 Nov 6, 2026
743daea
fix(logs): log the webhook poll id and emitted event id under their o…
waleedlatif1 Nov 6, 2026
dd2a2cc
fix(billing): refuse Stripe checkout for AWS Marketplace-billed custo…
waleedlatif1 Nov 6, 2026
7e8f519
fix(billing): keep the Marketplace lookup retry stable across renders
waleedlatif1 Nov 6, 2026
6640187
chore(release): merge staging into the v0.9.45 release
waleedlatif1 Nov 6, 2026
4505fb9
fix(search): preserve provider guidance for personal connections (#9752)
waleedlatif1 Nov 6, 2026
5da9bbe
fix(release): include the AWS Marketplace checkout guard
waleedlatif1 Nov 6, 2026
373fa20
chore(release): include personal Search connection guidance
waleedlatif1 Nov 6, 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
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .agents/skills/add-enrichment/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ Because enrichments run on Sim's hosted keys by default, **every provider tool y

## Architecture (what you're plugging into)

- **`enrichments/types.ts`** — `EnrichmentConfig { id, name, description, icon, inputs, outputs, providers }` and `EnrichmentProvider { id, label, toolId, buildParams, projectFailure, mapOutput, isVerified? }` — `toolProvider` fills `projectFailure` with the standard HTTP projection; override it only for a provider whose failure shape is nonstandard (see `enrichments/provider-failures/`). Providers are **plain data** (no `@/tools` import) so the catalog stays client-safe.
- **`enrichments/providers.ts`** — `toolProvider(...)` (typed passthrough) plus shared input helpers: `str(v)`, `normalizeDomain(v)`, `firstNonEmpty(arr)`, `splitName(fullName)`, and `projectEnrichmentProviderFailure`.
- **`enrichments/types.ts`** — `EnrichmentConfig { id, name, description, icon, inputs, outputs, providers }` and `EnrichmentProvider { id, label, toolId, buildParams, projectFailure, mapOutput, isVerified? }` — `toolProvider` fills `projectFailure` with the standard HTTP projection; override it only for a provider whose failure shape is nonstandard. Providers are **plain data** (no `@/tools` import) so the catalog stays client-safe.
- **`enrichments/providers.ts`** — `toolProvider(...)` (typed passthrough) plus shared input helpers: `str(v)`, `normalizeDomain(v)`, `splitName(fullName)`, and `projectEnrichmentProviderFailure`.
- **`enrichments/run.ts`** — the server-only cascade runner. Calls `executeTool(provider.toolId, { ...params, _context: { workspaceId, userId } })`, accumulates hosted-key cost, returns the first non-empty mapped result. **You do not edit this** — it works for any registry entry.
- **`enrichments/registry.ts`** — `ENRICHMENT_REGISTRY` / `ALL_ENRICHMENTS` / `getEnrichment`. Register new entries here.

Expand Down Expand Up @@ -111,7 +111,7 @@ export { myEnrichment } from './my-enrichment'
```

Rules:
- Keep the file **client-safe**: import only `@sim/emcn/icons`, `@sim/utils/*`, `@/enrichments/providers`, `@/enrichments/provider-failures/*`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- Keep the file **client-safe**: import only `@sim/emcn/icons`, `@sim/utils/*`, `@/enrichments/providers`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- `buildParams` returns `null` when inputs are insufficient (provider skipped). `mapOutput` returns `null`/empty for a miss (falls through). Use `filterUndefined` when assembling optional tool params; coerce numbers explicitly (don't pass `''` to number outputs).
- Output `id`s are the keys `mapOutput` returns; output `name`s are the default column names (the user can rename them in the config).

Expand Down
3 changes: 2 additions & 1 deletion .agents/skills/add-trigger/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ export const {service}PollingHandler: PollingProviderHandler = {
await markWebhookSuccess(webhookId, logger)
return 'success'
} catch (error) {
logger.error(`[${requestId}] Error processing {service} webhook ${webhookId}:`, error)
logger.error('Error processing {service} webhook:', error)
Comment thread
waleedlatif1 marked this conversation as resolved.
Resolved
await markWebhookFailed(webhookId, logger)
return 'failure'
}
Expand All @@ -423,6 +423,7 @@ export const {service}PollingHandler: PollingProviderHandler = {
- First poll seeds state and emits nothing (avoids flooding with existing data)
- Use `pollingIdempotency.executeWithIdempotency(provider, key, callback)` for dedup
- Use `processPolledWebhookEvent(webhookData, workflowData, payload, requestId)` to fire the workflow
- Log through `ctx.logger` (already bound with `webhookId` and `pollId`, which equals `ctx.requestId`). Never add `{ requestId }` to a log line; the poll route's request context owns that field and overwrites it
- Use `updateWebhookProviderConfig(webhookId, partialConfig, logger)` for read-merge-write on state
- Use the latest server-side timestamp from API responses (not wall clock) to avoid clock skew

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/emil-design-eng/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: This skill encodes Emil Kowalski's philosophy on UI polish, compone

# Design Engineering

> **In this repo:** emcn owns component chrome (press states, tooltip/popover/menu animation, easing): apply these principles by proposing changes in `packages/emcn`, not per call site, and add no global CSS variables or keyframes (CLAUDE.md "Styling and EMCN"). Animation uses `import { motion } from 'framer-motion'`. Gate touch-unsafe hover with the `hover-hover:` Tailwind variant (plain `hover:` is intentionally ungated). `.claude/rules/sim-styling.md` and `.claude/rules/emcn-components.md` win on any conflict.
> **In this repo:** emcn owns component chrome (press states, tooltip/popover/menu animation, easing): apply these principles by proposing changes in `packages/emcn`, not per call site, and add no global CSS variables or keyframes (`.claude/rules/sim-styling.md`). Animation uses `import { motion } from 'framer-motion'`. Gate touch-unsafe hover with the `hover-hover:` Tailwind variant (plain `hover:` is intentionally ungated). `.claude/rules/sim-styling.md` and `.claude/rules/emcn-components.md` win on any conflict.
You are a design engineer with the craft sensibility. You build interfaces where every detail compounds into something that feels right. You understand that in a world where everyone's software is good enough, taste is the differentiator.

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/make-interfaces-feel-better/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Animate contextual icons with opacity, scale, and blur instead of toggling visib

### 8. Font Smoothing

Apply `-webkit-font-smoothing: antialiased` to the root layout on macOS for crisper text. In this repo, do not add root-level smoothing or other global styles (CLAUDE.md "Styling and EMCN"); raise it as a design-system proposal instead.
Apply `-webkit-font-smoothing: antialiased` to the root layout on macOS for crisper text. In this repo, do not add root-level smoothing or other global styles (`.claude/rules/sim-styling.md`); raise it as a design-system proposal instead.

### 9. Tabular Numbers

Expand Down
3 changes: 3 additions & 0 deletions .claude/rules/sim-styling.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ description: Tailwind CSS and styling conventions
paths:
- "apps/sim/**/*.tsx"
- "apps/sim/**/*.css"
- "packages/workflow-renderer/**/*.tsx"
---

# Styling Rules
Expand Down Expand Up @@ -89,6 +90,8 @@ Draw a line with a real `border-*` utility. Never hand-roll one as `shadow-[inse

## Chip Components (consumer usage)

The chip family is the canonical chrome: `ChipInput`, `ChipTextarea`, `ChipModal`/`ChipModalField`, `ChipSelect`/`ChipCombobox`/`ChipDropdown`, `ChipSwitch` (a segmented choice; a boolean toggle stays `Switch`), `ChipDatePicker`, `Chip`/`ChipLink`, `ChipTag`; `DropdownMenu` for context/action menus. Import components, `cn`, and tokens from the `@sim/emcn` barrel and icons from `@sim/emcn/icons`; never deep-import other component subpaths. Never update global styles; keep styling local to the component.

`ChipInput`, `ChipTextarea`, `ChipModal*` own their full chrome. Consumers describe intent through PROPS; they never re-style the chrome. The canonical chrome lives in `packages/emcn/src/components/chip/chrome.ts` (all tokens are re-exported from the `@sim/emcn` barrel — no subpath import needed) — never hand-roll `rounded-lg`/`border`/`bg-[var(--surface-5)]`/`h-[30px]`/`px-2`/`text-sm`/focus rings.

### Props over className
Expand Down
1 change: 1 addition & 0 deletions .claude/rules/sim-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ paths:
- "**/*.test.tsx"
- "**/*.integration.ts"
- "**/e2e/**"
- "apps/sim/scripts/test-*-e2e.ts"
---

# Testing
Expand Down
4 changes: 3 additions & 1 deletion .cursor/rules/sim-styling.mdc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: "Tailwind CSS and styling conventions"
globs: ["apps/sim/**/*.tsx","apps/sim/**/*.css"]
globs: ["apps/sim/**/*.tsx","apps/sim/**/*.css","packages/workflow-renderer/**/*.tsx"]
---

<!-- Generated from .claude/rules/sim-styling.md by `bun run skills:sync`. Edit the source, not this file. -->
Expand Down Expand Up @@ -89,6 +89,8 @@ Draw a line with a real `border-*` utility. Never hand-roll one as `shadow-[inse

## Chip Components (consumer usage)

The chip family is the canonical chrome: `ChipInput`, `ChipTextarea`, `ChipModal`/`ChipModalField`, `ChipSelect`/`ChipCombobox`/`ChipDropdown`, `ChipSwitch` (a segmented choice; a boolean toggle stays `Switch`), `ChipDatePicker`, `Chip`/`ChipLink`, `ChipTag`; `DropdownMenu` for context/action menus. Import components, `cn`, and tokens from the `@sim/emcn` barrel and icons from `@sim/emcn/icons`; never deep-import other component subpaths. Never update global styles; keep styling local to the component.

`ChipInput`, `ChipTextarea`, `ChipModal*` own their full chrome. Consumers describe intent through PROPS; they never re-style the chrome. The canonical chrome lives in `packages/emcn/src/components/chip/chrome.ts` (all tokens are re-exported from the `@sim/emcn` barrel — no subpath import needed) — never hand-roll `rounded-lg`/`border`/`bg-[var(--surface-5)]`/`h-[30px]`/`px-2`/`text-sm`/focus rings.

### Props over className
Expand Down
2 changes: 1 addition & 1 deletion .cursor/rules/sim-testing.mdc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: "Test layers, naming, and Vitest mechanics for Sim"
globs: ["**/*.test.ts","**/*.test.tsx","**/*.integration.ts","**/e2e/**"]
globs: ["**/*.test.ts","**/*.test.tsx","**/*.integration.ts","**/e2e/**","apps/sim/scripts/test-*-e2e.ts"]
---

<!-- Generated from .claude/rules/sim-testing.md by `bun run skills:sync`. Edit the source, not this file. -->
Expand Down
Loading
Loading