@bytexbyte/nxtlinq-ai-agent-ui-react-development 0.1.2 → 0.1.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentAssistantContext.d.ts","sourceRoot":"","sources":["../../src/context/AgentAssistantContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK1F,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAC5D,qBAAqB,GAAG;IACxB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD,CAAC;AAIF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,EAAE,EAAE,IAAI,CACN,qBAAqB,EACnB,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,OAAO,GACP,mBAAmB,GACnB,wBAAwB,CAC3B,CAAC;CACH,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,EAAE,GACH,EAAE,2BAA2B,GAAG,KAAK,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"AgentAssistantContext.d.ts","sourceRoot":"","sources":["../../src/context/AgentAssistantContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK1F,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAC5D,qBAAqB,GAAG;IACxB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD,CAAC;AAIF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,EAAE,EAAE,IAAI,CACN,qBAAqB,EACnB,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,OAAO,GACP,mBAAmB,GACnB,wBAAwB,CAC3B,CAAC;CACH,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,EAAE,GACH,EAAE,2BAA2B,GAAG,KAAK,CAAC,YAAY,CA8MlD;AAED,wBAAgB,iBAAiB,IAAI,0BAA0B,CAQ9D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAU5D"}
|
|
@@ -66,6 +66,24 @@ export function AgentAssistantProvider({ children, ui, }) {
|
|
|
66
66
|
setInteractionMode,
|
|
67
67
|
]);
|
|
68
68
|
const { wrappedStartVoice, wrappedStopVoice, wrappedInterrupt, isVoiceChannelReady, } = useVoiceConnectOrchestration(agent, voice, interactionMode, micStartsMuted, orchestrationCallbacks);
|
|
69
|
+
// iOS 切換 App 或相機後返回時,若 WebRTC App Channel 已斷開則自動停止語音 session,
|
|
70
|
+
// 避免麥克風圖示顯示活躍但狀態卡在 Idle 的問題。
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (typeof document === 'undefined')
|
|
73
|
+
return;
|
|
74
|
+
const handleVisibilityChange = () => {
|
|
75
|
+
if (document.visibilityState !== 'visible')
|
|
76
|
+
return;
|
|
77
|
+
if (voice.voiceSessionId == null)
|
|
78
|
+
return;
|
|
79
|
+
const session = agent.agent.getVoiceSession();
|
|
80
|
+
if (!session?.isAppChannelOpen()) {
|
|
81
|
+
void wrappedStopVoice();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
85
|
+
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
86
|
+
}, [voice.voiceSessionId, agent.agent, wrappedStopVoice]);
|
|
69
87
|
const theme = useMemo(() => ({
|
|
70
88
|
...defaultAgentAssistantTheme,
|
|
71
89
|
...ui.theme,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytexbyte/nxtlinq-ai-agent-ui-react-development",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Official React Web UI for nxtlinq AI Agent — drop-in chat widget",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
"uuid": "^11.1.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@bytexbyte/nxtlinq-ai-agent-core-development": "
|
|
53
|
-
"@bytexbyte/nxtlinq-ai-agent-web-development": "
|
|
52
|
+
"@bytexbyte/nxtlinq-ai-agent-core-development": "workspace:^",
|
|
53
|
+
"@bytexbyte/nxtlinq-ai-agent-web-development": "workspace:^",
|
|
54
54
|
"@types/react": "^18.2.64",
|
|
55
55
|
"@types/react-dom": "^18.2.25",
|
|
56
56
|
"react": "^18.2.0",
|
|
@@ -164,6 +164,22 @@ export function AgentAssistantProvider({
|
|
|
164
164
|
orchestrationCallbacks,
|
|
165
165
|
);
|
|
166
166
|
|
|
167
|
+
// iOS 切換 App 或相機後返回時,若 WebRTC App Channel 已斷開則自動停止語音 session,
|
|
168
|
+
// 避免麥克風圖示顯示活躍但狀態卡在 Idle 的問題。
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
if (typeof document === 'undefined') return;
|
|
171
|
+
const handleVisibilityChange = () => {
|
|
172
|
+
if (document.visibilityState !== 'visible') return;
|
|
173
|
+
if (voice.voiceSessionId == null) return;
|
|
174
|
+
const session = agent.agent.getVoiceSession();
|
|
175
|
+
if (!session?.isAppChannelOpen()) {
|
|
176
|
+
void wrappedStopVoice();
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
180
|
+
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
181
|
+
}, [voice.voiceSessionId, agent.agent, wrappedStopVoice]);
|
|
182
|
+
|
|
167
183
|
const theme = useMemo(
|
|
168
184
|
() => ({
|
|
169
185
|
...defaultAgentAssistantTheme,
|