<results>
<result contentUrl="/repos/remorses/fumabase/main/files/MEMORY.md?start=16">
MEMORY.md

...state in the loader.

## Spiceflow loader TYPE INFERENCE GAP (important)

`.loader('/*', async () => {...})` correctly stores the return type in
`App['_types']['Metadata']['loaderData']` —...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/example/src/custom-virtual-modules.mdx?start=10">
example/src/custom-virtual-modules.mdx

...to the docs.",
  "quickstart": "# Quickstart\\n\\nGet started in 5 minutes.",
}

export async function getMdxSlugs() {
  return Object.keys(pages)
}

export async function getMdxSource(slug)...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/example/src/index.mdx?start=25">
example/src/index.mdx

...and it runs in your browser.

```ts title="automate.ts"
import { chromium } from 'playwright'

async function automateWorkflow() {
  const browser = await chromium.connectOverCDP('http://localhost:...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/example/src/network.mdx?start=7">
example/src/network.mdx

...response bodies before the page receives them.

```ts
await page.route('**/api/config', async (route) => {
  const response = await route.fetch()
  const json = await response.json()
 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/cli-reference/run-and-resume.mdx?start=11">
integration-tests/fixtures/realworld-libretto/cli-reference/run-and-resume.mdx

... theme={null}
import { workflow, pause } from "libretto";

export default workflow("myWorkflow", async (ctx, input) => {
  const { session, page } = ctx;

  await page.goto("https://linkedin.com");

...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/get-started/automation-and-bot-detection.mdx?start=41">
integration-tests/fixtures/realworld-libretto/get-started/automation-and-bot-detection.mdx

...   ```typescript  theme={null}
    const capturedData: any[] = [];

    page.on('response', async (response) => {
      const url = response.url();
      if (url.includes('/api/search/results'))...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/get-started/installation.mdx?start=94">
integration-tests/fixtures/realworld-libretto/get-started/installation.mdx

...   import { workflow } from "libretto";

    export default workflow("scrape-page", async ({ page }) => {
      await page.goto("https://example.com");
      const title = await...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/library-api/ai-extraction.mdx?start=7">
integration-tests/fixtures/realworld-libretto/library-api/ai-extraction.mdx

...agent's context window free of raw HTML.

### `extractFromPage()`

```typescript theme={null}
async function extractFromPage<T extends z.ZodType>(
  options: ExtractOptions<T>,
): Promise<z.infer<...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/library-api/file-downloads.mdx?start=11">
integration-tests/fixtures/realworld-libretto/library-api/file-downloads.mdx

...is registered **before** the click so the event is never missed.

```typescript theme={null}
async function downloadViaClick(
  page: Page,
  selector: string,
  options?: DownloadViaClickOptions...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/library-api/network-requests.mdx?start=9">
integration-tests/fixtures/realworld-libretto/library-api/network-requests.mdx

...that arise when making the same request from Node.js directly.

```typescript theme={null}
async function pageRequest<T extends z.ZodType | undefined = undefined>(
  page: Page,
  config:...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/library-api/workflow.mdx?start=43">
integration-tests/fixtures/realworld-libretto/library-api/workflow.mdx

...pause } from "libretto";

export default workflow<{ query: string }, string[]>(
  "main",
  async (ctx, input) => {
    const { page } = ctx;

    await page.goto("https://example.com/search");
...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/workflow-guides/debugging-workflows.mdx?start=103">
integration-tests/fixtures/realworld-libretto/workflow-guides/debugging-workflows.mdx

...{ workflow, pause } from "libretto";

export default workflow(
  "eligibilityCheck",
  async (ctx, input) => {
    const { session, page } = ctx;

    await page.goto("https://availity.com"...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-libretto/workflow-guides/one-shot-workflow-generation.mdx?start=54">
integration-tests/fixtures/realworld-libretto/workflow-guides/one-shot-workflow-generation.mdx

...string;
      }>;
    };

    export default workflow<{}, Output>(
      "freeStuff",
      async (ctx): Promise<Output> => {
        const { page } = ctx;

        await page.goto("https://sfba...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/checkout/embed.mdx?start=98">
integration-tests/fixtures/realworld-polar/features/checkout/embed.mdx

... "@polar-sh/checkout/embed";

// Open checkout programmatically when needed
const openCheckout = async () => {
  const checkoutLink = "__CHECKOUT_LINK__";
  const theme = "light"; // or 'dark'

 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/checkout/session.mdx?start=48">
integration-tests/fixtures/realworld-polar/features/checkout/session.mdx

...polar = new Polar({
  accessToken: process.env["POLAR_ACCESS_TOKEN"] ?? "",
});

async function run() {
  const checkout = await polar.checkouts.create({
    products:...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/customer-portal.mdx?start=15">
integration-tests/fixtures/realworld-polar/features/customer-portal.mdx

...polar = new Polar({
  accessToken: process.env["POLAR_ACCESS_TOKEN"] ?? "",
});

async function run() {
  const result = await polar.customerSessions.create({
    customerId:...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/integrations/affonso.mdx?start=36">
integration-tests/fixtures/realworld-polar/features/integrations/affonso.mdx

...script to the `<head>` tag of your website:

```html
<!-- Place in <head> tag -->
<script
  async
  defer
  src="https://affonso.io/js/pixel.min.js"
  data-affonso="YOUR_AFFONSO_PROGRAM_ID"
 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/delta-time-strategy.mdx?start=26">
integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/delta-time-strategy.mdx

... .strategy(new DeltaTimeStrategy(nowResolver))
  .ingest("execution-time");

export async function GET(request: Request) {
  try {
    // Get the wrapped start clock function
    //...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/llm-strategy.mdx?start=25">
integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/llm-strategy.mdx

..."usd" })) // Optional: Set the cost of the LLM usage
  .ingest("openai-usage");

export async function POST(req: Request) {
  const { prompt }: { prompt: string } = await req.json();

  //...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/s3-strategy.mdx?start=29">
integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/s3-strategy.mdx

...env.POLAR_ACCESS_TOKEN })
  .strategy(new S3Strategy(s3Client))
  .ingest("s3-uploads");

export async function POST(request: Request) {
  try {
    // Get the wrapped S3 Client
    // Pass Customer...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/stream-strategy.mdx?start=22">
integration-tests/fixtures/realworld-polar/features/usage-based-billing/ingestion-strategies/stream-strategy.mdx

...})
  .strategy(new StreamStrategy(myReadstream))
  .ingest("my-stream");

export async function GET(request: Request) {
  try {

    // Get the wrapped stream
    // Pass Customer Id...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/guides/encore.mdx?start=58">
integration-tests/fixtures/realworld-polar/guides/encore.mdx

...const checkout = api.raw(
  { expose: true, path: "/checkout", method: "GET" },
  async (req, resp) => {
    const url = new URL(req.url!, `http://${req.headers.host}`);
    const...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/guides/grant-meter-credits-after-purchase.mdx?start=171">
integration-tests/fixtures/realworld-polar/guides/grant-meter-credits-after-purchase.mdx

...const POST = Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET,
  onOrderPaid: async (order) => {
    // Check if this is the product we want to grant credits for
    const...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/guides/grant-meter-credits-before-purchase.mdx?start=81">
integration-tests/fixtures/realworld-polar/guides/grant-meter-credits-before-purchase.mdx

... "@polar-sh/sdk";

const polar = new Polar({
  accessToken: process.env.POLAR_ACCESS_TOKEN,
});

async function grantCredits(customerId: string, credits: number) {
  await polar.events.ingest({
   ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/guides/nextjs.mdx?start=42">
integration-tests/fixtures/realworld-polar/guides/nextjs.mdx

...const POST = Webhooks({
	webhookSecret: process.env.POLAR_WEBHOOK_SECRET,
	onPayload: async (payload) => // Handle payload...
});
```

The webhook event is now verified and you can...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/guides/seat-based-pricing.mdx?start=78">
integration-tests/fixtures/realworld-polar/guides/seat-based-pricing.mdx

...below omits verification for brevity.
</Warning>

```typescript
app.post('/webhooks/polar', async (req, res) => {
  // Verify webhook signature first — see webhook docs
  const event =...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/astro.mdx?start=44">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/astro.mdx

...:env/server"

export const POST = Webhooks({
  webhookSecret: POLAR_WEBHOOK_SECRET,
  onPayload: async (payload) => /** Handle payload */,
})
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/better-auth.mdx?start=72">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/better-auth.mdx

... ++]
    deleteUser: {
      // [!code ++]
      enabled: true, // [!code ++]
      afterDelete: async (user, request) => {
        // [!code ++]
        await polar.customers.deleteExternal({
     ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/deno.mdx?start=62">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/deno.mdx

...   Webhooks({
        webhookSecret: Deno.env.get('POLAR_WEBHOOK_SECRET'),
        onPayload: async (payload) => /** Handle payload */,
    })
);
```

### Payload Handlers

The Webhook handler...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/elysia.mdx?start=101">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/elysia.mdx

...t('/polar/webhooks', Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Handle payload */,
}))
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/express.mdx?start=103">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/express.mdx

...t('/polar/webhooks', Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Handle payload */,
}))
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/fastify.mdx?start=95">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/fastify.mdx

...t('/polar/webhooks', Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Handle payload */,
}))
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/hono.mdx?start=101">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/hono.mdx

...t('/polar/webhooks', Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Handle payload */,
}))
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/nextjs.mdx?start=47">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/nextjs.mdx

...const POST = Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => {
    // Handle the payload
    // No need to return an acknowledge response
 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/nuxt.mdx?start=53">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/nuxt.mdx

... const webhooksHandler = Webhooks({
    webhookSecret: polarWebhookSecret,
    onPayload: async (payload) => {
      // Handle the payload
      // No need to return an acknowledge response
 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/remix.mdx?start=45">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/remix.mdx

...const action = Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET!,
  onPayload: async (payload) => /** Handle payload */,
})
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/supabase.mdx?start=84">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/supabase.mdx

...h/supabase';

export const POST = Webhooks({
  webhookSecret: POLAR_WEBHOOK_SECRET,
  onPayload: async (payload) => /** Handle payload */,
})
```

### Payload Handlers

The Webhook handler also...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/sveltekit.mdx?start=44">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/sveltekit.mdx

...const POST = Webhooks({
  webhookSecret: process.env.POLAR_WEBHOOK_SECRET,
  onPayload: async (payload) => {
    // Handle the payload
    console.log(payload)
  },
});
```

### Payload...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/tanstack-start.mdx?start=48">
integration-tests/fixtures/realworld-polar/integrate/sdk/adapters/tanstack-start.mdx

...{
      GET: CustomerPortal({
        accessToken: POLAR_ACCESS_TOKEN,
        getCustomerId: async (request: Request) => "", // Function to resolve a Polar Customer ID
        returnUrl:...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/python.mdx?start=2">
integration-tests/fixtures/realworld-polar/integrate/sdk/python.mdx

... SDK"
sidebarTitle: "Python"
icon: python
---

Fully type-hinted and allows both synchronous and asynchronous usage, thanks to [HTTPX](https://www.python-httpx.org/).
Under the hood, schemas are...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/sdk/typescript.mdx?start=38">
integration-tests/fixtures/realworld-polar/integrate/sdk/typescript.mdx

...v.POLAR_ACCESS_TOKEN,
  server: process.env.POLAR_MODE || 'sandbox' // sandbox or production
})

async function run() {
  const result = await polar.users.benefits.list({})
  for await (const page...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/webhooks/delivery.mdx?start=160">
integration-tests/fixtures/realworld-polar/integrate/webhooks/delivery.mdx

...implementing your webhook handler to queue a background worker task to handle the
payload asynchronously.

### Endpoint Disabling

Webhook endpoints are automatically disabled after **10...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/integrate/webhooks/endpoints.mdx?start=1">
integration-tests/fixtures/realworld-polar/integrate/webhooks/endpoints.mdx

---
title: "Setup Webhooks"
sidebarTitle: "Setup an endpoint"
description: "Get notifications asynchronously when events occur instead of
having to poll for updates"
---

Our webhook...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/integration-tests/fixtures/realworld-polar/merchant-of-record/account-reviews.mdx?start=5">
integration-tests/fixtures/realworld-polar/merchant-of-record/account-reviews.mdx

...payout even further and without concern of any issues or delays.

### Continuous reviews (Async)

We continuously monitor all transactions across our platform to proactively prevent fraud. In...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/vite/CHANGELOG.md?start=266">
vite/CHANGELOG.md

...CustomTabProvider = {
     name: 'my-blog',
     static: false,
     ttlMs: 60_000,

     async generate({ tab }) {
       const articles = await fetchArticles()
       return {
        ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/ai/chat-widget.mdx?start=275">
website/src/pages/docs/ai/chat-widget.mdx

... name: 'get_time',
  description: 'Get the current date and time.',
  input: z.object({}),
  async run() {
    return { time: new Date().toISOString() }
  },
})
```

Pass tools to the widget via...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/api-docs/openapi.mdx?start=170">
website/src/pages/docs/api-docs/openapi.mdx

...['Projects'],
    },
    response: { 200: z.object({ projects: z.array(z.string()) }) },
    async handler() {
      return { projects: [] }
    },
  })

  // This route is hidden from the spec
...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/custom-entry.mdx?start=3">
website/src/pages/docs/custom-entry.mdx

...app = new Spiceflow()
  // your middleware runs on every request, including docs pages
  .use(async ({ request }, next) => {
    const res = await next()
    if (res) res.headers.set('x-custom-hea...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/deploy/base-path.mdx?start=72">
website/src/pages/docs/deploy/base-path.mdx

...DOCS_URL = 'https://docs-base-my-docs-remorses-site.holocron.so'

module.exports = {
  async rewrites() {
    return [
      {
        source: '/docs',
        destination: `${DOCS_URL}/doc...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/deploy/multi-tenant.mdx?start=3">
website/src/pages/docs/deploy/multi-tenant.mdx

...data chunk + page chunks
const result = await generateHolocronData({
  config,
  getMdxSource: async (slug) => {
    return fs.readFileSync(`./tenant-a/pages/${slug}.mdx`, 'utf-8')
  },
  slugs,
 ...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/mcp-tools.mdx?start=177">
website/src/pages/docs/mcp-tools.mdx

...| `execution.taskSupport: "optional" \| "required"` | Tool supports long-running async tasks |

Hover over any badge to see its description.

## Custom base path

By default,...
</result>

<result contentUrl="/repos/remorses/fumabase/main/files/website/src/pages/docs/spiceflow.mdx?start=3">
website/src/pages/docs/spiceflow.mdx

... // API routes
  .get('/api/health', () => ({ status: 'ok' }))
  .post('/api/webhook', async ({ request }) => {
    const body = await request.json()
    // process webhook...
    return {...
</result>
</results>

Note: By default, only markdown files (.md, .mdx) are searched. To search other file types, use a glob parameter like ?glob=**/* or ?glob=**/*.ts