1.0.21 • Published 8 months ago

mindforge v1.0.21

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

mindforge-ts

mindforge.ai

This package contains TypeScript clients and utilties for interacting with the Mindforge API. Specifically, there's a MindforgeServerClient for interactions with our REST API (e.g. creating an NPC, deleting a capability), and a MindforgeBrowserClient for joining live sessions in your client-side code.

Installation

To install the Mindforge client, use your preferred package manager:

# NPM
npm install mindforge

# Yarn
yarn add mindforge

# PNPM
pnpm add mindforge

# Bun
bun add mindforge

Server-side Usage

Create a MindforgeServerClient:

import { MindforgeServerClient } from "mindforge";

const client = new MindforgeServerClient({
  baseURL: "https://api.mindforge.ai", // Optional
  apiKey: "your-api-key",
});

To use this client, you'll need a Mindforge API key. You can create keys in the dashboard.

Performing NPC interactions

To trigger an NPC interaction:

const npcId = "your-npc-id"; // get from dashboard
const history = [
  { role: "player", content: "Hello, NPC!" },
  { role: "npc", content: "Greetings! How can I assist you today?" },
];

try {
  const result = await client.perform.trigger(npcId, history);
  result.forEach((message) => {
    switch (message.constructor) {
      case NPCText:
        console.log("NPC Text:", message.content);
        break;
      case NPCClientFunctionFire:
        console.log("NPC Function:", message.name, message.args);
        break;
    }
  });
} catch (error) {
  console.error("Error performing NPC interaction:", error);
}

Browser-side Usage

Create a MindforgeBrowserClient:

import { MindforgeBrowserClient, MindforgeNPCMessageType } from "mindforge";

const client = new MindforgeBrowserClient();

Joining a session

To join a live session:

const token = "your-session-token"; // `getMindforgeSessionToken from token.ts`

try {
  await client.joinSession(token);
  console.log("Joined session successfully");
} catch (error) {
  console.error("Error joining session:", error);
}

Receiving messages

You can listen for various events emitted by the client:

client.on(MindforgeNPCMessageType.Text, (message) => {
  console.log("Received NPC text:", message.content);
});

client.on(MindforgeNPCMessageType.InputAudioTranscript, (message) => {
  console.log("Received input audio transcript:", message.content);
});

client.on(MindforgeNPCMessageType.OutputAudioTranscript, (message) => {
  console.log("Received output audio transcript:", message.content);
});

client.on(MindforgeNPCMessageType.ClientFunctionFire, (message) => {
  console.log("NPC triggered client function:", message.name, message.args);
});

Disconnecting

To disconnect from the session:

client.disconnect();

Event Types

The client uses the following event types:

Server Event Types

Event TypeDescription
NPCTextReceived when the NPC sends a text message.
NPCInputAudioTranscriptReceived when the input audio transcript is available.
NPCOutputAudioTranscriptReceived when the output audio transcript is available.
NPCClientFunctionFireReceived when the NPC triggers a client-side function.

Client Event Types

Event TypeDescription
PlayerTextUsed to send a text message from the player to the server.
PlayerTriggerNPCMessageUsed to trigger an NPC message from the player.

Support

If you need any help or have any questions, please open a GitHub issue or contact us at team@mindforge.ai.

1.0.19

8 months ago

1.0.18

8 months ago

1.0.17

8 months ago

1.0.16

8 months ago

1.0.11

8 months ago

1.0.21

8 months ago

1.0.20

8 months ago

1.0.15

8 months ago

1.0.14

8 months ago

1.0.13

8 months ago

1.0.12

8 months ago

1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

9 months ago

1.0.0

9 months ago