Skip to main content

API

Use Takumo programmatically in Node.js applications.

Installation

npm install github:SirTingling/takumo

Basic example

import { createSession } from '@takumo/aegis';
import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic();

// 1. Create a session
const session = createSession();

// 2. Tokenize your code (example values)
const sourceCode = `
  const db = postgres("postgres://admin:examplepass@prod:5432/app");
  const stripe = new Stripe("sk_test_EXAMPLEKEY");
`;

const { content: tokenizedCode, detections } = session.tokenize(sourceCode, 'config.ts');

console.log(`Tokenized ${detections.length} secrets`);

// 3. Send to Claude (secrets are now safe)
const response = await anthropic.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 4096,
  messages: [{
    role: 'user',
    content: `Add error handling to this code:\n\n${tokenizedCode}`
  }]
});

const aiOutput = response.content[0].text;

// 4. Rehydrate (restore real secrets)
const { content: finalCode, rehydratedCount } = session.rehydrate(aiOutput);

console.log(`Restored ${rehydratedCount} secrets`);
console.log(finalCode);  // Has real secrets again

Core functions

FunctionDescription
createSession()Create a new session with empty vault
session.tokenize()Detect and tokenize secrets in code
session.rehydrate()Restore tokens to original secrets
session.getReport()Get detection statistics

TypeScript types

import {
  createSession,
  Session,
  TokenizeResult,
  RehydrateResult,
  Detection,
  TakumoError
} from '@takumo/aegis';

Error handling

import { createSession, TakumoError } from '@takumo/aegis';

try {
  const session = createSession();
  const result = session.tokenize(code, 'file.ts');
} catch (error) {
  if (error instanceof TakumoError) {
    console.error('Takumo error:', error.message);
    console.error('Code:', error.code);  // e.g., 'PARSE_ERROR', 'INVALID_INPUT'
  } else {
    throw error;
  }
}