flux-agent
Version:
FluxAgent - 一个可灵活插拔的AI Agent系统框架,基于TypeScript开发,支持流式执行、事件系统、插件系统、知识库管理等功能 (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (Protected Release) (
105 lines (104 loc) • 4.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventHub = exports.AgentEventName = void 0;
var AgentEventName;
(function (AgentEventName) {
AgentEventName["BEFORE_CONFIRM"] = "Before-confirm";
AgentEventName["AFTER_CONFIRM"] = "After-confirm";
AgentEventName["BEFORE_THINKPLAN"] = "Before-thinkplan";
AgentEventName["AFTER_THINKPLAN"] = "After-thinkplan";
AgentEventName["BEFORE_PLAN"] = "Before-plan";
AgentEventName["AFTER_PLAN"] = "After-plan";
AgentEventName["BEFORE_REACT"] = "Before-react";
AgentEventName["AFTER_REACT"] = "After-react";
AgentEventName["BEFORE_SUMMARY"] = "Before-summary";
AgentEventName["AFTER_SUMMARY"] = "After-summary";
AgentEventName["STATE_CHANGE"] = "StateChange";
AgentEventName["UIEvent"] = "PushComponent";
AgentEventName["UIResultEvent"] = "UIResultEvent";
AgentEventName["LLMResponseEvent"] = "LLMResponseEvent";
// 新增:流式事件
AgentEventName["STREAM_TOKEN"] = "stream-token";
AgentEventName["STREAM_PARTIAL_RESPONSE"] = "stream-partial-response";
AgentEventName["STREAM_PHASE_CHANGE"] = "stream-phase-change";
AgentEventName["STREAM_TOOL_CALL_START"] = "stream-tool-call-start";
AgentEventName["STREAM_TOOL_CALL_END"] = "stream-tool-call-end";
AgentEventName["STREAM_ERROR"] = "stream-error";
AgentEventName["STREAM_COMPLETE"] = "stream-complete";
// 新增:知识库事件
AgentEventName["KNOWLEDGE_ADDED"] = "knowledge-added";
AgentEventName["KNOWLEDGE_REMOVED"] = "knowledge-removed";
AgentEventName["KNOWLEDGE_UPDATED"] = "knowledge-updated";
AgentEventName["KNOWLEDGE_APPLIED"] = "knowledge-applied";
AgentEventName["KNOWLEDGE_CLEARED"] = "knowledge-cleared";
// 新增:停止事件
AgentEventName["STOP_TOOL_CALL_EVENT"] = "stop-tool-call-event";
AgentEventName["STOP_EVENT"] = "stop-event";
// 新增:Token 使用量事件
AgentEventName["TOKEN_USAGE"] = "token-usage";
})(AgentEventName || (exports.AgentEventName = AgentEventName = {}));
class EventHub {
constructor() {
this.listeners = new Map();
this.typeListeners = new Map();
}
register(eventName, listener) {
if (!this.listeners.has(eventName)) {
this.listeners.set(eventName, []);
}
this.listeners.get(eventName).push(listener);
}
registerType(type, listener) {
if (!this.typeListeners.has(type)) {
this.typeListeners.set(type, []);
}
this.typeListeners.get(type).push(listener);
}
emit(event) {
// 处理通过 eventName 注册的监听器
const nameListeners = this.listeners.get(event.name) || [];
for (const listener of nameListeners) {
listener(event);
}
// 处理通过 eventType 注册的监听器
const typeListeners = this.typeListeners.get(event.type) || [];
for (const listener of typeListeners) {
listener(event);
}
}
unregister(eventName, listener) {
if (!this.listeners.has(eventName)) {
return;
}
const listeners = this.listeners.get(eventName);
const index = listeners.indexOf(listener);
if (index !== -1) {
listeners.splice(index, 1);
}
if (listeners.length === 0) {
this.listeners.delete(eventName);
}
}
unregisterType(type, listener) {
if (!this.typeListeners.has(type)) {
return;
}
const listeners = this.typeListeners.get(type);
const index = listeners.indexOf(listener);
if (index !== -1) {
listeners.splice(index, 1);
}
if (listeners.length === 0) {
this.typeListeners.delete(type);
}
}
// 新增:流式事件发射方法
emitStreamEvent(eventName, payload) {
this.emit({
type: 'StreamEvent',
name: eventName,
payload
});
}
}
exports.EventHub = EventHub;