@convo-lang/convo-lang
Version:
The language of AI
35 lines • 1.01 kB
JavaScript
import { aryDuplicateRemoveItem } from "@iyio/common";
import { BehaviorSubject } from "rxjs";
/**
* A ConvoRoom contains 1 or more conversations and allows conversations to interact with each
* other
*/
export class ConvoRoom {
constructor() {
this._state = new BehaviorSubject({
conversations: [],
lookup: {}
});
}
get stateSubject() { return this._state; }
get state() { return this._state.value; }
addConversation(convo) {
this._state.next(createState([...this._state.value.conversations, convo]));
}
removeConversation(convo) {
this._state.next(createState(aryDuplicateRemoveItem(this._state.value.conversations, convo)));
}
}
const createState = (conversations) => {
const lookup = {};
for (const c of conversations) {
if (lookup[c.name] === undefined) {
lookup[c.name] = c;
}
}
return {
conversations,
lookup,
};
};
//# sourceMappingURL=ConvoRoom.js.map