LICENSE
README.md
pyproject.toml
src/minicpm_o5_sdk/__init__.py
src/minicpm_o5_sdk/py.typed
src/minicpm_o5_sdk.egg-info/PKG-INFO
src/minicpm_o5_sdk.egg-info/SOURCES.txt
src/minicpm_o5_sdk.egg-info/dependency_links.txt
src/minicpm_o5_sdk.egg-info/requires.txt
src/minicpm_o5_sdk.egg-info/top_level.txt
src/minicpm_o5_sdk/cases/__init__.py
src/minicpm_o5_sdk/cases/ids.py
src/minicpm_o5_sdk/cases/loader.py
src/minicpm_o5_sdk/protocols/__init__.py
src/minicpm_o5_sdk/protocols/base.py
src/minicpm_o5_sdk/protocols/duplex/__init__.py
src/minicpm_o5_sdk/protocols/duplex/arrangement.py
src/minicpm_o5_sdk/protocols/duplex/arranger.py
src/minicpm_o5_sdk/protocols/duplex/common.py
src/minicpm_o5_sdk/protocols/duplex/special_tokens.py
src/minicpm_o5_sdk/protocols/duplex/tokenized.py
src/minicpm_o5_sdk/protocols/duplex/tool_call_id.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/__init__.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/builder.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/encoding.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/frame.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/pipeline.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/prompt.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/span.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/validator.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/__init__.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/ai_non_spoken.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/ai_spoken.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/input_event.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/user_audio.py
src/minicpm_o5_sdk/protocols/duplex/tokenization/slots/user_video.py
src/minicpm_o5_sdk/protocols/duplex/training_data/__init__.py
src/minicpm_o5_sdk/protocols/duplex/training_data/alignment.py
src/minicpm_o5_sdk/protocols/duplex/training_data/contents.py
src/minicpm_o5_sdk/protocols/duplex/training_data/data.py
src/minicpm_o5_sdk/protocols/duplex/training_data/events.py
src/minicpm_o5_sdk/protocols/duplex/training_data/lazy_media.py
src/minicpm_o5_sdk/protocols/duplex/training_data/segments.py
src/minicpm_o5_sdk/protocols/duplex/training_data/system.py
src/minicpm_o5_sdk/protocols/duplex/training_data/time_refs.py
src/minicpm_o5_sdk/protocols/duplex/training_data/tracks.py
src/minicpm_o5_sdk/protocols/duplex/training_data/unit_policy.py
src/minicpm_o5_sdk/tokenizers/__init__.py
src/minicpm_o5_sdk/tokenizers/base.py
src/minicpm_o5_sdk/tokenizers/bundle.py
src/minicpm_o5_sdk/tokenizers/o45_fc.py
src/minicpm_o5_sdk/tokenizers/o5.py
src/minicpm_o5_sdk/tokenizers/transformers_adapter.py
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/README.md
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/config.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/generation_config.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/merges.txt
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/tokenization_minicpmo_fast.py
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/tokenizer.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/tokenizer_config.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o45_fc/vocab.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/README.md
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/chat_template.jinja
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/config.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/generation_config.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/tokenizer.json
src/minicpm_o5_sdk/tokenizers/base_tokenizers/qwen2_o5/tokenizer_config.json
src/minicpm_o5_sdk/tokenizers/bundles/o45_fc_duplex_v0_1_0/manifest.json
src/minicpm_o5_sdk/tokenizers/bundles/o5_duplex/manifest.json
src/minicpm_o5_sdk/tool_serializer/__init__.py
src/minicpm_o5_sdk/tool_serializer/mixins.py
src/minicpm_o5_sdk/tool_serializer/registry.py
src/minicpm_o5_sdk/tool_serializer/schema.py
src/minicpm_o5_sdk/tool_serializer/serializer.py
src/minicpm_o5_sdk/tool_serializer/formats/__init__.py
src/minicpm_o5_sdk/tool_serializer/formats/json_format.py
src/minicpm_o5_sdk/tool_serializer/formats/minicpm4_xml_format.py
src/minicpm_o5_sdk/visualizers/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/serve.py
src/minicpm_o5_sdk/visualizers/duplex/writer.py
src/minicpm_o5_sdk/visualizers/duplex/core/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/core/case_serving.py
src/minicpm_o5_sdk/visualizers/duplex/core/models.py
src/minicpm_o5_sdk/visualizers/duplex/core/timeline_tiers.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_causal.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_core.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_helpers.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_inference_timing.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_layers.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_media.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_system.py
src/minicpm_o5_sdk/visualizers/duplex/core/projection/_unit_grid.py
src/minicpm_o5_sdk/visualizers/duplex/core/static/causal-graph.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/invalid.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/playground.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/raw-sources.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/styles.css
src/minicpm_o5_sdk/visualizers/duplex/core/static/system-panel.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/timeline-grid.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/token-fold.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/token-inspector.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/trace-replay.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/unit-grid.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/core/chip.js
src/minicpm_o5_sdk/visualizers/duplex/core/static/player/player.js
src/minicpm_o5_sdk/visualizers/duplex/dataset_viewer/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/dataset_viewer/__main__.py
src/minicpm_o5_sdk/visualizers/duplex/dataset_viewer/serve.py
src/minicpm_o5_sdk/visualizers/duplex/dataset_viewer/static/app.js
src/minicpm_o5_sdk/visualizers/duplex/guidebook/__init__.py
src/minicpm_o5_sdk/visualizers/duplex/guidebook/__main__.py
src/minicpm_o5_sdk/visualizers/duplex/guidebook/case_writer.py
src/minicpm_o5_sdk/visualizers/duplex/guidebook/serve.py
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/README.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_01.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_02.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_03.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_04.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_05.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_06.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_1_07.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_2_01.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_2_02.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_3_01.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_3_02.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_3_03.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/exported/case_3_04.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_01/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_01/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_02/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_02/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_02/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_02/user_audio_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_03/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_03/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_03/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_03/user_audio_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_04/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_04/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_04/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_04/user_audio_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/ai_spoken_2.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/ai_spoken_3.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/ai_spoken_4.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_05/user_audio_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_06/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_06/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_07/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_07/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_1_07/user_audio_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_2_01/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_2_01/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_2_02/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_2_02/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_2_02/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_01/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_01/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_02/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_02/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_02/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_03/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_03/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_03/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_04/ai_spoken_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_04/ai_spoken_1.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/media/case_3_04/user_audio_0.opus
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch1_why_duplex.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch2_token_protocol.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch3_training_data.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch4_playground.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5_cases.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch6_inference.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_01.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_02.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_03.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_04.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_05.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_06.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_1_07.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_2_01.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_2_02.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_3_01.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_3_02.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_3_03.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/chapters/ch5/case_3_04.md
src/minicpm_o5_sdk/visualizers/duplex/guidebook/static/app.js
src/minicpm_o5_sdk/visualizers/duplex/guidebook/static/guidebook.css