LICENSE
MANIFEST.in
README.md
pyproject.toml
setup.py
build_support/__init__.py
build_support/provenance.py
src/minicpm_o5_sdk/__init__.py
src/minicpm_o5_sdk/_version.py
src/minicpm_o5_sdk/build_info.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/spoken_turn.py
src/minicpm_o5_sdk/protocols/duplex/time_quantizer.py
src/minicpm_o5_sdk/protocols/duplex/tokenization_lower_bound.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/trigger_resolver.py
src/minicpm_o5_sdk/protocols/duplex/user_audio_tensor.py
src/minicpm_o5_sdk/protocols/duplex/parsing/__init__.py
src/minicpm_o5_sdk/protocols/duplex/parsing/diff.py
src/minicpm_o5_sdk/protocols/duplex/parsing/errors.py
src/minicpm_o5_sdk/protocols/duplex/parsing/models.py
src/minicpm_o5_sdk/protocols/duplex/parsing/parser.py
src/minicpm_o5_sdk/protocols/duplex/parsing/replay.py
src/minicpm_o5_sdk/protocols/duplex/parsing/roundtrip.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/canonical_content.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/tool_integrity.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/protocols/duplex/training_material/__init__.py
src/minicpm_o5_sdk/protocols/duplex/training_material/builder.py
src/minicpm_o5_sdk/protocols/duplex/training_material/models.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/streaming_decode.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/interaction_timeline.py
src/minicpm_o5_sdk/visualizers/duplex/core/media_serving.py
src/minicpm_o5_sdk/visualizers/duplex/core/models.py
src/minicpm_o5_sdk/visualizers/duplex/core/timeline_presentation.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/case-visualizer.js
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/view-modes.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_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/cases/variants/case_1_01/integer_shift.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_01/unit_back_boundary.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_01/unit_front_boundary.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_02/accidental_overlap.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_02/answer_before_question_ready.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_02/batched_questions.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_02/concurrent_followup_turn_barrier.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_02/inter_round_pause.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_03/inter_round_pause.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_03/semantic_misalignment.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_1_04/fixed_time_guess.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_01/eos_next_unit.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_01/exact_three_units.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_01/intermediate_exact_full_with_followup.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_01/think_end_next_unit.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_02/one_unit_think.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_02/think_end_only_merge.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_2_02/three_unit_think.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_3_03/response_think_cross_unit_response1_first.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_3_03/response_think_cross_unit_response2_first.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_3_03/response_think_same_unit_response1_first.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_3_03/response_think_same_unit_response2_first.json
src/minicpm_o5_sdk/visualizers/duplex/guidebook/cases/variants/case_3_03/single_unit_parallel_queries.json
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_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
src/minicpm_o5_sdk/visualizers/duplex/guidebook/static/variant-navigation.js