Skip to content

Commit cb270bc

Browse files
Fern upgrade (#567)
Co-authored-by: fern-api[bot] <115122769+fern-api[bot]@users.noreply.github.com>
1 parent f846dec commit cb270bc

File tree

777 files changed

+9179
-5588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

777 files changed

+9179
-5588
lines changed

.fernignore

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,67 @@ CONTRIBUTING.md
77

88
# Tooling
99
eslint.config.mjs
10-
jest.config.mjs
10+
#jest.config.mjs
1111
justfile
1212
tsconfig.dev.json
1313
.nvmrc
1414
.github
1515
.prettierignore
1616

17-
# Wrapper client
18-
src/wrapper
19-
src/index.ts
2017

2118
# EVI WebSocket
19+
# Supplier.ts - sync version required to keep EVI chat client .connect() method synchronous
2220
src/core/fetcher/Supplier.ts
23-
src/Client.ts
24-
src/api/resources/empathicVoice/client/Client.ts
25-
src/api/resources/empathicVoice/resources/chat/index.ts
26-
src/api/resources/empathicVoice/resources/chat/client
27-
src/core/websocket
28-
src/core/index.ts
21+
# src/Client.ts
22+
# src/api/resources/empathicVoice/client/Client.ts
23+
# src/api/resources/empathicVoice/resources/chat/index.ts
24+
# src/api/resources/empathicVoice/resources/chat/client
25+
# src/core/websocket
26+
# src/core/index.ts
27+
# EVI Chat Client - manually maintained to preserve backward compatibility
28+
# Client.ts changes from generated version:
29+
# - ConnectArgs.sessionSettings is optional (was required)
30+
# - ConnectArgs.configVersion accepts string | number (was only number)
31+
# - ConnectArgs.voiceId added back as deprecated parameter
32+
# - ConnectArgs.queryParams added for arbitrary query parameters
33+
# - connect() args parameter is optional with default {}
34+
# - Handles voiceId parameter (maps to voice_id query param)
35+
# - Handles flexible configVersion types (both string and number)
36+
# - Conditional sessionSettings serialization (only if provided)
37+
# - Merges custom queryParams into query parameters
38+
src/api/resources/empathicVoice/resources/chat/client/Client.ts
39+
40+
# Socket.ts changes from generated version:
41+
# - Response type includes receivedAt: Date timestamp
42+
# - handleMessage adds receivedAt timestamp to messages
43+
# - Restored 8 convenience methods that wrap sendPublish():
44+
# - sendAudioInput(), sendSessionSettings(), sendAssistantInput()
45+
# - pauseAssistant(), resumeAssistant()
46+
# - sendToolResponseMessage(), sendToolErrorMessage(), sendUserInput()
47+
# - Added tillSocketOpen() as deprecated alias for waitForOpen()
48+
src/api/resources/empathicVoice/resources/chat/client/Socket.ts
49+
50+
# index.ts - manually maintained to export Chat and ChatSocket
51+
# Generated version exports nothing (export {}), but we need to export
52+
# our manually maintained Client and Socket classes
53+
src/api/resources/empathicVoice/resources/chat/client/index.ts
54+
55+
# Manually added tests
56+
tests/unit/url-resolution.test.ts
57+
tests/expressionMeasurement/batch.test.ts
58+
tests/expressionMeasurement/streaming.test.ts
2959

30-
# Tests
31-
tests/empathicVoice
32-
tests/expressionMeasurement
60+
# Required manual edits for Node 18 compatibility
61+
tests/unit/fetcher/Fetcher.test.ts
62+
tests/unit/file/file.test.ts
3363

3464
# Needed because node 18 doesn't actually have a global.File
3565
tests/BrowserTestEnvironment.ts
66+
67+
# Needed to send apiKey on websocket queryParams
68+
# See https://github.com/fern-demo/hume-typescript-sdk/pull/1
69+
src/core/websocket/ws.ts
70+
71+
# Needed to export the utilities under src/wrapper
72+
src/wrapper
73+
src/index.ts

.mock/definition/api.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
name: api
22
error-discrimination:
33
strategy: status-code
4-
default-environment: Production
4+
default-environment: prod
5+
default-url: Base
56
environments:
6-
Production: https://api.hume.ai
7+
prod:
8+
urls:
9+
Base: https://api.hume.ai/
10+
evi: wss://api.hume.ai/v0/evi
11+
tts: wss://api.hume.ai/v0/tts
12+
stream: wss://api.hume.ai/v0/stream
713
auth: HeaderAuthScheme
814
auth-schemes:
915
HeaderAuthScheme:

.mock/definition/empathic-voice/__package__.yml

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,8 +600,7 @@ types:
600600
When provided, EVI will use this key instead of Hume's API key for the
601601
supplemental LLM. This allows you to bypass rate limits and utilize
602602
your own API key as needed.
603-
metadata:
604-
type: optional<map<string, unknown>>
603+
metadata: optional<map<string, unknown>>
605604
system_prompt:
606605
type: optional<string>
607606
docs: >-
@@ -1003,6 +1002,69 @@ types:
10031002
- type: ToolErrorMessage
10041003
source:
10051004
openapi: evi-asyncapi.json
1005+
ConnectSessionSettingsAudio:
1006+
properties:
1007+
channels:
1008+
type: optional<integer>
1009+
encoding:
1010+
type: optional<string>
1011+
sample_rate:
1012+
type: optional<integer>
1013+
source:
1014+
openapi: evi-asyncapi.json
1015+
inline: true
1016+
ConnectSessionSettingsContext:
1017+
properties:
1018+
text:
1019+
type: optional<string>
1020+
type:
1021+
type: optional<string>
1022+
source:
1023+
openapi: evi-asyncapi.json
1024+
inline: true
1025+
ConnectSessionSettingsVariablesValue:
1026+
discriminated: false
1027+
union:
1028+
- string
1029+
- double
1030+
- boolean
1031+
source:
1032+
openapi: evi-asyncapi.json
1033+
inline: true
1034+
ConnectSessionSettings:
1035+
properties:
1036+
audio: optional<ConnectSessionSettingsAudio>
1037+
context: optional<ConnectSessionSettingsContext>
1038+
custom_session_id:
1039+
type: optional<string>
1040+
event_limit:
1041+
type: optional<integer>
1042+
language_model_api_key:
1043+
type: optional<string>
1044+
system_prompt:
1045+
type: optional<string>
1046+
variables:
1047+
type: optional<map<string, ConnectSessionSettingsVariablesValue>>
1048+
docs: >-
1049+
This field allows you to assign values to dynamic variables referenced
1050+
in your system prompt.
1051+
1052+
1053+
Each key represents the variable name, and the corresponding value is
1054+
the specific content you wish to assign to that variable within the
1055+
session. While the values for variables can be strings, numbers, or
1056+
booleans, the value will ultimately be converted to a string when
1057+
injected into your system prompt.
1058+
1059+
1060+
Using this field, you can personalize responses based on
1061+
session-specific details. For more guidance, see our [guide on using
1062+
dynamic
1063+
variables](/docs/speech-to-speech-evi/features/dynamic-variables).
1064+
voice_id:
1065+
type: optional<string>
1066+
source:
1067+
openapi: evi-asyncapi.json
10061068
HTTPValidationError:
10071069
properties:
10081070
detail:

.mock/definition/empathic-voice/chat.yml

Lines changed: 4 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
imports:
2+
root: __package__.yml
13
channel:
24
path: /chat
3-
url: prod
5+
url: evi
46
auth: false
57
docs: Chat with Empathic Voice Interface (EVI)
68
query-parameters:
@@ -98,111 +100,6 @@ channel:
98100
Use the GET `/v0/evi/chat_groups` endpoint to obtain the Chat Group IDs
99101
of all Chat Groups associated with an API key. This endpoint returns a
100102
list of all available chat groups.
101-
session_settings[audio][channels]:
102-
type: optional<integer>
103-
docs: Sets number of audio channels for audio input.
104-
session_settings[audio][encoding]:
105-
type: optional<string>
106-
docs: Sets encoding format of the audio input, such as `linear16`.
107-
session_settings[audio][sample_rate]:
108-
type: optional<integer>
109-
docs: >-
110-
Sets the sample rate for audio input. (Number of samples per second in
111-
the audio input, measured in Hertz.)
112-
session_settings[context][text]:
113-
type: optional<string>
114-
docs: >-
115-
The context to be injected into the conversation. Helps inform the LLM's
116-
response by providing relevant information about the ongoing
117-
conversation.
118-
119-
120-
This text will be appended to the end of
121-
[user_messages](/reference/speech-to-speech-evi/chat#receive.UserMessage.message.content)
122-
based on the chosen persistence level. For example, if you want to
123-
remind EVI of its role as a helpful weather assistant, the context you
124-
insert will be appended to the end of user messages as `{Context: You
125-
are a helpful weather assistant}`.
126-
session_settings[context][type]:
127-
type: optional<string>
128-
docs: >-
129-
The persistence level of the injected context. Specifies how long the
130-
injected context will remain active in the session.
131-
132-
133-
- **Temporary**: Context that is only applied to the following assistant
134-
response.
135-
136-
137-
- **Persistent**: Context that is applied to all subsequent assistant
138-
responses for the remainder of the Chat.
139-
session_settings[custom_session_id]:
140-
type: optional<string>
141-
docs: >-
142-
Used to manage conversational state, correlate frontend and backend
143-
data, and persist conversations across EVI sessions.
144-
session_settings[event_limit]:
145-
type: optional<integer>
146-
docs: >-
147-
The maximum number of chat events to return from chat history. By
148-
default, the system returns up to 300 events (100 events per page × 3
149-
pages). Set this parameter to a smaller value to limit the number of
150-
events returned.
151-
session_settings[language_model_api_key]:
152-
type: optional<string>
153-
docs: >-
154-
Third party API key for the supplemental language model.
155-
156-
157-
When provided, EVI will use this key instead of Hume's API key for the
158-
supplemental LLM. This allows you to bypass rate limits and utilize your
159-
own API key as needed.
160-
session_settings[system_prompt]:
161-
type: optional<string>
162-
docs: >-
163-
Instructions used to shape EVI's behavior, responses, and style for the
164-
session.
165-
166-
167-
When included in a Session Settings message, the provided Prompt
168-
overrides the existing one specified in the EVI configuration. If no
169-
Prompt was defined in the configuration, this Prompt will be the one
170-
used for the session.
171-
172-
173-
You can use the Prompt to define a specific goal or role for EVI,
174-
specifying how it should act or what it should focus on during the
175-
conversation. For example, EVI can be instructed to act as a customer
176-
support representative, a fitness coach, or a travel advisor, each with
177-
its own set of behaviors and response styles.
178-
179-
180-
For help writing a system prompt, see our [Prompting
181-
Guide](/docs/speech-to-speech-evi/guides/prompting).
182-
session_settings[variables]:
183-
type: optional<string>
184-
docs: >-
185-
This field allows you to assign values to dynamic variables referenced
186-
in your system prompt.
187-
188-
189-
Each key represents the variable name, and the corresponding value is
190-
the specific content you wish to assign to that variable within the
191-
session. While the values for variables can be strings, numbers, or
192-
booleans, the value will ultimately be converted to a string when
193-
injected into your system prompt.
194-
195-
196-
Using this field, you can personalize responses based on
197-
session-specific details. For more guidance, see our [guide on using
198-
dynamic
199-
variables](/docs/speech-to-speech-evi/features/dynamic-variables).
200-
session_settings[voice_id]:
201-
type: optional<string>
202-
docs: >-
203-
The name or ID of the voice from the `Voice Library` to be used as the
204-
speaker for this EVI session. This will override the speaker set in the
205-
selected configuration.
206103
verbose_transcription:
207104
type: optional<boolean>
208105
default: false
@@ -214,12 +111,6 @@ channel:
214111
field on a
215112
[UserMessage](/reference/speech-to-speech-evi/chat#receive.UserMessage)
216113
denotes whether the message is "interim" or "final."
217-
voice_id:
218-
type: optional<string>
219-
docs: >-
220-
The name or ID of the voice from the `Voice Library` to be used as the
221-
speaker for this EVI session. This will override the speaker set in the
222-
selected configuration.
223114
api_key:
224115
type: optional<string>
225116
default: ''
@@ -230,24 +121,14 @@ channel:
230121
231122
For more details, refer to the [Authentication Strategies
232123
Guide](/docs/introduction/api-key#authentication-strategies).
124+
session_settings: root.ConnectSessionSettings
233125
messages:
234126
publish:
235127
origin: client
236128
body: PublishEvent
237129
subscribe:
238130
origin: server
239131
body: SubscribeEvent
240-
examples:
241-
- messages:
242-
- type: publish
243-
body:
244-
data: data
245-
type: audio_input
246-
- type: subscribe
247-
body:
248-
type: assistant_end
249-
imports:
250-
root: __package__.yml
251132
types:
252133
PublishEvent:
253134
discriminated: false

.mock/definition/empathic-voice/chatGroups.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ service:
77
list-chat-groups:
88
path: /v0/evi/chat_groups
99
method: GET
10-
auth: true
1110
docs: Fetches a paginated list of **Chat Groups**.
1211
pagination:
1312
offset: $request.page_number
@@ -86,7 +85,6 @@ service:
8685
get-chat-group:
8786
path: /v0/evi/chat_groups/{id}
8887
method: GET
89-
auth: true
9088
docs: >-
9189
Fetches a **ChatGroup** by ID, including a paginated list of **Chats**
9290
associated with the **ChatGroup**.
@@ -166,7 +164,6 @@ service:
166164
list-chat-group-events:
167165
path: /v0/evi/chat_groups/{id}/events
168166
method: GET
169-
auth: true
170167
docs: >-
171168
Fetches a paginated list of **Chat** events associated with a **Chat
172169
Group**.
@@ -547,7 +544,6 @@ service:
547544
get-audio:
548545
path: /v0/evi/chat_groups/{id}/audio
549546
method: GET
550-
auth: true
551547
docs: >-
552548
Fetches a paginated list of audio for each **Chat** within the specified
553549
**Chat Group**. For more details, see our guide on audio reconstruction

.mock/definition/empathic-voice/chatWebhooks.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ webhooks:
1111
- payload:
1212
chat_group_id: chat_group_id
1313
chat_id: chat_id
14+
config_id: null
15+
caller_number: null
16+
custom_session_id: null
1417
duration_seconds: 1
1518
end_reason: ACTIVE
1619
end_time: 1
@@ -25,6 +28,9 @@ webhooks:
2528
- payload:
2629
chat_group_id: chat_group_id
2730
chat_id: chat_id
31+
config_id: null
32+
caller_number: null
2833
chat_start_type: new_chat_group
34+
custom_session_id: null
2935
start_time: 1
3036
docs: Sent when an EVI chat is started.

0 commit comments

Comments
 (0)