Skip to main content

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.data.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