Skip to content

Commit b86c604

Browse files
Bill LeoutsakosBill Leoutsakos
authored andcommitted
Merge remote-tracking branch 'origin/staging' into feat/plaid-integration
# Conflicts: # apps/sim/lib/integrations/integrations.json # apps/sim/tools/error-extractors.ts # apps/sim/tools/generated/tool-ids.ts # apps/sim/tools/generated/tool-metadata.ts # apps/sim/tools/generated/tool-outputs.ts # scripts/check-api-validation-contracts.ts
2 parents eca185c + 1b30611 commit b86c604

1,007 files changed

Lines changed: 90607 additions & 15252 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/babysit/SKILL.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,21 @@ round. Always check both conditions freshly after every push.
134134
When the loop ends, summarize: how many rounds it took, what was actually fixed (one line each),
135135
what was pushed back on as a false positive and why, and the final Greptile score / thread count.
136136

137+
## Public-repo hygiene
138+
139+
Every reply, comment and commit you post here is public and permanent, and review bots quote
140+
your replies back so a leak propagates. Before each post, strip anything that ties the change to
141+
a tenant: customer/company names, workspace/user/org/KB/connector IDs, emails, tenant hostnames,
142+
verbatim document/sheet/folder names, log lines, and per-tenant DB output. Cite the mechanism and
143+
aggregate numbers instead — see `/ship`'s "What to Omit" for the full list and the pre-publish
144+
grep. Triaging a finding often means pasting evidence you gathered from prod; that is exactly the
145+
moment this gets violated. Check before posting, not after: editing a comment does not unsend its
146+
notification email.
147+
137148
## Hard rules
138149

139150
- Never post the two re-review mentions as a single combined comment.
151+
- Never paste prod evidence into a reply without scrubbing it first (see above).
140152
- Never resolve a thread without replying to it first.
141153
- Never fix a finding with a hacky workaround — if the clean fix isn't obvious, find the sibling
142154
pattern elsewhere in the codebase solving the same class of problem and match it.

.agents/skills/emcn-design-review/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Use CSS variable pattern (`text-[var(--text-primary)]`), never Tailwind semantic
3939
**Surfaces**: `--bg`, `--surface-1` through `--surface-7`, `--surface-hover`, `--surface-active`
4040
**Borders**: `--border`, `--border-1`, `--border-muted`
4141
**Brand/accent**: `--brand-secondary`, `--brand-accent`
42-
**Z-Index**: `--z-dropdown` (100), `--z-modal` (200), `--z-popover` (300), `--z-tooltip` (400), `--z-toast` (500)
42+
**Z-Index**: `--z-dropdown` (100), `--z-toast` (150), `--z-modal` (200), `--z-popover` (300), `--z-tooltip` (400), `--z-takeover` (500), `--z-shell-gate` (600)
4343
**Shadows**: `shadow-subtle`, `shadow-medium`, `shadow-overlay`, `shadow-card`
4444
**Badges**: `--badge-*` semantic families (success/error/gray/blue/purple/orange/amber/teal/cyan/pink, each with `-bg`/`-text`)
4545

.agents/skills/migrate-application-operation/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ Run at minimum:
317317
```bash
318318
bunx vitest run <focused test files>
319319
bunx biome check <changed source and test files>
320-
bunx turbo run type-check --filter=sim --filter=@sim/auth
320+
bunx turbo run type-check --filter=@sim/app --filter=@sim/auth
321321
bun run check:api-validation:strict
322322
git diff --check
323323
```

.agents/skills/ship/SKILL.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,20 @@ chore(scope): description for maintenance
102102

103103
## What to Omit
104104

105-
The repo is public. Keep the title and description to the code change and its reasoning — never:
105+
The repo is public. **Everything you publish — title, description, commit messages, and every later comment — must stand on its own without the incident that produced it.** Never include:
106106

107-
- Customer, company, or user names; workspace/user/org IDs; email addresses
107+
- Customer, company, or user names; workspace/user/org/KB/connector IDs; email addresses
108108
- Prod or staging operational data: log lines, DB rows, metrics, timestamps, incident details, canary/alert output
109-
- Infrastructure specifics: hostnames, ARNs, internal URLs, env var values, secret names
109+
- Infrastructure specifics: hostnames (incl. tenant subdomains), ARNs, internal URLs, env var values, secret names
110+
- Verbatim customer content: file names, document titles, sheet/column names, folder paths
110111

