dsh-plugin-mobile-gateway 0.10.0 → 0.10.2
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/PROTOCOL.md +125 -7
- package/README.md +23 -1
- package/docs/dsh-rc2-mobile-integration.md +9 -1
- package/docs/file-cards-mobile-integration.md +111 -0
- package/docs/voice-input-hold-thresholds.md +35 -0
- package/docs/voice-input-implementation.md +275 -0
- package/docs/voice-input-ipa-analysis.md +150 -0
- package/docs/voice-input-ipa-evidence/deepseek-asr-constructor.asm +338 -0
- package/docs/voice-input-ipa-evidence/deepseek-extraction.json +5154 -0
- package/docs/voice-input-ipa-evidence/deepseek-focused-context.txt +210 -0
- package/docs/voice-input-ipa-evidence/deepseek-localization.json +29 -0
- package/docs/voice-input-ipa-evidence/deepseek-voice-strings.txt +206 -0
- package/docs/voice-input-ipa-evidence/doubao/address-map.txt +11 -0
- package/docs/voice-input-ipa-evidence/doubao/code-string-refs.txt +22 -0
- package/docs/voice-input-ipa-evidence/doubao/end-longpress-disasm.txt +149 -0
- package/docs/voice-input-ipa-evidence/doubao/focused-context.txt +271 -0
- package/docs/voice-input-ipa-evidence/doubao/locate_string_refs.py +42 -0
- package/docs/voice-input-ipa-evidence/doubao/network-candidates.txt +39 -0
- package/docs/voice-input-ipa-evidence/doubao/objc-msgsend-stub.txt +1 -0
- package/docs/voice-input-ipa-evidence/doubao/ranges.txt +858 -0
- package/docs/voice-input-ipa-evidence/doubao/recognizer-recorder.txt +134 -0
- package/docs/voice-input-ipa-evidence/doubao/result-disasm.txt +189 -0
- package/docs/voice-input-ipa-evidence/doubao/settext-selector.txt +2 -0
- package/docs/voice-input-ipa-evidence/doubao/start-stop-disasm.txt +358 -0
- package/docs/voice-input-ipa-evidence/doubao/strings.txt +3536 -0
- package/docs/voice-input-ipa-evidence/doubao-extraction.json +7418 -0
- package/docs/voice-input-ipa-evidence/doubao-findings.md +52 -0
- package/docs/voice-input-ipa-evidence/hold-threshold-rea-evidence.json +1 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/deepseek-hold-callback-refs.txt +1 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/deepseek-input-area-metadata.txt +31 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/deepseek-input-gesture-init.asm +267 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/deepseek-static-summary.json +42 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/deepseek-voice-gesture-constructor.asm +371 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/doubao-findings.md +31 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/doubao-text-mask-objc-metadata.txt +119 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/doubao-text-mask-threshold-evidence.asm +156 -0
- package/docs/voice-input-ipa-evidence/hold-thresholds/doubao-text-mask-voice-view-getter.asm +14 -0
- package/docs/voice-input-ipa-evidence/rea-evidence.json +1 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/README.md +33 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-objc.txt +222957 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-preconfigure-annotated.asm +90 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-preconfigure.asm +90 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-session-configure-annotated.asm +131 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-session-configure.asm +131 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-string-reference-candidates.json +20 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/deepseek-touch-began.asm +133 -0
- package/docs/voice-input-ipa-evidence/startup-20261014/rea-macho-summary.json +2435 -0
- package/lib/client.js +6 -1
- package/lib/dsh-host-adapter.mjs +10 -0
- package/lib/index.mjs +90 -14
- package/lib/session-event-details.mjs +53 -0
- package/lib/speech-input.mjs +192 -0
- package/package.json +3 -3
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
0xb359e00 VoiceInputError.Recorder(
|
|
2
|
+
0xb359e20 flow_audio_asr_opt
|
|
3
|
+
0xb359e40 flow_audio_minutes_opt
|
|
4
|
+
0xb359e60 should retry error code
|
|
5
|
+
0xb359e80 /Users/q5qtxbc19ghz4dqi/73334/Modules/FlowAudio/Sources/Application/VoiceInput/VoiceInputSessionImpl.swift
|
|
6
|
+
0xb359ef0 shouldEorrorRetry(_:)
|
|
7
|
+
0xb359f10 disable retry error code prefix
|
|
8
|
+
0xb359f30 start voice input session
|
|
9
|
+
0xb359f50 stop voice input session
|
|
10
|
+
0xb359f70 voice input session cancel
|
|
11
|
+
0xb359f90 _TtC9FlowAudio21VoiceInputSessionImpl
|
|
12
|
+
0xb359fc0 recognizerConfig
|
|
13
|
+
0xb359fe0 recorderStartTime
|
|
14
|
+
0xb35a000 recorderStartError
|
|
15
|
+
0xb35a020 recorderStartCondition
|
|
16
|
+
0xb35a040 recorderStopCondition
|
|
17
|
+
0xb35a056 asrTask
|
|
18
|
+
0xb35a05e cancelReason
|
|
19
|
+
0xb35a079 maxRetryTimes
|
|
20
|
+
0xb35a087 voiceRecognizer
|
|
21
|
+
0xb35a0a0 _TtC9FlowAudioP33_CF9FCBB61586E24BBFDFF893F65FB5D514AsyncCondition
|
|
22
|
+
0xb35a0f0 continuation
|
|
23
|
+
0xb35a100 signal condition
|
|
24
|
+
0xb35a120 begin wait condition
|
|
25
|
+
0xb35a140 finish wait condition
|
|
26
|
+
0xb35a160 taskStop(reason:)
|
|
27
|
+
0xb35a180 voice input did finish recording
|
|
28
|
+
0xb35a1b0 recording time < min recording time cancel asr
|
|
29
|
+
0xb35a1e0 min_recording_time
|
|
30
|
+
0xb35a200 recorder start failed, no need to stop
|
|
31
|
+
0xb35a230 asr task terminated
|
|
32
|
+
0xb35a250 voice input did start
|
|
33
|
+
0xb35a270 voice input did fail
|
|
34
|
+
0xb35a290 voice input did start recording
|
|
35
|
+
0xb35a2b0 voice input did finish
|
|
36
|
+
0xb35a2d0 voice input did cancel
|
|
37
|
+
0xb35a2f0 delete audio file
|
|
38
|
+
0xb35a310 max retry times < 0
|
|
39
|
+
0xb35a330 audioFileMissing
|
|
40
|
+
0xb35a350 voice input failed retrying
|
|
41
|
+
0xb35a370 voice input failed, after retry
|
|
42
|
+
0xb35a3a0 disable_retry_error_code_with_prefix_match
|
|
43
|
+
0xb35a3d0 enable_retry_error_code_with_complete_match
|
|
44
|
+
0xb35a400 start
|
|
45
|
+
0xb35a406 interrupt
|
|
46
|
+
0xb35a410 touchDownToRecordingStart
|
|
47
|
+
0xb35a430 touchUpToRecordingStop
|
|
48
|
+
0xb35a450 touchUpToReceiveASRResult
|
|
49
|
+
0xb35a470 enable_upload_audio
|
|
50
|
+
0xb35a490 FlowAudio.VoiceInputSessionTracker
|
|
51
|
+
0xb35a4c0 _TtC9FlowAudio24VoiceInputSessionTracker
|
|
52
|
+
0xb35a505 stereo
|
|
53
|
+
0xb35a510 Flow.Audio.AVAudioEngineBasedVoicePlayer.Schedule
|
|
54
|
+
0xb35a550 Flow.Audio.AVAudioEngineBasedVoicePlayer.Play
|
|
55
|
+
0xb35a580 fail to start audio engine. err =
|
|
56
|
+
0xb35a5b0 /Users/q5qtxbc19ghz4dqi/73334/Modules/FlowAudio/Sources/Foundation/VoicePlayer/VoicePlayer+AVAudioEngine.swift
|
|
57
|
+
0xb35a620 uncache unplayed voice data, id =
|
|
58
|
+
0xb35a650 reset unPlayed data
|
|
59
|
+
0xb35a670 resetUnPlayedData()
|
|
60
|
+
0xb35a690 audio engine is not running, isRunning:
|
|
61
|
+
0xb35a6c0 audioEngine.isRunning:
|
|
62
|
+
0xb35a6e0 isDoraInterrupt:
|
|
63
|
+
0xb35a700 isMediaServiceLost:
|
|
64
|
+
0xb35a720 realPlay(voiceData:completion:)
|
|
65
|
+
0xb35a740 engineNotRunning
|
|
66
|
+
0xb35a760 cache unplayed voice data, id =
|
|
67
|
+
0xb35a790 fail to create pcm buffer
|
|
68
|
+
0xb35a7b0 failToCreatePCMBuffer
|
|
69
|
+
0xb35a7d0 schedule voice data for playing, id =
|
|
70
|
+
0xb35a800 fail to resume audio engine, err =
|
|
71
|
+
0xb35a830 player duck to:
|
|
72
|
+
0xb35a850 duck(to:animate:completion:)
|
|
73
|
+
0xb35a870 player duck no action
|
|
74
|
+
0xb35a890 resumeWhenConfigChanged
|
|
75
|
+
0xb35a8b0 resumeWhenConfigChanged()
|
|
76
|
+
0xb35a8d0 stopFromMediaServiceLost
|
|
77
|
+
0xb35a8f0 stopFromMediaServiceLost()
|
|
78
|
+
0xb35a910 resumeFromMediaServiceLost
|
|
79
|
+
0xb35a930 resumeFromMediaServiceLost()
|
|
80
|
+
0xb35a950 init safe voice player
|
|
81
|
+
0xb35a970 init(id:config:saveToFile:)
|
|
82
|
+
0xb35a990 play(voiceData:completion:)
|
|
83
|
+
0xb35a9b0 _TtC9FlowAudio29AVAudioEngineBasedVoicePlayer
|
|
84
|
+
0xb35a9e0 _outputAmplitude
|
|
85
|
+
0xb35a9f3 _lastComsumeId
|
|
86
|
+
0xb35aa10 _leftLastComsumeId
|
|
87
|
+
0xb35aa30 _rightLastComsumeId
|
|
88
|
+
0xb35aa44 _isInterrupt
|
|
89
|
+
0xb35aa51 _fromStop
|
|
90
|
+
0xb35aa5b _saveAudioData
|
|
91
|
+
0xb35aa6a isCacheEnable
|
|
92
|
+
0xb35aa87 audioFile
|
|
93
|
+
0xb35aaa0 leftDumpAudioFile
|
|
94
|
+
0xb35aac0 rightDumpAudioFile
|
|
95
|
+
0xb35aada leftPlayerNode
|
|
96
|
+
0xb35aae9 rightPlayerNode
|
|
97
|
+
0xb35aaf9 stereoMixer
|
|
98
|
+
0xb35ab05 timePitch
|
|
99
|
+
0xb35ab12 scheduleQueue
|
|
100
|
+
0xb35ab20 scheduleIndex
|
|
101
|
+
0xb35ab2e scheduleCache
|
|
102
|
+
0xb35ab40 unPlayedVoiceData
|
|
103
|
+
0xb35ab52 enginePrepared
|
|
104
|
+
0xb35ab70 cachedDataMapMediaLost
|
|
105
|
+
0xb35ab90 isMediaServiceLost
|
|
106
|
+
0xb35aba3 playQueue
|
|
107
|
+
0xb35abb6 lastVolume
|
|
108
|
+
0xb35abd0 playbackFrameCount
|
|
109
|
+
0xb35abf0 _TtC9FlowAudio33SafeAVAudioEngineBasedVoicePlayer
|
|
110
|
+
0xb35ac30 yyyy_MM_dd_HH_mm_ss
|
|
111
|
+
0xb35ac50 consume voice data. continue with id:
|
|
112
|
+
0xb35ac80 consume(voiceData:)
|
|
113
|
+
0xb35aca0 consume voice data. interrupt with id:
|
|
114
|
+
0xb35acd0 consume voice data. id =
|
|
115
|
+
0xb35acf0 failed with no index
|
|
116
|
+
0xb35ad10 v24@?0@"AVAudioPCMBuffer"8@"AVAudioTime"16
|
|
117
|
+
0xb35ad40 catchException(function:completion:)
|
|
118
|
+
0xb35ad70 resumeFromMediaServiceLost dataids:
|
|
119
|
+
0xb35ada0 resetCacheFromMediaServiceLost
|
|
120
|
+
0xb35adc0 resetCacheFromMediaServiceLost()
|
|
121
|
+
0xb35adf0 consume voice data. resume with id:
|
|
122
|
+
0xb35ae20 update playback speed:
|
|
123
|
+
0xb35ae40 updatePlaybackSpeed(_:)
|
|
124
|
+
0xb35ae60 animate(duration:change:completion:)
|
|
125
|
+
0xb35ae90 change volume finished
|
|
126
|
+
0xb35aeb0 change volume with animation,
|
|
127
|
+
0xb35aed0 finish playing voice data. id =
|
|
128
|
+
0xb35af00 , channelName =
|
|
129
|
+
0xb35af20 store voice data. id =
|
|
130
|
+
0xb35af40 store(voiceData:completion:)
|
|
131
|
+
0xb35af60 player is deallocating, skip
|
|
132
|
+
0xb35af80 prepare audio engine, timeElapsed =
|
|
133
|
+
0xb35afb0 playbackMode =
|
|
134
|
+
0xb35afd0 prepareAudioEngine()
|
|
135
|
+
0xb35aff0 prepareVoicePlayer
|
|
136
|
+
0xb35b010 fail to start audio engine, retrying for the
|
|
137
|
+
0xb35b040 startAudioEngine()
|
|
138
|
+
0xb35b060 status changed:
|
|
139
|
+
0xb35b080 failToStart
|
|
140
|
+
0xb35b090 failToCreateBuffer
|
|
141
|
+
0xb35b0a3 started
|
|
142
|
+
0xb35b0b0 _TtC9FlowAudio18VoicePlayerTracker
|
|
143
|
+
0xb35b0e0 Flow.SAMIMixedVoiceDataStreamProcessor
|
|
144
|
+
0xb35b110 _TtC9FlowAudio23SAMIMixedVoiceProcessor
|
|
145
|
+
0xb35b140 mixedPreviewSession
|
|
146
|
+
0xb35b160 mixedResultCallback
|
|
147
|
+
0xb35b180 mixedFinishCallback
|
|
148
|
+
0xb35b194 ttsQueue
|
|
149
|
+
0xb35b1a0 Failed to receive audio data, status =
|
|
150
|
+
0xb35b1d0 /Users/q5qtxbc19ghz4dqi/73334/Modules/FlowAudio/
|
|
151
|
+
0xbbbdd3f format:not recognized
|
|
152
|
+
0xbbbe5f6 zface load model failed, unrecognized model version
|
|
153
|
+
0xbbbea5c load model failed, unrecognized model
|
|
154
|
+
0xbbc40a1 ios-recognized-gesture-class
|
|
155
|
+
0xbbc40be setIosRecognizedGestureClass
|
|
156
|
+
0xbbc4105 UIScrollViewPanGestureRecognizer
|
|
157
|
+
0xbbc6cd6 -//W3C//DTD HTML 3.2 Draft//
|
|
158
|
+
0xbbc6d27 -//W3C//DTD HTML 3.2S Draft//
|
|
159
|
+
0xbbd0e81 convertASRAudioInfo
|
|
160
|
+
0xbbd0e96 convertASRAudioInfo
|
|
161
|
+
0xbbd0ed3 convertAudioASRConfig
|
|
162
|
+
0xbbd15da set need compensate endAsr
|
|
163
|
+
0xbbd15f5 sent endAsr
|
|
164
|
+
0xbbd1996 session started, compensate endAsr event
|
|
165
|
+
0xbbd1ab6 speechDumpPath
|
|
166
|
+
0xbbd1b74 speech_config
|
|
167
|
+
0xbbd1c62 speech_aec_config
|
|
168
|
+
0xbbd2867 ","style_id":"zh_female_wenroutaozi_uranus_bigtts","style_name":"","language_code":"zh","language_key":"chinese_language","preview":{"version":"","preview_text":"","preview_audio":"op_voice/1765853242941191145.mp3","md5":"812ddac59a43e2ce535203563f0c8af7"},"creator_id":"4427048924229208","status":1,"private_status":1,"ugc_voice":false,"create_time":0,"creator_username":"","icon":{"uri":"FileBizType.BIZ_BOT_ICON/1166209_1705411537442891198.png","url":""},"name_status":1,"audio_metrics":"{\"audio_params\":{\"num_channel\":1,\"sample_rate\":24000},\"loudness\":{\"delta_loudness\":1.2942790985107422,\"integrated_loudness\":-19.264503479003906,\"loudness_range\":2.6000003814697266,\"lra_end\":-18.399999618530273,\"lra_start\":-21,\"max_mom_loud\":-14.812909126281738,\"max_short_term_loud\":-17.970224380493164},\"rms_stats\":{\"background_noise_left\":-76.7090835571289,\"dc_offset_left\":-0.00067029445199295878,\"dynamic_range_left\":73.8992156982422,\"estimated_snr_left\":65.4081573486328,\"left_right_diff\":0,\"left_total\":-19.125986099243164,\"minimum\":-300,\"normed_std_left\":-7.16160774230957,\"peak\":-1.0746761560440063,\"std_left\":-26.287593841552734},\"version\":\"1.4.2\"}","voice_conf_status":0,"mix_voice_list":[],"pitch":0,"speech_rate":10,"style_id_phone_call":"zh_female_wenroutaozi_v2_mars_bigtts","pitch_f64":0,"speech_rate_f64":10,"extra":"{\"post_process\":{\"pitch\":0,\"speech_rate\":1}}"},"percentage":100,"is_enable":true}],"pitch":0,"speech_rate":10,"style_id_phone_call":"zh_female_wenroutaozi_v2_mars_bigtts","pitch_f64":0,"speech_rate_f64":10,"extra":"{\"post_process\":{\"pitch\":0,\"speech_rate\":1}}"},"edit_pos":"{\"name\":true,\"description_for_model\":true,\"description_for_human\":true,\"icon_uri\":true,\"model_type\":false,\"voice_type\":true,\"delete\":true,\"bot_language\":true}","create_time":1684483451,"update_time":1765876762,"icon_uri":"FileBizType.BIZ_BOT_ICON/female_spring_2025_1.png","disabled":false,"recommend_index":0,"disabled_tag":"normal","muted":false,"bot_type":1,"share_info":{"share_status":"shareable","share_url":"https://www.doubao.com/download/","is_show_share_tab":true,"is_show_message_share":true,"qr_code_url":"https://www.doubao.com/download/"},"icon_image":{"uri":"FileBizType.BIZ_BOT_ICON/female_spring_2025_1.png","tiny_url":"https://p3-flow-op.byteimg.com/tos-cn-i-55yens32bg/tiny_url.png~tplv-55yens32bg-image.image","origin_url":"https://p3-flow-op.byteimg.com/tos-cn-i-55yens32bg/icon_url.png~tplv-55yens32bg-image.image","image_720":""},"creator_info":{"creator_id":"0"},"private_status":3,"bot_id":"7234781073513644036","has_conversation":false,"onboarding":{"prologue":"","suggests":null,"content":"","version":2,"message_list":[{"conversation_id":null,"section_id":null,"message_id":null,"index":1,"reply_id":null,"status":1,"message_type":1,"content_type":1,"content":"{\"text\":\"
|
|
169
|
+
0xbbddfbf av.AudioASRInfo.question_id
|
|
170
|
+
0xbbddfdb av.AudioASRInfo.asr_task_id
|
|
171
|
+
0xbbddff7 av.AudioASRInfo.local_message_id
|
|
172
|
+
0xbbde018 av.AudioASRInfo
|
|
173
|
+
0xbbde028 av.AudioAsrResponse_Result.text
|
|
174
|
+
0xbbde048 av.AudioAsrResponse_Extra.semantic_integrity_seg
|
|
175
|
+
0xbbde079 av.AudioAsrResponse_Extra.sv_result
|
|
176
|
+
0xbbde09d av.AudioAsrEnd
|
|
177
|
+
0xbbde362 av.AudioTTSSentenceStart.speech_hello_type
|
|
178
|
+
0xbbde65f av.StartSession.sami_header
|
|
179
|
+
0xbbde6fa av.ASRStatus
|
|
180
|
+
0xbbde902 av.AudioASRConfig.extra
|
|
181
|
+
0xbbde91a av.AudioASRConfig.lang
|
|
182
|
+
0xbbde931 av.ASRAudioInfo.format
|
|
183
|
+
0xbbde948 av.ASRAudioInfo
|
|
184
|
+
0xbbdec91 av.AudioEndAsr
|
|
185
|
+
0xbbdedb7 av.DownlinkMessage.speech_event
|
|
186
|
+
0xbbdefef av.UplinkMessage.speech_event
|
|
187
|
+
0xbbdfb8b SPEECH_FLOW_GATEWAY_MESSAGE_EVENT
|
|
188
|
+
0xbbdfc09 SPEECH_FLOW_GATEWAY_MESSAGE_NET_CONNECTED
|
|
189
|
+
0xbbdfc33 SPEECH_FLOW_GATEWAY_MESSAGE_NET_ERRORED
|
|
190
|
+
0xbbdfc5b SPEECH_FLOW_GATEWAY_MESSAGE_NET_ERRORED:
|
|
191
|
+
0xbbdfd8f speech context init failed
|
|
192
|
+
0xbbdfde7 speech handle create failed
|
|
193
|
+
0xbbef8ce So8SAMICoreCSg
|
|
194
|
+
0xbbef98e So8SAMICoreC
|
|
195
|
+
0xbbefa32 $s9FlowAudio28SAMIAssistantSessionDelegateP
|
|
196
|
+
0xbbefc40 $s9FlowAudio26SAMIAssistantEventListenerP
|
|
197
|
+
0xbbefd3e So25SAMICoreOCVopAudioCheckerC
|
|
198
|
+
0xbbefdf2 So8SAMICoreCSg_Sit
|
|
199
|
+
0xbbefe06 ScCySo8SAMICoreCSg_Sit
|
|
200
|
+
0xbbeffc8 $s9FlowAudio010VoiceInputB12DataInjecterP
|
|
201
|
+
0xbbf0088 $s9FlowAudio25VoiceInputSessionDelegateP
|
|
202
|
+
0xbbf00b8 $s9FlowAudio17VoiceInputContextP
|
|
203
|
+
0xbbf00da $s9FlowAudio17VoiceInputSessionP
|
|
204
|
+
0xbbf06f8 $s9FlowAudio15VoiceRecognizerP
|
|
205
|
+
0xbbf0718 $s9FlowAudio23VoiceRecognizerListenerP
|
|
206
|
+
0xbbf6e42 So27UIGestureRecognizerDelegate_So22UINavigationControllerCXcSgXw
|
|
207
|
+
0xbbf6e84 So27UIGestureRecognizerDelegate_So22UINavigationControllerCXcSgXwz_Xx
|
|
208
|
+
0xbbfa8c6 So22UITapGestureRecognizerC
|
|
209
|
+
0xbbfaba4 So22UITapGestureRecognizerCSg
|
|
210
|
+
0xbbfabc2 So28UILongPressGestureRecognizerCSg
|
|
211
|
+
0xbbfac13 ySo19UIGestureRecognizerCG
|
|
212
|
+
0xbbfadd2 So22UIPanGestureRecognizerCSg
|
|
213
|
+
0xbbfb7f6 So24UISwipeGestureRecognizerCSg
|
|
214
|
+
0xbbfbd1c So27UIGestureRecognizerDelegate_So22UINavigationControllerCXc
|
|
215
|
+
0xbbfc806 $s7FlowKit38MessagingDraftComponentContextProviderP
|
|
216
|
+
0xbbffea4 So27UIGestureRecognizerDelegate_So16UIViewControllerCXcSgXw
|
|
217
|
+
0xbbffee0 So22UIPanGestureRecognizerCSgXw
|
|
218
|
+
0xbbfff00 So27UIGestureRecognizerDelegate_So16UIViewControllerCXcSgXwz_Xx
|
|
219
|
+
0xbbfff40 So22UIPanGestureRecognizerCSgXwz_Xx
|
|
220
|
+
0xbc0125a So28UILongPressGestureRecognizerC
|
|
221
|
+
0xbc0213a $s5AISDK28AIFloatingSpeakerASRDelegateP
|
|
222
|
+
0xbc04414 So27UIGestureRecognizerDelegate_pSgXw
|
|
223
|
+
0xbc0fb8a $s9FlowAVSDK17SpeechAECDelegateP
|
|
224
|
+
0xbc0fbb8 9FlowAVSDK17SpeechAECDelegate_pSgXw
|
|
225
|
+
0xbc0fbe2 $s9FlowAVSDK28SpeechProcessorEventDelegateP
|
|
226
|
+
0xbc0fc0e $s9FlowAVSDK27SpeechProcessorDataDelegateP
|
|
227
|
+
0xbc0fc46 9FlowAVSDK27SpeechProcessorDataDelegate_pSgXw
|
|
228
|
+
0xbc0fc74 9FlowAVSDK28SpeechProcessorEventDelegate_pSgXw
|
|
229
|
+
0xbc0fca4 So21OSpeechSessionManagerCSg
|
|
230
|
+
0xbc0fcc2 So23OSpeechRealtimeCallTaskCSg
|
|
231
|
+
0xbc0fce2 So16OSpeechLinkLayerCSg
|
|
232
|
+
0xbc14342 SS17asrLocalMessageID_
|
|
233
|
+
0xbc14366 SS17asrLocalMessageID_
|
|
234
|
+
0xbc149a4 So25SAMICore_AudioMetricsLiteC
|
|
235
|
+
0xbc1553e $s14FlowAudioUtils26VoiceInputInjecterProtocolP
|
|
236
|
+
0xbc170f2 So24UISwipeGestureRecognizerC
|
|
237
|
+
0xbc1a4e8 ySo22UIPanGestureRecognizerC_SbtcSg
|
|
238
|
+
0xbc1aa90 ySo24UIPinchGestureRecognizerCcSg
|
|
239
|
+
0xbc1f36a So28UILongPressGestureRecognizerC7gesture_
|
|
240
|
+
0xbc1f3f4 $s12FlowChatCore21MessagingDraftServiceP
|
|
241
|
+
0xbc22566 So32UIScreenEdgePanGestureRecognizerCSg
|
|
242
|
+
0xbc29872 So19UIGestureRecognizerC
|
|
243
|
+
0xbc42624 $s14FlowDocKitImpl0B18VoiceInputDelegateP
|
|
244
|
+
0xbc46684 $s10FlowDocSDK0aB17VoiceInputSessionP
|
|
245
|
+
0xbc4a6cf So8SAMICoreCG
|
|
246
|
+
0xbc4e8e6 $s11FlowDoraKit28SAMIWakeupVoicePrintObserverP
|
|
247
|
+
0xbc51662 $s14FlowHardixImpl30DoraSamiConnectionToolDelegateP
|
|
248
|
+
0xbc5fe30 $s17FlowInputBizModel09MessagingB12DraftServiceP
|
|
249
|
+
0xbc77224 So19UIGestureRecognizerCSg
|
|
250
|
+
0xbc7e042 So24UIPinchGestureRecognizerCSg
|
|
251
|
+
0xbc80aee SbSo19UIGestureRecognizerCcSg
|
|
252
|
+
0xbc838ea So22UIPanGestureRecognizerC
|
|
253
|
+
0xbc8390c So32UIScreenEdgePanGestureRecognizerC
|
|
254
|
+
0xbc88880 $s13FlowSocialBiz26ChatVoiceInputViewDelegateP
|
|
255
|
+
0xbc8f284 So22UITapGestureRecognizerCSgXw
|
|
256
|
+
0xbc8fbef ySo22UITapGestureRecognizerCG
|
|
257
|
+
0xbc92480 $s14FlowVoiceInput0abC8ProviderP
|
|
258
|
+
0xbc924a2 $s14FlowVoiceInput0bC15SessionProviderP
|
|
259
|
+
0xbc924ca $s14FlowVoiceInput0bC17ViewModelListenerP
|
|
260
|
+
0xbc924f4 $s14FlowVoiceInput0abC8ProtocolP
|
|
261
|
+
0xbc92516 $s14FlowVoiceInput21MessageRecordListenerP
|
|
262
|
+
0xbc92542 $s14FlowVoiceInput27MessageRecordCenterProviderP
|
|
263
|
+
0xbc92574 $s14FlowVoiceInput23MessagingAVSessionEventP
|
|
264
|
+
0xbc925be $s14FlowVoiceInput25MessagingAVSessionServiceP
|
|
265
|
+
0xbc925ee $s14FlowVoiceInput31MessagingContinuousSpeakServiceP
|
|
266
|
+
0xbc92624 $s14FlowVoiceInput35MessagingContinuousSpeakModeServiceP
|
|
267
|
+
0xbc9265e $s14FlowVoiceInput39MessagingContinuousSpeakServiceDelegateP
|
|
268
|
+
0xbc926c0 $s14FlowVoiceInput09MessagingbC7ServiceP
|
|
269
|
+
0xbc926ea $s14FlowVoiceInput09Messagingc4ViewB17ToCompleteServiceP
|
|
270
|
+
0xbc927f6 $s19FlowVoiceInputBizUI05BasiccB16MaskViewDelegateP
|
|
271
|
+
0xbc92882 $s19FlowVoiceInputBizUI05BasiccB12ViewDelegateP
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""python3 locate_string_refs.py MACH_O HEX_FILE_OFFSET ...
|
|
3
|
+
Conservative raw ADRP+ADD candidate scanner; it does not validate register liveness.
|
|
4
|
+
"""
|
|
5
|
+
import struct,re,bisect,sys
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
b=Path(sys.argv[1]).read_bytes();pos=32;secs=[];segs=[];foff=fsize=None
|
|
8
|
+
for i in range(struct.unpack_from('<I',b,16)[0]):
|
|
9
|
+
c,z=struct.unpack_from('<II',b,pos)
|
|
10
|
+
if c==0x26:foff,fsize=struct.unpack_from('<II',b,pos+8)
|
|
11
|
+
if c==0x19:
|
|
12
|
+
va,vs,fo,fs=struct.unpack_from('<QQQQ',b,pos+24);segs.append((va,fo,fs))
|
|
13
|
+
for j in range(struct.unpack_from('<I',b,pos+64)[0]):
|
|
14
|
+
q=pos+72+j*80;name=b[q:q+16].rstrip(b'\0').decode();v,s,f=struct.unpack_from('<QQI',b,q+32);secs.append((name,v,s,f))
|
|
15
|
+
pos+=z
|
|
16
|
+
def addr(off):return next(v+off-f for v,f,s in segs if f<=off<f+s)
|
|
17
|
+
targs={addr(int(x,16)):x for x in sys.argv[2:]};starts=[]
|
|
18
|
+
if foff is not None:
|
|
19
|
+
cur=next(v for v,f,s in segs if f==0 and s);p=foff
|
|
20
|
+
while p<foff+fsize:
|
|
21
|
+
val=0;shift=0
|
|
22
|
+
while True:
|
|
23
|
+
x=b[p];p+=1;val|=(x&127)<<shift;shift+=7
|
|
24
|
+
if x<128:break
|
|
25
|
+
if not val:break
|
|
26
|
+
cur+=val;starts.append(cur)
|
|
27
|
+
for n,v,s,f in secs:
|
|
28
|
+
if n!='__text':continue
|
|
29
|
+
for off in range(f,f+s-28,4):
|
|
30
|
+
a=struct.unpack_from('<I',b,off)[0]
|
|
31
|
+
if a&0x9f000000!=0x90000000:continue
|
|
32
|
+
imm=((a>>5)&0x7ffff)<<2|((a>>29)&3)
|
|
33
|
+
if imm&(1<<20):imm-=1<<21
|
|
34
|
+
page=((v+off-f)&~4095)+(imm<<12);reg=a&31
|
|
35
|
+
for d in range(4,28,4):
|
|
36
|
+
ins=struct.unpack_from('<I',b,off+d)[0]
|
|
37
|
+
if ins&0xffc00000==0x91000000 and (ins>>5)&31==reg:
|
|
38
|
+
target=page+((ins>>10)&4095)
|
|
39
|
+
if target in targs:
|
|
40
|
+
pc=v+off+d-f;index=bisect.bisect_right(starts,pc)-1
|
|
41
|
+
fs=hex(starts[index]) if index>=0 else 'unknown'
|
|
42
|
+
print(f'string_file_offset={targs[target]}, adrp_va={hex(v+off-f)}, add_va={hex(pc)}, enclosing_function_start={fs}')
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
0xac0bd65 N4sami19HostStrategyServiceE
|
|
2
|
+
0xac0dff4 N4sami16VoiceAssistantV219HostTransportClientE
|
|
3
|
+
0xb3d3088 wss://sami.bytedance.com/internal/api/v1/ws
|
|
4
|
+
0xb51c130 /Users/3uyyquden7f5wc85e0k2lu3wq/18614/sami_core/common_util/net/sami_core_ttnet_url_request_callback.cc
|
|
5
|
+
0xb51c34f [SAMICORE: %s@%s,%d] Cronet_UrlRequest_InitWithParams error:%d
|
|
6
|
+
0xb51c38f [SAMICORE: %s@%s,%d] Cronet_UrlRequest_Start error:%d
|
|
7
|
+
0xb51ca5e [SAMICORE: %s@%s,%d] websocket init failed, url: %s
|
|
8
|
+
0xb51cb07 [SAMICORE: %s@%s,%d] socket connect success with url: %s
|
|
9
|
+
0xb52062b [SAMICORE: %s@%s,%d] not request, because url appkey or token is empty
|
|
10
|
+
0xb5207a3 [SAMICORE: %s@%s,%d] url: %s, connect timeout: %d
|
|
11
|
+
0xb521d30 [SAMICORE: %s@%s,%d] asr parameter url: %s, appkey: %s, task_id: %s, connect timeout: %d, retry mode: %d, retry count: %d, max buffer count: %d, finish wait timeout: %d
|
|
12
|
+
0xb523f1c [SAMICORE: %s@%s,%d] url is null
|
|
13
|
+
0xb532451 /Users/3uyyquden7f5wc85e0k2lu3wq/18614/sami_core/bindings/oc/speechaudiosdk/src/session/task/OSpeechHostInjectionRealtimeCallTask.mm
|
|
14
|
+
0xb53aa57 asr_url
|
|
15
|
+
0xb53abaf [SAMICORE: %s@%s,%d] appkey or url or token_type or token is not set
|
|
16
|
+
0xb53ae2c [SAMICORE: %s@%s,%d] url: %s
|
|
17
|
+
0xb54fd37 [SAMICORE: %s@%s,%d] onHostBinaryMessageReceived data is null
|
|
18
|
+
0xb5527db [SAMICORE: %s@%s,%d] HostStrategyService called %lld
|
|
19
|
+
0xb552826 /Users/3uyyquden7f5wc85e0k2lu3wq/18614/sami_core/sami_voice_assistant/strategy/HostStrategyService.cpp
|
|
20
|
+
0xb55288d [SAMICORE: %s@%s,%d] ~HostStrategyService called %lld
|
|
21
|
+
0xb553f51 [SAMICORE: %s@%s,%d] business_type: %s, url: %s
|
|
22
|
+
0xb5576be [SAMICORE: %s@%s,%d] appkey: %s, business_type: %s, url: %s
|
|
23
|
+
0xb55a4ec [SAMICORE: %s@%s,%d] SID_LOG url: %s
|
|
24
|
+
0xb55a74f [SAMICORE: %s@%s,%d] SID_LOG FetchAudioWithTosUrl: %s
|
|
25
|
+
0xb55a79b [SAMICORE: %s@%s,%d] SID_LOG FetchAudioWithTosUrl resp_str parse error
|
|
26
|
+
0xb55a7e3 [SAMICORE: %s@%s,%d] SID_LOG FetchAudioWithTosUrl failed, status_code != 20000000
|
|
27
|
+
0xb55a836 [SAMICORE: %s@%s,%d] SID_LOG FetchAudioWithTosUrl success, Base64 decode success
|
|
28
|
+
0xb55a888 [SAMICORE: %s@%s,%d] SID_LOG FetchAudioWithTosUrl failed, Base64 decode failed
|
|
29
|
+
0xb55c9c2 [SAMICORE: %s@%s,%d] client %llu: state %d url %s
|
|
30
|
+
0xb55cb82 /Users/3uyyquden7f5wc85e0k2lu3wq/18614/sami_core/sami_voice_assistant/transportV2/HostTransportClient.cpp
|
|
31
|
+
0xb55cdd8 [SAMICORE: %s@%s,%d] invalid url %s
|
|
32
|
+
0xb55d4b7 [SAMICORE: %s@%s,%d] use host injection
|
|
33
|
+
0xb55e0bd [SAMICORE: %s@%s,%d] HostTransport %p
|
|
34
|
+
0xb55e0e5 /Users/3uyyquden7f5wc85e0k2lu3wq/18614/sami_core/speech_voice_assistant/transport/speech_host_transport.cpp
|
|
35
|
+
0xb55e151 [SAMICORE: %s@%s,%d] ~HostTransport %p
|
|
36
|
+
0xbb257c0 https://tosv.byted.org/obj/lab-speech-di-platform/speech_audio/tts/
|
|
37
|
+
0xbb25810 https://tosv.byted.org/obj/lab-speech-di-platform/speech_audio/audio/
|
|
38
|
+
0xbe3cd79 samiUrl
|
|
39
|
+
0xc7c7071 SAMICoreHostCallBackListener
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0x000000010a7996f8 7907 _objc_msgSend
|