Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.emergence.ai/llms.txt

Use this file to discover all available pages before exploring further.

TypeScript SDK

The CRAFT TypeScript SDK provides fully typed clients for all platform APIs, with support for Node.js and browser environments.

Installation

# Configure the @emergence-ai npm scope
echo "@emergence-ai:registry=https://us-central1-npm.pkg.dev/aip-artifacts-store/aip-npm/" >> .npmrc

# Install all SDKs
npm install @emergence-ai/em-runtime-governance-sdk \
            @emergence-ai/em-runtime-assets-sdk \
            @emergence-ai/em-runtime-utils-sdk

Quick Start

Configure the Client

import {
  Configuration,
  OrganizationsApi,
  ProjectsApi,
} from '@emergence-ai/em-runtime-governance-sdk';

const config = new Configuration({
  basePath: 'https://your-instance.emergence.ai/governance',
  accessToken: 'your-jwt-token',
});

const orgsApi = new OrganizationsApi(config);
const projectsApi = new ProjectsApi(config);

List Organizations

const { data: orgs } = await orgsApi.listOrganizations();
orgs.items.forEach(org => {
  console.log(`${org.id}: ${org.name}`);
});

Create a Project

const { data: project } = await projectsApi.createProject({
  projectCreate: {
    name: 'My Project',
    description: 'Data analysis workspace',
  },
});
console.log(`Created project: ${project.id}`);

Create a Data Connection

import {
  Configuration as AssetsConfig,
  DataApi,
} from '@emergence-ai/em-runtime-assets-sdk';

const assetsConfig = new AssetsConfig({
  basePath: 'https://your-instance.emergence.ai/assets',
  accessToken: 'your-jwt-token',
});

const dataApi = new DataApi(assetsConfig);
const { data: connection } = await dataApi.createDataConnection({
  dataConnectionCreate: {
    name: 'analytics-db',
    connectionType: 'postgres',
    description: 'Analytics PostgreSQL database',
  },
});

Error Handling

import { AxiosError } from 'axios';

try {
  const { data } = await orgsApi.listOrganizations();
} catch (error) {
  if (error instanceof AxiosError) {
    switch (error.response?.status) {
      case 401:
        console.error('Token expired — refresh and retry');
        break;
      case 403:
        console.error('Insufficient permissions');
        break;
      default:
        console.error(`API error: ${error.response?.status}`);
    }
  }
}

Token Refresh Pattern

import { Configuration } from '@emergence-ai/em-runtime-governance-sdk';

// Dynamic token provider
const config = new Configuration({
  basePath: 'https://your-instance.emergence.ai/governance',
  accessToken: async () => {
    // Fetch fresh token from Keycloak
    const token = await refreshKeycloakToken();
    return token;
  },
});

Package Reference

PackageCoversScope
@emergence-ai/em-runtime-governance-sdkOrganizations, Projects, Permissionsgovernance
@emergence-ai/em-runtime-assets-sdkArtifacts, Data Connections, Files, Modelsassets
@emergence-ai/em-runtime-utils-sdkData Catalog, Scheduling, Context Packs, Memoriesutils

Next Steps

Python SDK

Python client guide

API Reference

Interactive API playground