111-
Describe the bug by its mechanism, not by how you found it. "Expired OAuth credentials fail to refresh in the worker" — not "the Sheets canary failed at 16:31Z for workspace abc-123".
112+
Describe the bug by its mechanism, not by how you found it. "Expired OAuth credentials fail to refresh in the worker" — not "the Sheets canary failed at 16:31Z for workspace abc-123". Aggregate counts are fine once detached from the tenant ("1,379 PDFs failed"); the same number attributed to a named customer is not. Replace real examples with placeholders (`<real sheet name>`) rather than cutting them — the illustration is usually the useful part.
113+
114+
**Scrub before publishing, not after** — a leak is public the instant it posts, and editing later does not unsend the notification email. This applies to every PR you open, including ones created directly with `gh pr create` rather than through this skill. Grep the title, body, and `git log origin/staging..HEAD` before publishing:
115+
116+
```bash
117+
grep -niE 'customer-or-company-name|@[a-z0-9.-]+\.(com|io|ai)|[0-9a-f]{8}-[0-9a-f]{4}-|\.sharepoint\.com|arn:aws|https?://[a-z0-9.-]*\.internal'
118+
```
112119

113120
## PR Description Format
114121

apps/docs/app/[lang]/[[...slug]]/page.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type React from 'react'
2+
import { highlight } from 'fumadocs-core/highlight'
23
import type { Root } from 'fumadocs-core/page-tree'
34
import { findNeighbour } from 'fumadocs-core/page-tree'
45
import type { ApiPageProps } from 'fumadocs-openapi/ui'
@@ -17,6 +18,7 @@ import { Heading } from '@/components/ui/heading'
1718
import { ResponseSection } from '@/components/ui/response-section'
1819
import { i18n } from '@/lib/i18n'
1920
import { getApiSpecContent, getAuthenticatedCodeSamples, openapi } from '@/lib/openapi'
21+
import { simShikiOptions } from '@/lib/shiki-theme'
2022
import { type PageData, source } from '@/lib/source'
2123
import { DOCS_BASE_URL } from '@/lib/urls'
2224

@@ -69,9 +71,31 @@ function stripLocalePrefix(url: string, lang: string): string {
6971
return url
7072
}
7173

74+
/**
75+
* Renders the API reference's request and response samples through the docs' own `CodeBlock`
76+
* rather than fumadocs-openapi's built-in one, so those blocks get the emcn copy control
77+
* instead of fumadocs' lucide clipboard. Mirrors the default renderer — same `highlight` call,
78+
* same `Pre` component, same `my-0` — differing only in which shell wraps the result.
79+
*/
80+
async function ApiCodeBlock({ lang, code }: { lang: string; code: string }) {
81+
return (
82+
<CodeBlock className='my-0'>
83+
{await highlight(code, { lang, ...simShikiOptions, components: { pre: Pre } })}
84+
</CodeBlock>
85+
)
86+
}
87+
7288
const APIPage = createAPIPage(openapi, {
89+
renderCodeBlock: (props) => <ApiCodeBlock {...props} />,
7390
playground: { enabled: false },
7491
generateCodeSamples: getAuthenticatedCodeSamples,
92+
/**
93+
* fumadocs-openapi highlights its request and response samples through its own Shiki
94+
* instance, not the MDX pipeline, so it does not inherit `source.config.ts`. Left alone,
95+
* every API reference page renders `github-light` / `github-dark` while the rest of the docs
96+
* render the platform palette.
97+
*/
98+
shikiOptions: simShikiOptions,
7599
client: {
76100
operation: { APIExampleSelector },
77101
},

apps/docs/app/[lang]/layout.tsx

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import type { ReactNode } from 'react'
22
import { defineI18nUI } from 'fumadocs-ui/i18n'
33
import { DocsLayout } from 'fumadocs-ui/layouts/docs'
44
import { RootProvider } from 'fumadocs-ui/provider/next'
5-
import { Geist_Mono, Inter } from 'next/font/google'
6-
import Script from 'next/script'
5+
import { Inter } from 'next/font/google'
76
import { ThemeProvider } from 'next-themes'
87
import {
98
SidebarFolder,
@@ -26,12 +25,6 @@ const inter = Inter({
2625
display: 'swap',
2726
})
2827

29-
const geistMono = Geist_Mono({
30-
subsets: ['latin'],
31-
variable: '--font-geist-mono',
32-
display: 'swap',
33-
})
34-
3528
const { provider } = defineI18nUI(i18n, {
3629
translations: {
3730
en: {
@@ -86,16 +79,11 @@ export default async function Layout({ children, params }: LayoutProps) {
8679
}
8780

8881
return (
89-
<html
90-
lang={lang}
91-
className={`${inter.variable} ${geistMono.variable} ${season.variable}`}
92-
suppressHydrationWarning
93-
>
82+
<html lang={lang} className={`${inter.variable} ${season.variable}`} suppressHydrationWarning>
9483
<head>
95-
<Script
84+
<script
9685
id='website-json-ld'
9786
type='application/ld+json'
98-
strategy='beforeInteractive'
9987
dangerouslySetInnerHTML={{ __html: serializeJsonLd(structuredData) }}
10088
/>
10189
</head>

0 commit comments

Comments
 (0)