open-index/open-npm huggingface dataset:
npm package: @frostfinance-libs/uikit
Description: Set of UI components for pancake projects
Latest version: 1.0.5

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)
npm package: @frostfrazer/auditthread
Description: Track AI spend across OpenAI, Anthropic, and Google — in one line.
Author: AuditThread
Latest version: 0.1.1

# auditthread

Track AI spend across OpenAI, Anthropic, and Google — in one line.

## Install

```bash
npm install @frostfrazer/auditthread
```

## Quick start

```ts
import { AuditThread } from 'auditthread'
import OpenAI from 'openai'
import Anthropic from '@anthropic-ai/sdk'

const at = new AuditThread({ apiKey: 'at_your_key' })

// ── OpenAI ─────────────────────────────────────────────
const openai = at.wrapOpenAI(new OpenAI({ apiKey: process.env.OPENAI_API_KEY }))

// All calls tracked automatically from here
const res = await openai.chat.completions.create({
  model: 'gpt-4o',
  messages: [{ role: 'user', content: 'Hello' }],
})

// ── Anthropic ──────────────────────────────────────────
const anthropic = at.wrapAnthropic(new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }))

const msg = await anthropic.messages.create({
  model: 'claude-sonnet-4-5-20250929',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Hello' }],
})

// ── Google Gemini ──────────────────────────────────────
import { GoogleGenerativeAI } from '@google/generative-ai'

const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY!)
const model = at.wrapGemini(
  genAI.getGenerativeModel({ model: 'gemini-1.5-flash' }),
  'gemini-1.5-flash'
)

// ── Manual tracking (any provider) ────────────────────
await at.track({
  provider: 'mistral',
  model: 'mistral-large-latest',
  prompt_tokens: 500,
  completion_tokens: 200,
})
```

## Options

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | required | Your `at_...` key from the dashboard |
| `baseUrl` | `string` | `https://app.auditthread.com/api/spend/ingest` | Custom ingest endpoint |
| `agentId` | `string` | — | Tag all events with an agent name |
| `mode` | `"immediate" \| "batch"` | `"immediate"` | Send on every call or queue and flush |
| `batchIntervalMs` | `number` | `5000` | Flush interval in batch mode |
| `batchSize` | `number` | `50` | Max events per flush |
| `debug` | `boolean` | `false` | Log to console |

## Per-agent tagging

```ts
// Default agent for all calls
const at = new AuditThread({ apiKey: 'at_...', agentId: 'email-responder' })

// Override per wrapper
const openai = at.wrapOpenAI(new OpenAI(...), { agentId: 'code-assistant' })
```

## Batch mode (high-throughput)

```ts
const at = new AuditThread({
  apiKey: 'at_...',
  mode: 'batch',
  batchIntervalMs: 10_000,
  batchSize: 100,
})

// Flush manually before shutdown
await at.flush()
at.destroy()
```