Skip to content

Commit c0d5ef8

Browse files
author
Shashwat
committed
Refresh the customer support experience
1 parent ba9dd09 commit c0d5ef8

16 files changed

Lines changed: 1066 additions & 217 deletions

File tree

THIRD_PARTY_NOTICES.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Third-party notices
2+
3+
Able includes software from the following projects. These notices apply to
4+
the named third-party components and do not change Able's Apache-2.0 license.
5+
6+
## Lucide Icons
7+
8+
ISC License
9+
10+
Copyright (c) 2026 Lucide Icons and Contributors
11+
12+
Permission to use, copy, modify, and/or distribute this software for any
13+
purpose with or without fee is hereby granted, provided that the above
14+
copyright notice and this permission notice appear in all copies.
15+
16+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
19+
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
20+
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
21+
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
22+
USE OR PERFORMANCE OF THIS SOFTWARE.
23+
24+
The following icons used by Able are derived from the Feather project:
25+
`arrow-up`, `chevron-down`, `chevron-right`, `headphones`, and `plus`.
26+
27+
The MIT License (MIT)
28+
29+
Copyright (c) 2013-present Cole Bemis
30+
31+
Permission is hereby granted, free of charge, to any person obtaining a copy
32+
of this software and associated documentation files (the "Software"), to deal
33+
in the Software without restriction, including without limitation the rights
34+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
35+
copies of the Software, and to permit persons to whom the Software is
36+
furnished to do so, subject to the following conditions:
37+
38+
The above copyright notice and this permission notice shall be included in all
39+
copies or substantial portions of the Software.
40+
41+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
44+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
45+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
46+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
47+
SOFTWARE.

apps/desk/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
"agents": "0.20.1",
9797
"ai": "7.0.64",
9898
"hono": "^4.13.1",
99+
"lucide": "^1.27.0",
99100
"marked": "^18.0.7",
100101
"postal-mime": "^2.7.5",
101102
"remend": "^1.3.0",

apps/desk/public/voice-demo.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/desk/public/voice-demo.js

Lines changed: 105 additions & 102 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/desk/src/voice/demo-agent.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,16 @@ export class AbleDeskAgent extends VoiceAgent<Env> {
251251
}
252252
return
253253
}
254+
if (parsed.type === 'voice_feedback') {
255+
const assistantTurn = Number(parsed.assistantTurn)
256+
const rating = parsed.rating
257+
if (connectionState(connection).sessionProofPassed !== true
258+
|| !Number.isInteger(assistantTurn) || assistantTurn < 0 || assistantTurn >= 80
259+
|| (rating !== 'helpful' && rating !== 'not_helpful')) return
260+
console.log(JSON.stringify({ event: 'voice_feedback', assistantTurn, rating }))
261+
connection.send(JSON.stringify({ type: 'voice_feedback_received', assistantTurn, rating }))
262+
return
263+
}
254264
if (parsed.type !== 'clear_demo_session') return
255265
await this.#patchSession({
256266
pendingEscalation: null,

0 commit comments

Comments
 (0)