# @lit-protocol/vincent-scaffold-sdk

Shared build configuration and utilities for Vincent tools and policies.

## Installation

```bash
npm install --save-dev @lit-protocol/vincent-scaffold-sdk
```

## Usage

### ESBuild Configuration

Create an `esbuild.config.js` file in your project:

```javascript
const esbuild = require("esbuild");
const {
  baseConfig,
  getPlugins,
  logBuildResults,
} = require("@lit-protocol/vincent-scaffold-sdk/esbuild-config");

(async () => {
  try {
    await esbuild
      .build({
        ...baseConfig,
        entryPoints: ["./src/lib/lit-action.ts"],
        outdir: "./src/generated/",
        plugins: getPlugins("tool"), // or 'policy'
      })
      .then(logBuildResults);

    console.log("✅ Build completed successfully");
  } catch (e) {
    console.error("❌ Build failed:", e);
    process.exit(1);
  }
})();
```

### TypeScript Configuration

This package expects a `tsconfig.vincent.json` file in your project root. See the included example files:

- `tsconfig.lib.example.json` - Example project-specific configuration
- `tsconfig.base.example.json` - Example base configuration

### Exports

- `@lit-protocol/vincent-scaffold-sdk/esbuild-config` - ESBuild configuration and utilities
- `@lit-protocol/vincent-scaffold-sdk/deno-fetch-shim` - Deno fetch shim for browser compatibility
- `@lit-protocol/vincent-scaffold-sdk/tsconfig` - Base TypeScript configuration

### API

#### `baseConfig`

Base ESBuild configuration object with sensible defaults for Vincent tools/policies.

#### `getPlugins(type: 'tool' | 'policy')`

Returns an array of ESBuild plugins configured for the specified type.

#### `logBuildResults(result)`

Utility function to log build output sizes in a formatted way.

#### `ensureDirectoryExistence(filePath)`

Utility function to ensure a directory exists before writing files.

## Requirements

- Node.js >= 16.0.0
- @lit-protocol/vincent-tool-sdk (peer dependency)
