felona-voice 0.2.5 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent.d.ts +167 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +600 -63
- package/dist/agent.js.map +1 -1
- package/dist/analytics/call-analysis.d.ts +89 -0
- package/dist/analytics/call-analysis.d.ts.map +1 -0
- package/dist/analytics/call-analysis.js +222 -0
- package/dist/analytics/call-analysis.js.map +1 -0
- package/dist/analytics/logger.d.ts +20 -4
- package/dist/analytics/logger.d.ts.map +1 -1
- package/dist/analytics/logger.js +63 -8
- package/dist/analytics/logger.js.map +1 -1
- package/dist/audio/dtmf.d.ts +69 -0
- package/dist/audio/dtmf.d.ts.map +1 -0
- package/dist/audio/dtmf.js +85 -0
- package/dist/audio/dtmf.js.map +1 -0
- package/dist/audio/preprocess.d.ts +101 -0
- package/dist/audio/preprocess.d.ts.map +1 -0
- package/dist/audio/preprocess.js +172 -0
- package/dist/audio/preprocess.js.map +1 -0
- package/dist/builder.d.ts +153 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +274 -5
- package/dist/builder.js.map +1 -1
- package/dist/events/emit.d.ts +37 -0
- package/dist/events/emit.d.ts.map +1 -0
- package/dist/events/emit.js +55 -0
- package/dist/events/emit.js.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -0
- package/dist/graph/visualize.d.ts.map +1 -1
- package/dist/graph/visualize.js +155 -70
- package/dist/graph/visualize.js.map +1 -1
- package/dist/graph/voice-graph.d.ts +35 -3
- package/dist/graph/voice-graph.d.ts.map +1 -1
- package/dist/graph/voice-graph.js +83 -26
- package/dist/graph/voice-graph.js.map +1 -1
- package/dist/guardrails/guardrails.d.ts +86 -0
- package/dist/guardrails/guardrails.d.ts.map +1 -0
- package/dist/guardrails/guardrails.js +89 -0
- package/dist/guardrails/guardrails.js.map +1 -0
- package/dist/guardrails/index.d.ts +2 -0
- package/dist/guardrails/index.d.ts.map +1 -0
- package/dist/guardrails/index.js +2 -0
- package/dist/guardrails/index.js.map +1 -0
- package/dist/i18n/language.d.ts +49 -0
- package/dist/i18n/language.d.ts.map +1 -0
- package/dist/i18n/language.js +148 -0
- package/dist/i18n/language.js.map +1 -0
- package/dist/index.d.ts +28 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -2
- package/dist/index.js.map +1 -1
- package/dist/jev/action-space.d.ts +7 -2
- package/dist/jev/action-space.d.ts.map +1 -1
- package/dist/jev/action-space.js +44 -5
- package/dist/jev/action-space.js.map +1 -1
- package/dist/jev/engine.d.ts +8 -14
- package/dist/jev/engine.d.ts.map +1 -1
- package/dist/jev/engine.js +22 -44
- package/dist/jev/engine.js.map +1 -1
- package/dist/jev/fast-embeddings.d.ts +0 -7
- package/dist/jev/fast-embeddings.d.ts.map +1 -1
- package/dist/jev/fast-embeddings.js +125 -41
- package/dist/jev/fast-embeddings.js.map +1 -1
- package/dist/knowledge/chunk.d.ts +51 -0
- package/dist/knowledge/chunk.d.ts.map +1 -0
- package/dist/knowledge/chunk.js +165 -0
- package/dist/knowledge/chunk.js.map +1 -0
- package/dist/knowledge/kb.d.ts +116 -0
- package/dist/knowledge/kb.d.ts.map +1 -0
- package/dist/knowledge/kb.js +169 -0
- package/dist/knowledge/kb.js.map +1 -0
- package/dist/knowledge/task.d.ts +47 -0
- package/dist/knowledge/task.d.ts.map +1 -0
- package/dist/knowledge/task.js +46 -0
- package/dist/knowledge/task.js.map +1 -0
- package/dist/llm/anthropic.d.ts +52 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +189 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +3 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm.d.ts +140 -0
- package/dist/llm/llm.d.ts.map +1 -0
- package/dist/llm/llm.js +310 -0
- package/dist/llm/llm.js.map +1 -0
- package/dist/memory/context.d.ts +15 -0
- package/dist/memory/context.d.ts.map +1 -1
- package/dist/memory/context.js +22 -0
- package/dist/memory/context.js.map +1 -1
- package/dist/observability/cost.d.ts +92 -0
- package/dist/observability/cost.d.ts.map +1 -0
- package/dist/observability/cost.js +133 -0
- package/dist/observability/cost.js.map +1 -0
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +4 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +60 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +170 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/tracing.d.ts +131 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +172 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/pipeline.d.ts +420 -5
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +1150 -88
- package/dist/pipeline.js.map +1 -1
- package/dist/resilience/http.d.ts +58 -0
- package/dist/resilience/http.d.ts.map +1 -0
- package/dist/resilience/http.js +88 -0
- package/dist/resilience/http.js.map +1 -0
- package/dist/resilience/index.d.ts +3 -0
- package/dist/resilience/index.d.ts.map +1 -0
- package/dist/resilience/index.js +3 -0
- package/dist/resilience/index.js.map +1 -0
- package/dist/resilience/retry.d.ts +52 -0
- package/dist/resilience/retry.d.ts.map +1 -0
- package/dist/resilience/retry.js +65 -0
- package/dist/resilience/retry.js.map +1 -0
- package/dist/resilience/timeout.d.ts +52 -0
- package/dist/resilience/timeout.d.ts.map +1 -0
- package/dist/resilience/timeout.js +94 -0
- package/dist/resilience/timeout.js.map +1 -0
- package/dist/session/manager.d.ts +38 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +86 -26
- package/dist/session/manager.js.map +1 -1
- package/dist/session/memory-store.d.ts +6 -0
- package/dist/session/memory-store.d.ts.map +1 -1
- package/dist/session/memory-store.js +30 -2
- package/dist/session/memory-store.js.map +1 -1
- package/dist/slots/collector.d.ts +98 -0
- package/dist/slots/collector.d.ts.map +1 -0
- package/dist/slots/collector.js +169 -0
- package/dist/slots/collector.js.map +1 -0
- package/dist/slots/extractors.d.ts +102 -0
- package/dist/slots/extractors.d.ts.map +1 -0
- package/dist/slots/extractors.js +531 -0
- package/dist/slots/extractors.js.map +1 -0
- package/dist/slots/spoken.d.ts +39 -0
- package/dist/slots/spoken.d.ts.map +1 -0
- package/dist/slots/spoken.js +137 -0
- package/dist/slots/spoken.js.map +1 -0
- package/dist/slots/tasks.d.ts +84 -0
- package/dist/slots/tasks.d.ts.map +1 -0
- package/dist/slots/tasks.js +256 -0
- package/dist/slots/tasks.js.map +1 -0
- package/dist/stt/assemblyai.d.ts +7 -0
- package/dist/stt/assemblyai.d.ts.map +1 -1
- package/dist/stt/assemblyai.js +180 -18
- package/dist/stt/assemblyai.js.map +1 -1
- package/dist/stt/audio-buffer.d.ts +40 -0
- package/dist/stt/audio-buffer.d.ts.map +1 -0
- package/dist/stt/audio-buffer.js +74 -0
- package/dist/stt/audio-buffer.js.map +1 -0
- package/dist/stt/azure.d.ts +6 -0
- package/dist/stt/azure.d.ts.map +1 -1
- package/dist/stt/azure.js +67 -12
- package/dist/stt/azure.js.map +1 -1
- package/dist/stt/credentials.d.ts +15 -0
- package/dist/stt/credentials.d.ts.map +1 -0
- package/dist/stt/credentials.js +22 -0
- package/dist/stt/credentials.js.map +1 -0
- package/dist/stt/deepgram.d.ts +8 -9
- package/dist/stt/deepgram.d.ts.map +1 -1
- package/dist/stt/deepgram.js +222 -29
- package/dist/stt/deepgram.js.map +1 -1
- package/dist/stt/google.d.ts +2 -0
- package/dist/stt/google.d.ts.map +1 -1
- package/dist/stt/google.js +63 -13
- package/dist/stt/google.js.map +1 -1
- package/dist/stt/whisper.d.ts +2 -0
- package/dist/stt/whisper.d.ts.map +1 -1
- package/dist/stt/whisper.js +74 -12
- package/dist/stt/whisper.js.map +1 -1
- package/dist/supervision/controller.d.ts +153 -0
- package/dist/supervision/controller.d.ts.map +1 -0
- package/dist/supervision/controller.js +210 -0
- package/dist/supervision/controller.js.map +1 -0
- package/dist/telephony/codec.d.ts +39 -0
- package/dist/telephony/codec.d.ts.map +1 -1
- package/dist/telephony/codec.js +137 -6
- package/dist/telephony/codec.js.map +1 -1
- package/dist/telephony/index.d.ts +2 -1
- package/dist/telephony/index.d.ts.map +1 -1
- package/dist/telephony/index.js +2 -1
- package/dist/telephony/index.js.map +1 -1
- package/dist/telephony/transfer.d.ts +113 -0
- package/dist/telephony/transfer.d.ts.map +1 -0
- package/dist/telephony/transfer.js +140 -0
- package/dist/telephony/transfer.js.map +1 -0
- package/dist/telephony/twilio-transport.d.ts +99 -2
- package/dist/telephony/twilio-transport.d.ts.map +1 -1
- package/dist/telephony/twilio-transport.js +351 -37
- package/dist/telephony/twilio-transport.js.map +1 -1
- package/dist/telephony/twiml.d.ts +6 -0
- package/dist/telephony/twiml.d.ts.map +1 -1
- package/dist/telephony/twiml.js +2 -1
- package/dist/telephony/twiml.js.map +1 -1
- package/dist/testing/scenarios.d.ts +103 -0
- package/dist/testing/scenarios.d.ts.map +1 -0
- package/dist/testing/scenarios.js +165 -0
- package/dist/testing/scenarios.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.d.ts +304 -0
- package/dist/tools/mcp.d.ts.map +1 -0
- package/dist/tools/mcp.js +608 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/registry.d.ts +9 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +33 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/transport/index.d.ts +2 -0
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +2 -0
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/ops.d.ts +40 -0
- package/dist/transport/ops.d.ts.map +1 -0
- package/dist/transport/ops.js +64 -0
- package/dist/transport/ops.js.map +1 -0
- package/dist/transport/rtp.d.ts +88 -0
- package/dist/transport/rtp.d.ts.map +1 -0
- package/dist/transport/rtp.js +163 -0
- package/dist/transport/rtp.js.map +1 -0
- package/dist/transport/webrtc.d.ts +238 -0
- package/dist/transport/webrtc.d.ts.map +1 -0
- package/dist/transport/webrtc.js +727 -0
- package/dist/transport/webrtc.js.map +1 -0
- package/dist/transport/websocket.d.ts +90 -6
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/transport/websocket.js +315 -34
- package/dist/transport/websocket.js.map +1 -1
- package/dist/tts/azure.d.ts.map +1 -1
- package/dist/tts/azure.js +26 -37
- package/dist/tts/azure.js.map +1 -1
- package/dist/tts/cartesia.d.ts.map +1 -1
- package/dist/tts/cartesia.js +6 -30
- package/dist/tts/cartesia.js.map +1 -1
- package/dist/tts/deepgram.d.ts.map +1 -1
- package/dist/tts/deepgram.js +6 -30
- package/dist/tts/deepgram.js.map +1 -1
- package/dist/tts/lmnt.d.ts.map +1 -1
- package/dist/tts/lmnt.js +6 -30
- package/dist/tts/lmnt.js.map +1 -1
- package/dist/tts/openai.d.ts.map +1 -1
- package/dist/tts/openai.js +6 -31
- package/dist/tts/openai.js.map +1 -1
- package/dist/tts/polly.d.ts.map +1 -1
- package/dist/tts/polly.js +6 -30
- package/dist/tts/polly.js.map +1 -1
- package/dist/tts/stream-pcm.d.ts +34 -0
- package/dist/tts/stream-pcm.d.ts.map +1 -0
- package/dist/tts/stream-pcm.js +86 -0
- package/dist/tts/stream-pcm.js.map +1 -0
- package/dist/types.d.ts +440 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vad/energy.d.ts +12 -15
- package/dist/vad/energy.d.ts.map +1 -1
- package/dist/vad/energy.js +25 -16
- package/dist/vad/energy.js.map +1 -1
- package/dist/voicemail/index.d.ts +2 -0
- package/dist/voicemail/index.d.ts.map +1 -0
- package/dist/voicemail/index.js +2 -0
- package/dist/voicemail/index.js.map +1 -0
- package/dist/voicemail/voicemail.d.ts +72 -0
- package/dist/voicemail/voicemail.d.ts.map +1 -0
- package/dist/voicemail/voicemail.js +137 -0
- package/dist/voicemail/voicemail.js.map +1 -0
- package/package.json +13 -10
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ console.log(reply.action.id); // "room_service"
|
|
|
40
40
|
## Features
|
|
41
41
|
|
|
42
42
|
- **JEV Routing**: Sub-10ms neural intent routing via local fast semantic embeddings or OpenAI embeddings.
|
|
43
|
-
- **
|
|
43
|
+
- **Deterministic Routing**: Cosine similarity over in-process vectors — no model call, no token cost, and no invented transitions. Low-confidence matches route to your `fallback` action.
|
|
44
44
|
- **Pluggable Audio Stack**:
|
|
45
45
|
- **STT**: Deepgram Nova-2, OpenAI Whisper, AssemblyAI, Azure Speech, Google Cloud Speech.
|
|
46
46
|
- **TTS**: Cartesia Sonic (<100ms), Deepgram Aura, ElevenLabs, OpenAI Speech, Azure Speech, Amazon Polly, LMNT.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { type MetricsRegistry } from "./observability/metrics.js";
|
|
2
|
+
import { type CostTracker } from "./observability/cost.js";
|
|
1
3
|
import { EventEmitter } from "node:events";
|
|
2
|
-
import type { FelAgentConfig, AgentAction, InteractOptions, InteractResult, Transport } from "./types.js";
|
|
4
|
+
import type { FelAgentConfig, AgentAction, AgentTool, InteractOptions, InteractResult, Transport } from "./types.js";
|
|
3
5
|
import { type TwilioStreamTwiMLOptions } from "./telephony/twiml.js";
|
|
4
6
|
import { SessionManager } from "./session/index.js";
|
|
5
7
|
import { JEVEngine } from "./jev/engine.js";
|
|
6
8
|
import { ConversationMemory } from "./memory/context.js";
|
|
9
|
+
import { ToolRegistry } from "./tools/registry.js";
|
|
7
10
|
import { type GraphData, type VisualizeOptions, type VisualizeResult } from "./graph/visualize.js";
|
|
11
|
+
import { KnowledgeBase } from "./knowledge/kb.js";
|
|
8
12
|
/**
|
|
9
13
|
* FelAgent — The main entry point for building a voice agent with Felona Voice.
|
|
10
14
|
*
|
|
@@ -29,16 +33,96 @@ export declare class FelAgent extends EventEmitter {
|
|
|
29
33
|
private readonly jev;
|
|
30
34
|
private readonly logger;
|
|
31
35
|
private readonly tools;
|
|
36
|
+
private readonly tracer;
|
|
32
37
|
private readonly hooks;
|
|
33
38
|
private readonly sttProvider;
|
|
34
39
|
private readonly ttsProvider;
|
|
35
|
-
private readonly
|
|
40
|
+
private readonly vadOptions;
|
|
41
|
+
private readonly sttFlushTimeoutMs;
|
|
42
|
+
private readonly audioEnabled;
|
|
43
|
+
private readonly transferProvider;
|
|
36
44
|
/** Session manager for scaling, multi-turn state persistence, and concurrency limits */
|
|
37
45
|
readonly sessions: SessionManager;
|
|
46
|
+
/**
|
|
47
|
+
* Retrieval over the agent's own documentation.
|
|
48
|
+
*
|
|
49
|
+
* Always present so documents can be added at any point; retrieval returns
|
|
50
|
+
* nothing until something is indexed. In-memory only — nothing is written
|
|
51
|
+
* to disk.
|
|
52
|
+
*/
|
|
53
|
+
readonly knowledge: KnowledgeBase;
|
|
38
54
|
private pipelines;
|
|
39
55
|
private sessionMap;
|
|
56
|
+
/**
|
|
57
|
+
* In-flight `interact()` turns, keyed by session id.
|
|
58
|
+
*
|
|
59
|
+
* Turns on one session run one at a time so their memory writes cannot
|
|
60
|
+
* interleave. Turns on *different* sessions stay concurrent.
|
|
61
|
+
*/
|
|
62
|
+
private interactQueue;
|
|
63
|
+
/** Guards against a second `interact()` LRU eviction pass during setup. */
|
|
64
|
+
private static readonly MAX_INTERACT_SESSIONS;
|
|
65
|
+
/** Per-call start time, used to enforce a maximum call duration. */
|
|
66
|
+
private callStartedAt;
|
|
67
|
+
/**
|
|
68
|
+
* Process-wide call counters.
|
|
69
|
+
*
|
|
70
|
+
* Exposed so a deployment can scrape them, and so a health endpoint can
|
|
71
|
+
* report live call count without a separate metrics backend.
|
|
72
|
+
*/
|
|
73
|
+
readonly metrics: MetricsRegistry;
|
|
74
|
+
/**
|
|
75
|
+
* Per-call usage and cost, when `cost` is configured.
|
|
76
|
+
*
|
|
77
|
+
* Present only with a price table: without prices there is nothing to
|
|
78
|
+
* report but token counts, which the metrics registry already carries.
|
|
79
|
+
*/
|
|
80
|
+
readonly costs: CostTracker | null;
|
|
81
|
+
private callSweepTimer;
|
|
82
|
+
private stopping;
|
|
40
83
|
private initialized;
|
|
84
|
+
private jevReady;
|
|
85
|
+
private jevInitPromise;
|
|
41
86
|
constructor(config: FelAgentConfig);
|
|
87
|
+
/**
|
|
88
|
+
* Resolve the configured embedding provider.
|
|
89
|
+
*
|
|
90
|
+
* The config type allows a plain string, so a name is resolved here rather
|
|
91
|
+
* than being silently ignored (which previously fell through to the default
|
|
92
|
+
* provider regardless of what was asked for).
|
|
93
|
+
*/
|
|
94
|
+
private resolveEmbeddingProvider;
|
|
95
|
+
/** Pick the transport from config, falling back to plain WebSocket. */
|
|
96
|
+
private resolveInitialTransport;
|
|
97
|
+
/**
|
|
98
|
+
* Attach the agent's transport callbacks.
|
|
99
|
+
*
|
|
100
|
+
* Shared by `listen()` and `handleTwilioWebSocket()` so an agent attached to
|
|
101
|
+
* a caller-supplied server behaves identically to one started with `listen()`.
|
|
102
|
+
*/
|
|
103
|
+
private wireTransport;
|
|
104
|
+
/**
|
|
105
|
+
* Contains a failure from a fire-and-forget call site.
|
|
106
|
+
*
|
|
107
|
+
* There is no caller left to propagate to, so the only correct options are
|
|
108
|
+
* to log it or crash. Log it, and make it visible.
|
|
109
|
+
*/
|
|
110
|
+
private reportAsyncFailure;
|
|
111
|
+
/**
|
|
112
|
+
* Ensure the JEV action space is embedded, exactly once.
|
|
113
|
+
*
|
|
114
|
+
* Required before any `decide()` call. Shared by `listen()`, `interact()`
|
|
115
|
+
* and `handleTwilioWebSocket()` — the last of which previously skipped it
|
|
116
|
+
* and failed on the first turn of every call.
|
|
117
|
+
*/
|
|
118
|
+
private ensureJEVInitialized;
|
|
119
|
+
/**
|
|
120
|
+
* Emit only when someone is listening.
|
|
121
|
+
*
|
|
122
|
+
* `error` is special-cased by Node's EventEmitter: emitting it with no
|
|
123
|
+
* registered listener throws and would crash the host process.
|
|
124
|
+
*/
|
|
125
|
+
private emitSafe;
|
|
42
126
|
/**
|
|
43
127
|
* Set a custom transport instance (e.g., TwilioTransport).
|
|
44
128
|
*/
|
|
@@ -63,17 +147,48 @@ export declare class FelAgent extends EventEmitter {
|
|
|
63
147
|
webhookPath?: string | null;
|
|
64
148
|
streamUrl?: string;
|
|
65
149
|
greeting?: string;
|
|
150
|
+
authToken?: string;
|
|
151
|
+
publicUrl?: string;
|
|
152
|
+
allowedHosts?: string[];
|
|
66
153
|
server?: import("http").Server;
|
|
67
154
|
}): Promise<void>;
|
|
68
155
|
/**
|
|
69
156
|
* Handle an existing WebSocket connection using the Twilio telephony pipeline.
|
|
70
157
|
* Ideal for integrating phone agents into an existing Express/Fastify/Next.js/Hono server.
|
|
158
|
+
*
|
|
159
|
+
* Stays synchronous on purpose: the socket is live as soon as this returns,
|
|
160
|
+
* so attaching the `message` listener must not be deferred behind a promise.
|
|
161
|
+
* JEV initialization happens inside `handleConnect` instead.
|
|
71
162
|
*/
|
|
72
163
|
handleTwilioWebSocket(ws: import("ws").WebSocket, req?: import("http").IncomingMessage): void;
|
|
73
164
|
/**
|
|
74
165
|
* Generate standard TwiML XML connecting an incoming or outgoing Twilio call to a media stream.
|
|
75
166
|
*/
|
|
76
167
|
createTwilioTwiML(options: TwilioStreamTwiMLOptions): string;
|
|
168
|
+
/**
|
|
169
|
+
* Starts the periodic sweep for over-long or abandoned calls.
|
|
170
|
+
*
|
|
171
|
+
* A call is normally torn down by a disconnect event, but a transport that
|
|
172
|
+
* never delivers one (a half-open socket, a peer that vanished) would leave
|
|
173
|
+
* its pipeline resident forever. The sweep is the backstop.
|
|
174
|
+
*/
|
|
175
|
+
private startCallSweeper;
|
|
176
|
+
private stopCallSweeper;
|
|
177
|
+
/**
|
|
178
|
+
* Ends any call that has exceeded the maximum duration.
|
|
179
|
+
*
|
|
180
|
+
* Also drops pipelines with no recorded start, which can only happen if
|
|
181
|
+
* registration was interrupted — an entry the disconnect path would never
|
|
182
|
+
* reach.
|
|
183
|
+
*/
|
|
184
|
+
private sweepCalls;
|
|
185
|
+
/**
|
|
186
|
+
* Tears down one call's pipeline and session state.
|
|
187
|
+
*
|
|
188
|
+
* Shared by the disconnect handler and the sweeper so both paths release the
|
|
189
|
+
* same resources exactly once.
|
|
190
|
+
*/
|
|
191
|
+
private endCall;
|
|
77
192
|
/**
|
|
78
193
|
* Stop the agent — shut down all pipelines and the transport.
|
|
79
194
|
*/
|
|
@@ -90,6 +205,8 @@ export declare class FelAgent extends EventEmitter {
|
|
|
90
205
|
* Handle incoming audio from a client — route to the correct pipeline.
|
|
91
206
|
*/
|
|
92
207
|
private handleAudio;
|
|
208
|
+
/** Route a keypad digit to the session's pipeline. */
|
|
209
|
+
private handleDTMF;
|
|
93
210
|
/** Create STT provider based on config */
|
|
94
211
|
private createSTTProvider;
|
|
95
212
|
/** Create TTS provider based on config */
|
|
@@ -107,7 +224,41 @@ export declare class FelAgent extends EventEmitter {
|
|
|
107
224
|
* console.log(reply.action.id);
|
|
108
225
|
* ```
|
|
109
226
|
*/
|
|
227
|
+
/**
|
|
228
|
+
* Runs one text turn, serialised against other turns on the same session.
|
|
229
|
+
*
|
|
230
|
+
* Two concurrent `interact()` calls on a session would interleave: both
|
|
231
|
+
* build their context from the same memory, both await JEV, and then both
|
|
232
|
+
* append — leaving the conversation with one turn's answer missing its
|
|
233
|
+
* question. Chaining on a per-session promise makes each turn observe the
|
|
234
|
+
* previous one's result.
|
|
235
|
+
*/
|
|
110
236
|
interact(input: string | InteractOptions): Promise<InteractResult>;
|
|
237
|
+
/**
|
|
238
|
+
* Stand-in action returned when a guardrail blocks.
|
|
239
|
+
*
|
|
240
|
+
* `InteractResult.action` is a required `AgentAction`, so a blocked turn
|
|
241
|
+
* still has to name something. A distinct id means a caller can tell a
|
|
242
|
+
* blocked turn from a real route without inspecting the text.
|
|
243
|
+
*/
|
|
244
|
+
private static readonly BLOCKED_ACTION;
|
|
245
|
+
private runInteractTurn;
|
|
246
|
+
/**
|
|
247
|
+
* Drop the least-recently-used interact() sessions.
|
|
248
|
+
*
|
|
249
|
+
* `interact()` sessions live for the lifetime of the process — a long-running
|
|
250
|
+
* server would otherwise accumulate one memory per distinct sessionId.
|
|
251
|
+
*/
|
|
252
|
+
private evictOldestSessions;
|
|
253
|
+
/**
|
|
254
|
+
* Discard in-memory state for an `interact()` session.
|
|
255
|
+
* Nothing is persisted — this only frees memory.
|
|
256
|
+
*/
|
|
257
|
+
endSession(sessionId: string): boolean;
|
|
258
|
+
/** Discard all `interact()` session state. */
|
|
259
|
+
clearSessions(): void;
|
|
260
|
+
/** Number of live `interact()` sessions held in memory. */
|
|
261
|
+
get interactSessionCount(): number;
|
|
111
262
|
/**
|
|
112
263
|
* Run a multi-turn conversation simulation.
|
|
113
264
|
*/
|
|
@@ -122,6 +273,20 @@ export declare class FelAgent extends EventEmitter {
|
|
|
122
273
|
get name(): string;
|
|
123
274
|
/** Get the JEV engine (for inspection/testing) */
|
|
124
275
|
get jevEngine(): JEVEngine;
|
|
276
|
+
/**
|
|
277
|
+
* The agent's tool registry.
|
|
278
|
+
*
|
|
279
|
+
* Exposed so tools can be added after construction — which is what an MCP
|
|
280
|
+
* server needs, since listing one is asynchronous and `build()` is not.
|
|
281
|
+
*/
|
|
282
|
+
get toolRegistry(): ToolRegistry;
|
|
283
|
+
/**
|
|
284
|
+
* Add tools to a running agent.
|
|
285
|
+
*
|
|
286
|
+
* Duplicate names throw rather than replacing, so a typo cannot silently
|
|
287
|
+
* change which implementation answers on a live call.
|
|
288
|
+
*/
|
|
289
|
+
addTools(toolList: AgentTool[]): void;
|
|
125
290
|
/**
|
|
126
291
|
* Get graph data representing the agent's action space.
|
|
127
292
|
*/
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,cAAc,EAGd,WAAW,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|