Coder Social home page Coder Social logo

nt9142 / state-chats Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 105 KB

State-Chats: An event-driven, asynchronous JavaScript/TypeScript library for building chat flows in Node.js and browser environments.

Home Page: https://state-chats.io

License: MIT License

JavaScript 9.73% TypeScript 90.27%
asynchronous browser chatbot event-driven javascript nodejs react typescript

state-chats's Introduction

State-Chats

State-Chats is a JavaScript/TypeScript library designed to facilitate the creation and management of stateful chat interactions. It leverages asynchronous generators and event-driven patterns to offer a flexible and intuitive API for building complex chat flows.

Features

  • Asynchronous Chat Flow: Manage chat interactions with asynchronous support, allowing for delays and dynamic responses.
  • Event-Driven Architecture: Utilize a robust event system for handling messages, prompts, and chat lifecycle events.
  • Customizable and Extensible: Easily extend and customize chat flows to fit various use cases.
  • Isomorphic Library: Compatible with both Node.js and browser environments.
  • React Hook Integration (Coming Soon): Integrate easily with React applications using a custom hook.

Installation

npm install state-chats
# or
yarn add state-chats

Usage

Here is a basic example of how to use State-Chats:

import { getChat } from 'state-chats';

// Define your chat script
const script = [
  // Your chat script goes here
];

const chat = getChat(script);

chat.on('message', (message) => {
  console.log(message);
});

chat.on('prompt', (send) => {
  send('Your response');
});

chat.start();

// To stop the chat
chat.stop();

Script Structure

A script in State-Chats is defined as an array of chat messages, each with potential conditions, delays, or prompts for user input. Here's a short example:

const exampleScript = [
  {
    content: 'Hello! Are you an admin?',
    variable: 'admin',
  },
  {
    condition: {
      type: 'equals',
      variable: 'admin',
      value: 'yes',
    },
    content: 'Great, nice to meet you, admin!',
    delay: 1000,
  },
  {
    condition: {
      type: 'not',
      condition: {
        type: 'equals',
        variable: 'admin',
        value: 'yes',
      },
    },
    content: 'Oh snap!',
    delay: 1000,
  },
  {
    content: 'Anyways, glad to see you',
    delay: 1000,
  },
];

API Reference

  • getChat: Function to initialize the chat with a given script.
  • on: Subscribe to chat events (e.g., 'message', 'prompt').
  • start: Start the chat interaction.
  • stop: Stop the chat interaction.
  • send: Send a message in response to a prompt.

Contributing

Contributions are welcome! Please read our Contributing Guide for more information on how to get started.

License

State-Chats is MIT licensed.

state-chats's People

Contributors

nt9142 avatar

Stargazers

Mikalai avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.