kiapi 0.2.0__tar.gz → 0.5.2__tar.gz
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.
- {kiapi-0.2.0 → kiapi-0.5.2}/.gitignore +9 -0
- kiapi-0.5.2/.mise/tasks/package/current +7 -0
- kiapi-0.5.2/.vscode/settings.json +7 -0
- kiapi-0.5.2/CHANGELOG.md +92 -0
- kiapi-0.5.2/Makefile +19 -0
- kiapi-0.5.2/PKG-INFO +201 -0
- kiapi-0.5.2/README.ja.md +144 -0
- kiapi-0.5.2/README.md +150 -0
- {kiapi-0.2.0 → kiapi-0.5.2}/pyproject.toml +10 -82
- kiapi-0.5.2/src/kiapi/api/__init__.py +51 -0
- kiapi-0.5.2/src/kiapi/api/_helpers/get_relay_runner.py +7 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/app.py +17 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/health/_views/health_response.py +8 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/health/router.py +8 -4
- kiapi-0.5.2/src/kiapi/api/web/_views/__init__.py +24 -0
- kiapi-0.5.2/src/kiapi/capabilities/__init__.py +44 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/README.ja.md +5 -5
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/README.md +5 -5
- kiapi-0.5.2/src/kiapi/capabilities/acestep/__init__.py +62 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_ace_step_paths.py +2 -2
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/README.ja.md +3 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/README.md +3 -3
- kiapi-0.5.2/src/kiapi/capabilities/audiogen/__init__.py +46 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/chat/__init__.py +44 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/README.ja.md +3 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/README.md +3 -3
- kiapi-0.5.2/src/kiapi/capabilities/depthpro/__init__.py +44 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/embedding/__init__.py +43 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/ernie/__init__.py +60 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/README.ja.md +5 -5
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/README.md +5 -5
- kiapi-0.5.2/src/kiapi/capabilities/flux2/__init__.py +62 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/README.ja.md +3 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/README.md +3 -3
- kiapi-0.5.2/src/kiapi/capabilities/ideogram4/__init__.py +45 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/README.ja.md +3 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/README.md +3 -3
- kiapi-0.5.2/src/kiapi/capabilities/ltx2/__init__.py +48 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/qwen/__init__.py +54 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/seedvr2/__init__.py +45 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/web/__init__.py +55 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_operations/resolve_searxng_config_dir.py +2 -2
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/README.ja.md +4 -4
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/README.md +4 -4
- kiapi-0.5.2/src/kiapi/capabilities/zimage/__init__.py +57 -0
- kiapi-0.5.2/src/kiapi/cli/__init__.py +30 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/_helpers/register_all_capabilities.py +3 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/cli.py +2 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/config/template/cli.py +4 -4
- kiapi-0.5.2/src/kiapi/cli/run/asgi.py +15 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/run/cli.py +9 -3
- kiapi-0.5.2/src/kiapi/cli/service/__init__.py +22 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/_services/service_manager.py +12 -3
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/cli.py +2 -0
- kiapi-0.5.2/src/kiapi/cli/service/show/cli.py +13 -0
- kiapi-0.5.2/src/kiapi/core/app/__init__.py +21 -0
- kiapi-0.5.2/src/kiapi/core/capability/__init__.py +29 -0
- kiapi-0.5.2/src/kiapi/core/config/__init__.py +27 -0
- kiapi-0.5.2/src/kiapi/core/config/_helpers/get_user_settings_path.py +7 -0
- kiapi-0.5.2/src/kiapi/core/file/__init__.py +59 -0
- kiapi-0.5.2/src/kiapi/core/job/__init__.py +46 -0
- kiapi-0.5.2/src/kiapi/core/logging/__init__.py +30 -0
- kiapi-0.5.2/src/kiapi/core/memory/__init__.py +38 -0
- kiapi-0.5.2/src/kiapi/core/model/__init__.py +53 -0
- kiapi-0.5.2/src/kiapi/core/net/__init__.py +35 -0
- kiapi-0.5.2/src/kiapi/core/setup/__init__.py +51 -0
- kiapi-0.5.2/src/kiapi/core/workdir/__init__.py +26 -0
- kiapi-0.5.2/src/kiapi/core/worker/__init__.py +36 -0
- kiapi-0.2.0/ARCHITECTURE.ja.md +0 -516
- kiapi-0.2.0/ARCHITECTURE.md +0 -373
- kiapi-0.2.0/CHANGELOG.md +0 -46
- kiapi-0.2.0/CONTRIBUTING.md +0 -74
- kiapi-0.2.0/PKG-INFO +0 -406
- kiapi-0.2.0/README.ja.md +0 -350
- kiapi-0.2.0/README.md +0 -355
- kiapi-0.2.0/SECURITY.md +0 -41
- kiapi-0.2.0/kiapi/api/__init__.py +0 -26
- kiapi-0.2.0/kiapi/api/web/_views/__init__.py +0 -7
- kiapi-0.2.0/kiapi/capabilities/__init__.py +0 -24
- kiapi-0.2.0/kiapi/capabilities/acestep/__init__.py +0 -37
- kiapi-0.2.0/kiapi/capabilities/audiogen/__init__.py +0 -25
- kiapi-0.2.0/kiapi/capabilities/chat/__init__.py +0 -25
- kiapi-0.2.0/kiapi/capabilities/depthpro/__init__.py +0 -23
- kiapi-0.2.0/kiapi/capabilities/embedding/__init__.py +0 -24
- kiapi-0.2.0/kiapi/capabilities/ernie/__init__.py +0 -34
- kiapi-0.2.0/kiapi/capabilities/flux2/__init__.py +0 -36
- kiapi-0.2.0/kiapi/capabilities/ideogram4/__init__.py +0 -24
- kiapi-0.2.0/kiapi/capabilities/ltx2/__init__.py +0 -26
- kiapi-0.2.0/kiapi/capabilities/qwen/__init__.py +0 -30
- kiapi-0.2.0/kiapi/capabilities/seedvr2/__init__.py +0 -24
- kiapi-0.2.0/kiapi/capabilities/web/__init__.py +0 -30
- kiapi-0.2.0/kiapi/capabilities/zimage/__init__.py +0 -34
- kiapi-0.2.0/kiapi/cli/__init__.py +0 -11
- kiapi-0.2.0/kiapi/cli/run/asgi.py +0 -16
- kiapi-0.2.0/kiapi/cli/service/__init__.py +0 -5
- kiapi-0.2.0/kiapi/core/app/__init__.py +0 -16
- kiapi-0.2.0/kiapi/core/app/_services/user_directory.py +0 -59
- kiapi-0.2.0/kiapi/core/app/_settings.py +0 -46
- kiapi-0.2.0/kiapi/core/capability/__init__.py +0 -11
- kiapi-0.2.0/kiapi/core/config/__init__.py +0 -11
- kiapi-0.2.0/kiapi/core/config/_helpers/get_user_settings_path.py +0 -7
- kiapi-0.2.0/kiapi/core/file/__init__.py +0 -37
- kiapi-0.2.0/kiapi/core/job/__init__.py +0 -24
- kiapi-0.2.0/kiapi/core/logging/__init__.py +0 -14
- kiapi-0.2.0/kiapi/core/memory/__init__.py +0 -21
- kiapi-0.2.0/kiapi/core/model/__init__.py +0 -36
- kiapi-0.2.0/kiapi/core/net/__init__.py +0 -16
- kiapi-0.2.0/kiapi/core/relay/__init__.py +0 -34
- kiapi-0.2.0/kiapi/core/relay/_instances/relay_registry.py +0 -12
- kiapi-0.2.0/kiapi/core/relay/_schemas/relay_file_body.py +0 -11
- kiapi-0.2.0/kiapi/core/relay/_schemas/relay_json_body.py +0 -8
- kiapi-0.2.0/kiapi/core/relay/_schemas/relay_multipart_body.py +0 -8
- kiapi-0.2.0/kiapi/core/relay/_schemas/relay_multipart_file.py +0 -19
- kiapi-0.2.0/kiapi/core/relay/_services/relay_runner.py +0 -189
- kiapi-0.2.0/kiapi/core/relay/_settings.py +0 -39
- kiapi-0.2.0/kiapi/core/relay/_types/relay.py +0 -11
- kiapi-0.2.0/kiapi/core/relay/_types/relay_delivery.py +0 -17
- kiapi-0.2.0/kiapi/core/relay/_types/relay_method.py +0 -3
- kiapi-0.2.0/kiapi/core/relay/_types/relay_name.py +0 -1
- kiapi-0.2.0/kiapi/core/relay/_types/relay_specifier.py +0 -1
- kiapi-0.2.0/kiapi/core/relay/_views/relay_error.py +0 -7
- kiapi-0.2.0/kiapi/core/relay/_views/relay_request.py +0 -29
- kiapi-0.2.0/kiapi/core/relay/_views/relay_response.py +0 -13
- kiapi-0.2.0/kiapi/core/setup/__init__.py +0 -25
- kiapi-0.2.0/kiapi/core/workdir/__init__.py +0 -8
- kiapi-0.2.0/kiapi/core/worker/__init__.py +0 -23
- kiapi-0.2.0/kiapi/relay/__init__.py +0 -1
- kiapi-0.2.0/kiapi/relay/gcp/README.ja.md +0 -549
- kiapi-0.2.0/kiapi/relay/gcp/README.md +0 -562
- kiapi-0.2.0/kiapi/relay/gcp/__init__.py +0 -32
- kiapi-0.2.0/kiapi/relay/gcp/_helpers/create_gcp_relay.py +0 -13
- kiapi-0.2.0/kiapi/relay/gcp/_schemas/gcp_relay_notification.py +0 -13
- kiapi-0.2.0/kiapi/relay/gcp/_services/gcp_relay.py +0 -415
- kiapi-0.2.0/kiapi/relay/gcp/_services/gcp_relay_delivery.py +0 -40
- kiapi-0.2.0/kiapi/relay/gcp/_settings.py +0 -81
- kiapi-0.2.0/kiapi/relay/local/__init__.py +0 -35
- kiapi-0.2.0/kiapi/relay/local/_helpers/create_local_relay.py +0 -13
- kiapi-0.2.0/kiapi/relay/local/_schemas/local_relay_notification.py +0 -13
- kiapi-0.2.0/kiapi/relay/local/_services/local_relay.py +0 -312
- kiapi-0.2.0/kiapi/relay/local/_services/local_relay_delivery.py +0 -40
- kiapi-0.2.0/kiapi/relay/local/_settings.py +0 -52
- kiapi-0.2.0/mise.toml +0 -3
- kiapi-0.2.0/tests/api/__init__.py +0 -0
- kiapi-0.2.0/tests/api/chat/__init__.py +0 -0
- kiapi-0.2.0/tests/api/chat/test_router.py +0 -71
- kiapi-0.2.0/tests/api/test_openapi.py +0 -355
- kiapi-0.2.0/tests/api/web/__init__.py +0 -0
- kiapi-0.2.0/tests/api/web/test_negotiate_format.py +0 -31
- kiapi-0.2.0/tests/capabilities/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/_helpers/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/_helpers/test_attach_mflux_progress.py +0 -79
- kiapi-0.2.0/tests/capabilities/acestep/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/acestep/_helpers/test_register.py +0 -46
- kiapi-0.2.0/tests/capabilities/acestep/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/acestep/_operations/test_handle_generate.py +0 -52
- kiapi-0.2.0/tests/capabilities/acestep/_operations/test_resolve_ace_step_paths.py +0 -47
- kiapi-0.2.0/tests/capabilities/acestep/_operations/test_resolve_extract_params.py +0 -37
- kiapi-0.2.0/tests/capabilities/acestep/_operations/test_resolve_generate_params.py +0 -30
- kiapi-0.2.0/tests/capabilities/acestep/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/acestep/_services/test_ace_step_engine.py +0 -121
- kiapi-0.2.0/tests/capabilities/acestep/_views/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/acestep/_views/test_generate_request.py +0 -18
- kiapi-0.2.0/tests/capabilities/audiogen/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/audiogen/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/audiogen/_helpers/test_validate_generate.py +0 -19
- kiapi-0.2.0/tests/capabilities/audiogen/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/audiogen/_operations/test_resolve_generate_params.py +0 -41
- kiapi-0.2.0/tests/capabilities/chat/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/chat/_operations/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/chat/_operations/test_emit_streaming_response.py +0 -232
- kiapi-0.2.0/tests/capabilities/chat/_operations/test_ensure_streaming_detokenizer_compat.py +0 -30
- kiapi-0.2.0/tests/capabilities/chat/_operations/test_parse_messages.py +0 -74
- kiapi-0.2.0/tests/capabilities/chat/_operations/test_stream_text_from_tokens.py +0 -51
- kiapi-0.2.0/tests/capabilities/chat/_utils/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/chat/_utils/test_apply_parallel_tool_call_policy.py +0 -15
- kiapi-0.2.0/tests/capabilities/ltx2/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/ltx2/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/ltx2/_helpers/test_register.py +0 -30
- kiapi-0.2.0/tests/capabilities/ltx2/_helpers/test_validate_generate.py +0 -31
- kiapi-0.2.0/tests/capabilities/ltx2/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/ltx2/_operations/test_detect_mode.py +0 -76
- kiapi-0.2.0/tests/capabilities/ltx2/_operations/test_resolve_generate_params.py +0 -62
- kiapi-0.2.0/tests/capabilities/web/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/web/_operations/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/web/_operations/test_resolve_fetch_params.py +0 -38
- kiapi-0.2.0/tests/capabilities/web/_operations/test_resolve_search_params.py +0 -91
- kiapi-0.2.0/tests/capabilities/web/_operations/test_resolve_searxng_config_dir.py +0 -39
- kiapi-0.2.0/tests/capabilities/web/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/web/_services/test_web_backend_process.py +0 -70
- kiapi-0.2.0/tests/capabilities/web/_views/__init__.py +0 -0
- kiapi-0.2.0/tests/capabilities/web/_views/test_fetch_request.py +0 -27
- kiapi-0.2.0/tests/capabilities/web/test_settings.py +0 -7
- kiapi-0.2.0/tests/capabilities/zimage/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/zimage/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/zimage/_helpers/test_validate_generate.py +0 -28
- kiapi-0.2.0/tests/capabilities/zimage/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/capabilities/zimage/_operations/test_is_quantize_override.py +0 -30
- kiapi-0.2.0/tests/capabilities/zimage/_operations/test_resolve_generate_params.py +0 -55
- kiapi-0.2.0/tests/capabilities/zimage/_operations/test_resolve_train_params.py +0 -47
- kiapi-0.2.0/tests/cli/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/activate/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/activate/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/activate/_operations/test_preflight_hf_access.py +0 -157
- kiapi-0.2.0/tests/cli/check/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/check/_operations/test_resolve_check_operation.py +0 -16
- kiapi-0.2.0/tests/cli/config/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/config/conftest.py +0 -12
- kiapi-0.2.0/tests/cli/config/edit/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/config/edit/test_cli.py +0 -40
- kiapi-0.2.0/tests/cli/config/init/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/config/init/test_cli.py +0 -47
- kiapi-0.2.0/tests/cli/config/show/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/config/show/test_cli.py +0 -22
- kiapi-0.2.0/tests/cli/config/template/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/config/template/test_cli.py +0 -19
- kiapi-0.2.0/tests/cli/service/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/conftest.py +0 -35
- kiapi-0.2.0/tests/cli/service/install/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/install/test_cli.py +0 -24
- kiapi-0.2.0/tests/cli/service/start/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/start/test_cli.py +0 -60
- kiapi-0.2.0/tests/cli/service/status/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/status/test_cli.py +0 -35
- kiapi-0.2.0/tests/cli/service/stop/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/stop/test_cli.py +0 -18
- kiapi-0.2.0/tests/cli/service/uninstall/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/service/uninstall/test_cli.py +0 -26
- kiapi-0.2.0/tests/cli/status/__init__.py +0 -1
- kiapi-0.2.0/tests/cli/status/test_cli.py +0 -146
- kiapi-0.2.0/tests/conftest.py +0 -12
- kiapi-0.2.0/tests/core/__init__.py +0 -0
- kiapi-0.2.0/tests/core/app/__init__.py +0 -0
- kiapi-0.2.0/tests/core/app/_schemas/test_app_context.py +0 -7
- kiapi-0.2.0/tests/core/app/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/core/app/_services/test_user_directory.py +0 -45
- kiapi-0.2.0/tests/core/app/test_settings.py +0 -11
- kiapi-0.2.0/tests/core/config/__init__.py +0 -1
- kiapi-0.2.0/tests/core/config/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/core/config/_helpers/test_get_user_settings_path.py +0 -14
- kiapi-0.2.0/tests/core/config/_helpers/test_load_user_settings.py +0 -54
- kiapi-0.2.0/tests/core/config/conftest.py +0 -12
- kiapi-0.2.0/tests/core/file/__init__.py +0 -0
- kiapi-0.2.0/tests/core/file/_helpers/test_create_file_store.py +0 -7
- kiapi-0.2.0/tests/core/file/_helpers/test_resolve_file_ref.py +0 -46
- kiapi-0.2.0/tests/core/file/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/core/file/_services/test_file_store.py +0 -137
- kiapi-0.2.0/tests/core/file/test_settings.py +0 -7
- kiapi-0.2.0/tests/core/job/__init__.py +0 -0
- kiapi-0.2.0/tests/core/job/_helpers/test_creep_progress.py +0 -111
- kiapi-0.2.0/tests/core/job/_models/__init__.py +0 -0
- kiapi-0.2.0/tests/core/job/_models/test_job.py +0 -74
- kiapi-0.2.0/tests/core/job/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/core/job/_services/test_job_store.py +0 -53
- kiapi-0.2.0/tests/core/job/_services/test_progress_reporter.py +0 -74
- kiapi-0.2.0/tests/core/memory/__init__.py +0 -0
- kiapi-0.2.0/tests/core/memory/_operations/__init__.py +0 -1
- kiapi-0.2.0/tests/core/memory/_operations/test_resolve_effective_memory_limit_gb.py +0 -43
- kiapi-0.2.0/tests/core/memory/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/core/memory/_services/test_memory_manager.py +0 -281
- kiapi-0.2.0/tests/core/model/__init__.py +0 -0
- kiapi-0.2.0/tests/core/model/_schemas/__init__.py +0 -0
- kiapi-0.2.0/tests/core/model/_schemas/test_model_spec.py +0 -52
- kiapi-0.2.0/tests/core/model/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/core/model/_services/test_model_registry.py +0 -165
- kiapi-0.2.0/tests/core/net/__init__.py +0 -0
- kiapi-0.2.0/tests/core/net/_helpers/__init__.py +0 -0
- kiapi-0.2.0/tests/core/net/_helpers/test_verify_public_url.py +0 -74
- kiapi-0.2.0/tests/core/relay/__init__.py +0 -1
- kiapi-0.2.0/tests/core/relay/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/core/relay/_services/test_relay_runner.py +0 -123
- kiapi-0.2.0/tests/core/relay/_views/__init__.py +0 -1
- kiapi-0.2.0/tests/core/relay/_views/test_relay_request.py +0 -63
- kiapi-0.2.0/tests/core/setup/__init__.py +0 -1
- kiapi-0.2.0/tests/core/setup/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/core/setup/_services/test_setup_manager.py +0 -538
- kiapi-0.2.0/tests/core/workdir/__init__.py +0 -1
- kiapi-0.2.0/tests/core/workdir/_helpers/__init__.py +0 -1
- kiapi-0.2.0/tests/core/workdir/_helpers/test_create_work_dir.py +0 -15
- kiapi-0.2.0/tests/core/workdir/test_settings.py +0 -15
- kiapi-0.2.0/tests/core/worker/__init__.py +0 -0
- kiapi-0.2.0/tests/core/worker/_services/__init__.py +0 -0
- kiapi-0.2.0/tests/core/worker/_services/test_worker.py +0 -153
- kiapi-0.2.0/tests/core/worker/test_settings.py +0 -18
- kiapi-0.2.0/tests/relay/__init__.py +0 -1
- kiapi-0.2.0/tests/relay/gcp/__init__.py +0 -1
- kiapi-0.2.0/tests/relay/gcp/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/relay/gcp/_services/test_gcp_relay.py +0 -133
- kiapi-0.2.0/tests/relay/gcp/test_settings.py +0 -25
- kiapi-0.2.0/tests/relay/local/__init__.py +0 -1
- kiapi-0.2.0/tests/relay/local/_services/__init__.py +0 -1
- kiapi-0.2.0/tests/relay/local/_services/test_local_relay.py +0 -166
- kiapi-0.2.0/tests/relay/local/test_settings.py +0 -18
- {kiapi-0.2.0 → kiapi-0.5.2}/LICENSE +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/__main__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_constants/require_auth.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/build_job_responses.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/build_openapi.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/build_train_responses.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/get_accept.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/get_ctx.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/get_worker.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/register_capability_endpoints.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_helpers/submit_and_maybe_wait.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_views/async_job_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/_views/capability_model_spec.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/audio/acestep/_views/extract_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/audio/acestep/_views/track_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/audio/acestep/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/audio/audiogen/_views/audio_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/audio/audiogen/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/chat/_views/chat_completion_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/chat/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/embedding/_views/embedding_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/embedding/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/files/_operations/get_file.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/files/_operations/get_file_id.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/files/_views/file_delete_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/files/_views/file_list_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/files/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/depthpro/_views/estimate_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/depthpro/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/ernie/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/ernie/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/flux2/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/flux2/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/ideogram4/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/ideogram4/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/qwen/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/qwen/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/seedvr2/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/seedvr2/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/zimage/_views/image_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/image/zimage/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/jobs/_operations/get_job_id.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/jobs/_views/job_delete_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/jobs/_views/job_list_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/jobs/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/models/_schemas/openai_model_spec.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/models/_views/model_list_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/models/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/video/ltx2/_views/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/video/ltx2/_views/video_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/video/ltx2/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/web/_views/fetch_api_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/web/_views/fetch_error_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/api/web/router.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/_exceptions/CapabilityError.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/_exceptions/ValidationError.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/_helpers/attach_mflux_progress.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/_helpers/get_file_path.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/_helpers/resolve_file_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_exceptions/ace_step_engine_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_models/acestep.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/handle_cover.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/handle_extract.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/handle_repaint.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_cover_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_engine.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_extract_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_operations/resolve_repaint_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_schemas/ace_step_paths.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_services/ace_step_engine.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/ace_step_base.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/cover_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/cover_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/extract_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/extract_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/repaint_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/repaint_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/_views/track_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/acestep/worker_subprocess.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_helpers/attach_audiogen_progress.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_models/audiogen.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/audiogen/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_models/qwen3_5.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_models/qwen3_omni.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/apply_template.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/completed_hermes_tool_call_text.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/emit_streaming_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/ensure_streaming_detokenizer_compat.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/format_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/handle_chat.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/parse_hermes_tool_calls.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/parse_json_tool_calls.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/parse_messages.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/resolve_chat_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/stream_text_from_tokens.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_operations/strip_tool_calls.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_utils/apply_parallel_tool_call_policy.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_utils/apply_seed.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_utils/load_audio_mono.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_utils/load_mlx_vlm.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_utils/warmup_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_views/chat_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/chat/_views/chat_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_helpers/validate_estimate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_models/depthpro.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_operations/handle_estimate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_operations/resolve_estimate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_views/estimate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/depthpro/_views/estimate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_models/qwen3_text.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_models/qwen3_vl.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_operations/format_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_operations/handle_embed.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_operations/parse_inputs.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_operations/resolve_embed_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_utils/to_vector.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_views/embed_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/embedding/_views/embed_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_helpers/validate_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_models/ernie.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/handle_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/handle_train.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/resolve_edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/resolve_lora_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/resolve_train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_operations/validate_common.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_schemas/lora_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/edit_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ernie/_views/train_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_helpers/validate_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_models/flux2.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/handle_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/handle_train.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/resolve_edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/resolve_lora_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/resolve_train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/role_spec.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/split_repo.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_operations/validate_common.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_schemas/lora_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/edit_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/flux2/_views/train_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_models/ideogram4.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ideogram4/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_models/ltx2.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_operations/detect_mode.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/ltx2/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_helpers/validate_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_models/qwen.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/handle_edit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/resolve_edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/resolve_lora_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_operations/validate_common.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_schemas/lora_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_views/edit_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_views/edit_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/qwen/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_helpers/validate_upscale.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_models/seedvr2.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_operations/handle_upscale.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_operations/resolve_upscale_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_views/upscale_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/seedvr2/_views/upscale_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_exceptions/FetchError.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_exceptions/SearchBackendError.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_models/crawl4ai.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_models/searxng.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_operations/handle_fetch.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_operations/handle_search.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_operations/resolve_fetch_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_operations/resolve_search_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_services/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_services/web_backend_process.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/fetch_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/fetch_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/fetch_result.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/search_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/search_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/_views/search_response.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/resources/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/resources/searxng/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/web/resources/searxng/settings.yml +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_constants/description.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_helpers/register.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_helpers/validate_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_models/zimage.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/handle_generate.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/handle_train.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/is_quantize_override.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/resolve_generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/resolve_lora_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_operations/resolve_train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_schemas/lora_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_views/generate_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_views/generate_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_views/train_params.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/capabilities/zimage/_views/train_request.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/_helpers/dedupe_resources.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/_helpers/run_resources.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/_helpers/select_specs.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/activate/_operations/preflight_hf_access.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/activate/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_audio_acestep_turbo.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_audio_acestep_xl_base.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_audio_audiogen_medium.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_chat_chat_qwen3_6_27b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_chat_chat_qwen3_omni.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_embedding_embedding_qwen3_embedding_8b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_embedding_embedding_qwen3_vl_embedding_2b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_depthpro_base.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_ernie_base.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_ernie_turbo.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_flux2_klein_9b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_flux2_klein_base_4b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_flux2_klein_base_9b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_ideogram4_fp8.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_qwen_edit_2509.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_qwen_image.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_seedvr2_3b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_seedvr2_7b.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_zimage_base.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_image_zimage_turbo.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_video_ltx2_distilled.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_web_web_fetch.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_helpers/check_web_web_search.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_operations/build_check_result.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_operations/check_context.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_operations/create_sample_image.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/_schemas/check_result.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/check/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/config/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/config/edit/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/config/init/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/config/show/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/deactivate/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/install/cli.py +0 -0
- {kiapi-0.2.0/tests/capabilities/acestep → kiapi-0.5.2/src/kiapi/cli/service/show}/__init__.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/start/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/status/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/stop/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/service/uninstall/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/cli/status/cli.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/app/_schemas/app_context.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/capability/_schemas/capability_spec.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/capability/_services/capability_spec_registry.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/config/_exceptions/user_config_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/config/_helpers/load_user_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_helpers/create_file_store.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_helpers/resolve_file_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_schemas/file_data_url_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_schemas/file_id_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_schemas/file_record.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_schemas/file_url_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_services/file_store.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_types/file_id.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_types/file_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/file/_views/resolved_file_ref.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_enums/job_status.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_helpers/creep_progress.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_models/job.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_services/job_store.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_services/progress_reporter.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_types/job_id.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_types/job_result.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/job/_types/job_type.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/logging/_helpers/get_log_level.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/logging/_helpers/setup_logger.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/logging/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/logging/_types/log_level.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_exceptions/memory_budget_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_helpers/create_memory_manager.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_operations/log_memory_limit.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_operations/resolve_effective_memory_limit_gb.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_operations/resolve_framework_strategy.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_schemas/framework_strategy.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_schemas/memory_stats.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_schemas/resident_model.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_schemas/resident_model_stats.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_services/memory_manager.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_types/framework_name.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/memory/_types/resident_key.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_exceptions/unknown_model_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_schemas/model_spec.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_services/model_registry.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_alias.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_domain.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_family.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_key.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_name.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/model/_types/model_repo.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/net/_exceptions/unsafe_url_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/net/_helpers/verify_public_url.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/net/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_exceptions/setup_required_error.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/docker_image_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/hf_snapshot_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/local_path_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/python_package_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/python_venv_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/setup_status.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_schemas/url_file_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_services/setup_manager.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_types/setup_resource.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/setup/_types/setup_target.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/workdir/_helpers/create_work_dir.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/workdir/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/worker/_helpers/create_worker.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/worker/_services/worker.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/worker/_settings.py +0 -0
- {kiapi-0.2.0 → kiapi-0.5.2/src}/kiapi/core/worker/_types/job_thunk.py +0 -0
- /kiapi-0.2.0/tests/__init__.py → /kiapi-0.5.2/src/kiapi/py.typed +0 -0
|
@@ -14,6 +14,12 @@ wheels/
|
|
|
14
14
|
# ace-step writes a progress-estimate cache under the project root
|
|
15
15
|
/.cache/
|
|
16
16
|
|
|
17
|
+
# Local environment variables
|
|
18
|
+
.env
|
|
19
|
+
|
|
20
|
+
# Local settings
|
|
21
|
+
test_settings.yaml
|
|
22
|
+
|
|
17
23
|
# Local service logs
|
|
18
24
|
*.log
|
|
19
25
|
|
|
@@ -23,3 +29,6 @@ wheels/
|
|
|
23
29
|
|
|
24
30
|
# Test assets downloaded via mise
|
|
25
31
|
tests/assets/
|
|
32
|
+
|
|
33
|
+
# Node modules (pnpm-managed dev tooling, e.g. firebase-tools)
|
|
34
|
+
node_modules/
|
kiapi-0.5.2/CHANGELOG.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.5.2] - 2026-07-29
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Publish workspace distributions with separate PyPI Trusted Publishing tokens so multi-package releases complete reliably.
|
|
14
|
+
|
|
15
|
+
## [0.5.1] - 2026-07-29
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- `kiapi run --relay none` explicitly disables the relay, overriding a relay enabled in user settings.
|
|
20
|
+
|
|
21
|
+
## [0.5.0] - 2026-07-11
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `kiapi service install` now also pins `XDG_CACHE_HOME` in the launchd property list so the background service uses the same cache directory and single-instance lock as the interactive CLI.
|
|
26
|
+
|
|
27
|
+
## [0.4.0] - 2026-07-11
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Added `kiapi service show` to print the installed launchd property list.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- `kiapi service install` now pins the current `XDG_CONFIG_HOME` and `XDG_DATA_HOME` values in the launchd property list so the background service resolves the same user settings and data directories as the interactive CLI.
|
|
36
|
+
- The hot-reload worker subprocess (`kiapi run --debug`) now loads the user settings file in the ASGI factory, so relays configured only in user settings (for example the GCP relay's `database_url`/`bucket`) start correctly. Previously `kiapi run --relay gcp --debug` failed at startup with "required field is not set" because the reload subprocess never ran `load_user_settings()`.
|
|
37
|
+
|
|
38
|
+
## [0.3.0] - 2026-07-02
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- `GET /health` now reports the status of the relay started with the server in a `relay` field (`name`, `running`, `failed`), or `null` when no relay is configured.
|
|
43
|
+
- Added a `request` method to the `Relay` protocol and implemented it on `LocalRelay` and `GCPRelay`, promoting the relay request client from the verification scripts into the relay packages. Responses are returned as `RelayResponse`, with binary bodies materialized to a temporary file the caller owns.
|
|
44
|
+
- The server now resolves a persistent relay `node_id` from its user data directory and injects it into the relay, and acquires a single-instance lock (via `kiarina-utils-app`, scoped to the user cache directory) at startup so a second `kiapi` cannot share the same node identity. Added a `request_poll_interval_s` setting for GCP request polling.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- The relay `node_id` is now generated automatically and persisted per data directory instead of being configured. The manual `node_id`/`source_node_id` relay settings were removed; clients discover a target node through liveness heartbeats and address responses with their own generated `node_id`.
|
|
49
|
+
- Simplified the `Relay` protocol to a single `watch` method and moved listener tasks and the HTTP client into the `watch` lifecycle, removing the explicit `close` method.
|
|
50
|
+
- Reworked the relay verification scripts to issue requests through `Relay.request` via the relay registry factories, removing the duplicated transport client in `scripts/relay/_client.py`.
|
|
51
|
+
- Converted the repository into a uv workspace and moved the `kiapi` package to `packages/kiapi/` with a `src/` layout. Packaging and lint/test paths are now per-package.
|
|
52
|
+
- Extracted the relay subsystem into a separate `kiapi-relay` package. `kiapi.core.relay` is now `kiapi_relay`, and `kiapi.relay.{local,gcp}` are now `kiapi_relay.{local,gcp}`. The `relay-gcp` extra now pulls `kiapi-relay[gcp]`.
|
|
53
|
+
- User-directory resolution and single-instance locking are delegated to the shared `kiarina-utils-app` package and used directly (`kiarina.utils.app`) rather than through a `core.app` re-export layer, removing the private `AppSettings`/user-directory copy and the direct `platformdirs` dependency. `kiapi.core.app` now provides only the `AppContext` schema. The app identity is set by calling `kiarina.utils.app.configure("kiapi", "kiarina")` at the CLI entry (`kiapi ...`) and the ASGI factory used by hot reload. The directory getters return `pathlib.Path`. The user `settings.yaml` section for these settings moves from `kiapi.core.app` to `kiarina.utils.app`, and the override environment variables move from `KIAPI_` to `KIARINA_UTILS_APP_`.
|
|
54
|
+
|
|
55
|
+
## [0.2.0] - 2026-06-26
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- Added an optional plugin-based remote job relay with Firebase Realtime Database notifications, GCS request/response payloads, in-process ASGI dispatch, committed-response recovery, and atomic terminal delivery.
|
|
60
|
+
- Added a filesystem-backed LocalRelay for local relay verification without GCP services.
|
|
61
|
+
- Added relay verification scripts for LocalRelay, GCPRelay, and end-to-end LocalRelay capability checks.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- Moved GCP relay dependencies into the optional `relay-gcp` extra.
|
|
66
|
+
- Updated the minimum `pydantic-settings-manager` dependency to 3.7.0.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- Added the OAuth scopes required by the Firebase Realtime Database REST API to GCP relay credentials.
|
|
71
|
+
- Added relay support for multipart file uploads such as `POST /v1/files`.
|
|
72
|
+
|
|
73
|
+
## [0.1.0] - 2026-06-23
|
|
74
|
+
|
|
75
|
+
### Added
|
|
76
|
+
|
|
77
|
+
- Initial release.
|
|
78
|
+
- Added release automation with mise tasks for version bumps, changelog updates, changelog extraction, package builds, and PyPI publishing.
|
|
79
|
+
- Added a tag-driven GitHub Actions release workflow that builds distributions, creates GitHub Releases from `CHANGELOG.md`, and publishes to PyPI.
|
|
80
|
+
- Added pull request and main-branch CI for tests, formatting/linting, documentation generation, and package builds.
|
|
81
|
+
- Added contribution and security policy documentation for public OSS use.
|
|
82
|
+
- Added PyPI classifiers and keywords to improve package metadata.
|
|
83
|
+
- Made PyPI publishing failures fail the release workflow instead of being ignored.
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- Updated GitHub Actions CI and release jobs from `macos-14` to `macos-15`.
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Declared `uv` in `mise.toml` so GitHub Actions installs it before running `uv sync`.
|
|
92
|
+
- Moved PyPI publishing to a Linux runner while keeping macOS release checks and builds.
|
kiapi-0.5.2/Makefile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.PHONY: format lint test build clean check
|
|
2
|
+
.DEFAULT_GOAL := check
|
|
3
|
+
|
|
4
|
+
# Package-scoped tasks. mise resolves the package from this directory through
|
|
5
|
+
# package:current, so the package name does not need to be passed explicitly.
|
|
6
|
+
format:
|
|
7
|
+
mise run format
|
|
8
|
+
lint:
|
|
9
|
+
mise run lint
|
|
10
|
+
test:
|
|
11
|
+
mise run test
|
|
12
|
+
build:
|
|
13
|
+
mise run build
|
|
14
|
+
clean:
|
|
15
|
+
mise run clean
|
|
16
|
+
check:
|
|
17
|
+
mise run format
|
|
18
|
+
mise run lint
|
|
19
|
+
mise run test
|
kiapi-0.5.2/PKG-INFO
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kiapi
|
|
3
|
+
Version: 0.5.2
|
|
4
|
+
Summary: Unified local inference API server for LLM agents on Apple Silicon (MLX): chat, embedding, image, music, sound-effect, and video — one process, one global memory budget, one single-flight queue, unified jobs and files.
|
|
5
|
+
Project-URL: Homepage, https://github.com/kiarina/kiapi
|
|
6
|
+
Project-URL: Repository, https://github.com/kiarina/kiapi
|
|
7
|
+
Project-URL: Documentation, https://kiarina.github.io/kiapi/
|
|
8
|
+
Project-URL: Changelog, https://github.com/kiarina/kiapi/blob/main/packages/kiapi/CHANGELOG.md
|
|
9
|
+
Author-email: kiarina <kiarinadawa@gmail.com>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: agent,api,apple-silicon,fastapi,local-inference,mlx
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Environment :: MacOS X
|
|
15
|
+
Classifier: Framework :: FastAPI
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: MacOS
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
24
|
+
Requires-Python: <3.13,>=3.12
|
|
25
|
+
Requires-Dist: click
|
|
26
|
+
Requires-Dist: fastapi<0.137
|
|
27
|
+
Requires-Dist: httpx
|
|
28
|
+
Requires-Dist: kiapi-relay
|
|
29
|
+
Requires-Dist: kiarina-utils-app>=2.3.0
|
|
30
|
+
Requires-Dist: kiarina-utils-common>=2.2.0
|
|
31
|
+
Requires-Dist: mflux>=0.18.0
|
|
32
|
+
Requires-Dist: mlx-audiocraft>=0.1.0
|
|
33
|
+
Requires-Dist: mlx-embeddings>=0.1.0
|
|
34
|
+
Requires-Dist: mlx-vlm==0.6.3
|
|
35
|
+
Requires-Dist: numpy<2.5
|
|
36
|
+
Requires-Dist: pillow
|
|
37
|
+
Requires-Dist: psutil
|
|
38
|
+
Requires-Dist: pydantic-settings-manager>=3.8.0
|
|
39
|
+
Requires-Dist: pydantic>=2
|
|
40
|
+
Requires-Dist: python-multipart
|
|
41
|
+
Requires-Dist: pyyaml
|
|
42
|
+
Requires-Dist: questionary
|
|
43
|
+
Requires-Dist: soundfile>=0.13.1
|
|
44
|
+
Requires-Dist: torch
|
|
45
|
+
Requires-Dist: torchaudio
|
|
46
|
+
Requires-Dist: torchvision
|
|
47
|
+
Requires-Dist: uvicorn[standard]
|
|
48
|
+
Provides-Extra: relay-gcp
|
|
49
|
+
Requires-Dist: kiapi-relay[gcp]; extra == 'relay-gcp'
|
|
50
|
+
Description-Content-Type: text/markdown
|
|
51
|
+
|
|
52
|
+
# kiapi
|
|
53
|
+
|
|
54
|
+
[](./LICENSE)
|
|
55
|
+

|
|
56
|
+

|
|
57
|
+
[](https://kiarina.github.io/kiapi/)
|
|
58
|
+
|
|
59
|
+
**English** | [日本語](README.ja.md)
|
|
60
|
+
|
|
61
|
+
## Summary
|
|
62
|
+
|
|
63
|
+
kiapi is a local API server that uses Apple Silicon and MLX to provide generative AI capabilities for LLM agents.
|
|
64
|
+
|
|
65
|
+
## API
|
|
66
|
+
|
|
67
|
+
| Domain | Family | Endpoint | Description |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| chat | | `POST /v1/chat` | [Chat API details](./kiapi/capabilities/chat/README.md) |
|
|
70
|
+
| embedding | | `POST /v1/embedding` | [Embedding API details](./kiapi/capabilities/embedding/README.md) |
|
|
71
|
+
| image | zimage | `POST /v1/image/zimage` | [Z-Image API details](./kiapi/capabilities/zimage/README.md) |
|
|
72
|
+
| | flux2 | `POST /v1/image/flux2` | [FLUX.2 API details](./kiapi/capabilities/flux2/README.md) |
|
|
73
|
+
| | qwen | `POST /v1/image/qwen` | [Qwen Image API details](./kiapi/capabilities/qwen/README.md) |
|
|
74
|
+
| | ideogram4 | `POST /v1/image/ideogram4` | [Ideogram 4 API details](./kiapi/capabilities/ideogram4/README.md) |
|
|
75
|
+
| | ernie | `POST /v1/image/ernie` | [ERNIE-Image API details](./kiapi/capabilities/ernie/README.md) |
|
|
76
|
+
| | seedvr2 | `POST /v1/image/seedvr2` | [SeedVR2 API details](./kiapi/capabilities/seedvr2/README.md) |
|
|
77
|
+
| | depthpro | `POST /v1/image/depthpro` | [Depth Pro API details](./kiapi/capabilities/depthpro/README.md) |
|
|
78
|
+
| audio | acestep | `POST /v1/audio/acestep` | [ACE-Step API details](./kiapi/capabilities/acestep/README.md) |
|
|
79
|
+
| | audiogen | `POST /v1/audio/audiogen` | [AudioGen API details](./kiapi/capabilities/audiogen/README.md) |
|
|
80
|
+
| video | ltx2 | `POST /v1/video/ltx2` | [LTX-2 API details](./kiapi/capabilities/ltx2/README.md) |
|
|
81
|
+
| web | | `POST /v1/web` | [Web API details](./kiapi/capabilities/web/README.md) |
|
|
82
|
+
| core | files | `POST /v1/files` | Upload input files, LoRA adapters, and other files, then issue a `file_id`. |
|
|
83
|
+
| | | `GET /v1/files` | Return a list of stored files. |
|
|
84
|
+
| | | `GET /v1/files/{file_id}` | Return file metadata. |
|
|
85
|
+
| | | `GET /v1/files/{file_id}/download` | Download the file body. |
|
|
86
|
+
| | | `DELETE /v1/files/{file_id}` | Delete a stored file. |
|
|
87
|
+
| | jobs | `GET /v1/jobs` | Return a list of generation jobs. |
|
|
88
|
+
| | | `GET /v1/jobs/{job_id}` | Return job status, progress, result, and artifact `file_id`s. |
|
|
89
|
+
| | | `DELETE /v1/jobs/{job_id}` | Remove a job from the job store. Running jobs are not interrupted. |
|
|
90
|
+
| | openapi | `GET /openapi.json` | Return the common API and each capability documentation URL. |
|
|
91
|
+
| | | `GET /v1/{domain}/{family}/openapi.json` | Return detailed input/output specs, usage, tips, and examples for each family. |
|
|
92
|
+
| | health | `GET /health` | Return server status, warmup status, queue length, and memory usage. |
|
|
93
|
+
|
|
94
|
+
See: [kiapi API Docs](https://kiarina.github.io/kiapi/)
|
|
95
|
+
|
|
96
|
+
## Requirements
|
|
97
|
+
|
|
98
|
+
- macOS / Apple Silicon
|
|
99
|
+
- Python `>=3.12,<3.13`
|
|
100
|
+
- `uv` (optional, recommended for isolated CLI installs and faster venv/package setup in `kiapi activate`)
|
|
101
|
+
- `mise` (used for development)
|
|
102
|
+
- Docker (when using the Web capability)
|
|
103
|
+
- Enough disk capacity for model weights and Docker images
|
|
104
|
+
|
|
105
|
+
kiapi is developed mainly for personal use on a **Mac Studio M4 Max 128GB**.
|
|
106
|
+
Some or all features may work on other Apple Silicon environments, but they are
|
|
107
|
+
not the primary verification target.
|
|
108
|
+
|
|
109
|
+
The memory budget can be specified with `KIAPI_MEMORY_LIMIT_GB`. If omitted,
|
|
110
|
+
kiapi automatically uses 80% of installed memory as the effective budget on
|
|
111
|
+
startup. If a model's required memory does not fit in that budget, requests
|
|
112
|
+
return 503 as an insufficient memory budget error.
|
|
113
|
+
|
|
114
|
+
`kiapi activate --all` uses a little under 600GB of disk capacity, including
|
|
115
|
+
model weights and Docker images. At first, it is recommended to use `kiapi activate`
|
|
116
|
+
to set up only the capabilities you need.
|
|
117
|
+
|
|
118
|
+
## Remote Job Relay
|
|
119
|
+
|
|
120
|
+
The optional GCP relay lets a kiapi node inside a closed network receive API
|
|
121
|
+
work without exposing an inbound socket. Firebase Realtime Database carries
|
|
122
|
+
small notifications, while Cloud Storage carries request and response bodies.
|
|
123
|
+
Install kiapi with the `relay-gcp` extra to enable it:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
python3.12 -m pip install --upgrade "kiapi[relay-gcp]"
|
|
127
|
+
uv tool install --python 3.12 "kiapi[relay-gcp]"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```sh
|
|
131
|
+
export KIAPI_RELAY_GCP_DATABASE_URL="https://PROJECT.firebaseio.com"
|
|
132
|
+
export KIAPI_RELAY_GCP_BUCKET="PRIVATE_RELAY_BUCKET"
|
|
133
|
+
|
|
134
|
+
# Uses Application Default Credentials by default.
|
|
135
|
+
kiapi run --relay gcp
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Each node generates its own `node_id` on first start, persists it in the user
|
|
139
|
+
data directory, and publishes a liveness heartbeat under `liveness`.
|
|
140
|
+
A requester picks the most recently seen node and writes
|
|
141
|
+
`sessions/{session_id}/request.json` in GCS, then writes a notification
|
|
142
|
+
to `nodes/{node_id}/requests/{session_id}` in RTDB. The relay reports
|
|
143
|
+
`queued`, `running`, and the terminal result below the requester node's
|
|
144
|
+
`responses` path.
|
|
145
|
+
|
|
146
|
+
- Requests are dispatched directly to the in-process FastAPI app and handled
|
|
147
|
+
one at a time by the relay.
|
|
148
|
+
- JSON responses use `response.json`. Binary responses write `response.body`
|
|
149
|
+
before `response.json`.
|
|
150
|
+
- `response.json` uses a GCS create-only generation precondition. A completed
|
|
151
|
+
response found after restart is reported without executing the API again.
|
|
152
|
+
- The terminal RTDB response and request deletion use one atomic multi-location
|
|
153
|
+
update.
|
|
154
|
+
- Startup installs a session-scoped lifecycle rule that deletes session objects
|
|
155
|
+
after one day. Set `KIAPI_RELAY_GCP_MANAGE_BUCKET_LIFECYCLE=false` when
|
|
156
|
+
infrastructure manages this rule.
|
|
157
|
+
|
|
158
|
+
Use a dedicated bucket and narrowly scoped RTDB/GCS permissions. Google
|
|
159
|
+
credentials are configured through
|
|
160
|
+
[`kiarina-lib-google`](https://github.com/kiarina/kiarina-python/tree/main/packages/kiarina-lib-google).
|
|
161
|
+
|
|
162
|
+
See [GCP Relay setup](../kiapi-relay/src/kiapi_relay/impl/gcp/README.md) for resource
|
|
163
|
+
creation, IAM, authentication, configuration, and verification steps.
|
|
164
|
+
|
|
165
|
+
For local relay verification without GCP, use `local`. It uses the same
|
|
166
|
+
in-process dispatch path but stores notifications and payloads under a local
|
|
167
|
+
directory:
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
export KIAPI_RELAY_LOCAL_ROOT="/tmp/kiapi/relay"
|
|
171
|
+
export KIAPI_RELAY_LOCAL_PREFIX="private/kiapi"
|
|
172
|
+
|
|
173
|
+
kiapi run --relay local
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The requester writes `{root}/{prefix}/sessions/{session_id}/request.json`, then
|
|
177
|
+
writes `{root}/{prefix}/nodes/{node_id}/requests/{session_id}.json` with
|
|
178
|
+
`{"session_id":"...","source_node_id":"..."}`. The relay writes bridge status
|
|
179
|
+
to `{root}/{prefix}/nodes/{source_node_id}/responses/{session_id}.json` and
|
|
180
|
+
stores the committed response in the session directory.
|
|
181
|
+
|
|
182
|
+
## Local Storage
|
|
183
|
+
|
|
184
|
+
kiapi mainly writes to these local paths at runtime.
|
|
185
|
+
|
|
186
|
+
| Purpose | Setting | Default | Notes |
|
|
187
|
+
|---|---|---|---|
|
|
188
|
+
| Files API uploads, generated artifacts, and URL/data URL inputs | `KIAPI_FILES_ROOT` | `/tmp/kiapi/files` | Storage referenced by `file_id`. The default may disappear after OS reboot or tmp cleanup. Use `~/.kiapi/files` or external storage for long-term retention. |
|
|
189
|
+
| Temporary working directories during request processing | `KIAPI_TMP_ROOT` | `/tmp/kiapi/work` | Used for chat/embedding input expansion, generation intermediates, LoRA training work, and similar tasks. |
|
|
190
|
+
| Web backend subprocess logs | `KIAPI_WEB_BACKEND_LOG_DIR` | `/tmp/kiapi/logs/web` | stdout/stderr for SearXNG / Crawl4AI Docker subprocesses. |
|
|
191
|
+
| ACE-Step dedicated venv / project / checkpoints | `KIAPI_ACESTEP_PYTHON_PATH`, `KIAPI_ACESTEP_PROJECT_ROOT`, `KIAPI_ACESTEP_CHECKPOINT_DIR` | `acestep/` under the user data dir | When `python_path`, `project_root`, and `checkpoint_dir` are omitted, kiapi places the ACE-Step venv and checkpoints under a persistent ACE-Step directory. |
|
|
192
|
+
|
|
193
|
+
Other model weights and library caches are managed by Hugging Face, mflux,
|
|
194
|
+
Docker, or each library/tool. kiapi generally does not move them into its own
|
|
195
|
+
storage location.
|
|
196
|
+
|
|
197
|
+
## Security
|
|
198
|
+
|
|
199
|
+
By default, `kiapi run` starts on `127.0.0.1:8000`.
|
|
200
|
+
When `--host 0.0.0.0` is specified, the server may be reachable from other
|
|
201
|
+
machines, so use it only on trusted networks.
|
kiapi-0.5.2/README.ja.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# kiapi
|
|
2
|
+
|
|
3
|
+
[](./LICENSE)
|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
[](https://kiarina.github.io/kiapi/)
|
|
7
|
+
|
|
8
|
+
[English](README.md) | **日本語**
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
kiapi は、Apple Silicon と MLX を活用し、LLM エージェントに生成 AI 機能を提供するローカル API サーバーです。
|
|
13
|
+
|
|
14
|
+
## API
|
|
15
|
+
|
|
16
|
+
| Domain | Family | Endpoint | Description |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| chat | | `POST /v1/chat` | [Chat API の詳細はこちら](./kiapi/capabilities/chat/README.ja.md) |
|
|
19
|
+
| embedding | | `POST /v1/embedding` | [Embedding API の詳細はこちら](./kiapi/capabilities/embedding/README.ja.md) |
|
|
20
|
+
| image | zimage | `POST /v1/image/zimage` | [Z-Image API の詳細はこちら](./kiapi/capabilities/zimage/README.ja.md) |
|
|
21
|
+
| | flux2 | `POST /v1/image/flux2` | [FLUX.2 API の詳細はこちら](./kiapi/capabilities/flux2/README.ja.md) |
|
|
22
|
+
| | qwen | `POST /v1/image/qwen` | [Qwen Image API の詳細はこちら](./kiapi/capabilities/qwen/README.ja.md) |
|
|
23
|
+
| | ideogram4 | `POST /v1/image/ideogram4` | [Ideogram 4 API の詳細はこちら](./kiapi/capabilities/ideogram4/README.ja.md) |
|
|
24
|
+
| | ernie | `POST /v1/image/ernie` | [ERNIE-Image API の詳細はこちら](./kiapi/capabilities/ernie/README.ja.md) |
|
|
25
|
+
| | seedvr2 | `POST /v1/image/seedvr2` | [SeedVR2 API の詳細はこちら](./kiapi/capabilities/seedvr2/README.ja.md) |
|
|
26
|
+
| | depthpro | `POST /v1/image/depthpro` | [Depth Pro API の詳細はこちら](./kiapi/capabilities/depthpro/README.ja.md) |
|
|
27
|
+
| audio | acestep | `POST /v1/audio/acestep` | [ACE-Step API の詳細はこちら](./kiapi/capabilities/acestep/README.ja.md) |
|
|
28
|
+
| | audiogen | `POST /v1/audio/audiogen` | [AudioGen API の詳細はこちら](./kiapi/capabilities/audiogen/README.ja.md) |
|
|
29
|
+
| video | ltx2 | `POST /v1/video/ltx2` | [LTX-2 API の詳細はこちら](./kiapi/capabilities/ltx2/README.ja.md) |
|
|
30
|
+
| web | | `POST /v1/web` | [Web API の詳細はこちら](./kiapi/capabilities/web/README.ja.md) |
|
|
31
|
+
| core | files | `POST /v1/files` | 入力ファイルや LoRA adapter などをアップロードし、`file_id` を発行する。 |
|
|
32
|
+
| | | `GET /v1/files` | 保存済みファイルの一覧を返す。 |
|
|
33
|
+
| | | `GET /v1/files/{file_id}` | ファイルメタデータを返す。 |
|
|
34
|
+
| | | `GET /v1/files/{file_id}/download` | ファイル本体をダウンロードする。 |
|
|
35
|
+
| | | `DELETE /v1/files/{file_id}` | 保存済みファイルを削除する。 |
|
|
36
|
+
| | jobs | `GET /v1/jobs` | 生成ジョブの一覧を返す。 |
|
|
37
|
+
| | | `GET /v1/jobs/{job_id}` | ジョブの状態、進捗、結果、成果物 `file_id` を返す。 |
|
|
38
|
+
| | | `DELETE /v1/jobs/{job_id}` | ジョブストアからジョブを削除する。実行中ジョブは中断されない。 |
|
|
39
|
+
| | openapi | `GET /openapi.json` | 共通 API と各 capability のドキュメント URL を返す。 |
|
|
40
|
+
| | | `GET /v1/{domain}/{family}/openapi.json` | 各 family の詳細な入出力仕様、使い方、TIPS、例を返す。 |
|
|
41
|
+
| | health | `GET /health` | サーバー状態、warmup、キュー長、メモリ使用状況を返す。 |
|
|
42
|
+
|
|
43
|
+
See: [kiapi API Docs](https://kiarina.github.io/kiapi/)
|
|
44
|
+
|
|
45
|
+
## Requirements
|
|
46
|
+
|
|
47
|
+
- macOS / Apple Silicon
|
|
48
|
+
- Python `>=3.12,<3.13`
|
|
49
|
+
- `uv`(任意。CLI tool として隔離インストールしたい場合や、`kiapi activate` が行う venv 作成・package install を高速化したい場合に推奨)
|
|
50
|
+
- `mise`(開発で使用)
|
|
51
|
+
- Docker(Web capability を使う場合)
|
|
52
|
+
- モデル重みや Docker image を保存するための十分なディスク容量
|
|
53
|
+
|
|
54
|
+
kiapi は主に **Mac Studio M4 Max 128GB** での個人利用を想定して開発しています。
|
|
55
|
+
他の Apple Silicon 環境でも一部または全部の機能が動作する可能性はありますが、
|
|
56
|
+
主な検証対象ではありません。
|
|
57
|
+
|
|
58
|
+
メモリ予算は `KIAPI_MEMORY_LIMIT_GB` で明示指定できます。未指定の場合は、
|
|
59
|
+
起動時に搭載メモリの 80% を自動で実効予算にします。モデルの必要メモリが
|
|
60
|
+
この予算に収まらない場合、リクエストはメモリ予算不足として 503 を返します。
|
|
61
|
+
|
|
62
|
+
`kiapi activate --all` は、モデル重みや Docker image を含めて
|
|
63
|
+
600GB 弱のディスク容量を使用します。最初は必要な capability だけを
|
|
64
|
+
`kiapi activate` で選択してセットアップすることをおすすめします。
|
|
65
|
+
|
|
66
|
+
## Remote Job Relay
|
|
67
|
+
|
|
68
|
+
オプションの GCP relay を使うと、閉鎖ネットワーク内の kiapi node に inbound socket を
|
|
69
|
+
公開せず API 処理を依頼できます。小さな通知は Firebase Realtime Database、request /
|
|
70
|
+
response body は Cloud Storage で受け渡します。
|
|
71
|
+
有効にするには、`relay-gcp` extra 付きで kiapi をインストールしてください。
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
python3.12 -m pip install --upgrade "kiapi[relay-gcp]"
|
|
75
|
+
uv tool install --python 3.12 "kiapi[relay-gcp]"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
export KIAPI_RELAY_GCP_DATABASE_URL="https://PROJECT.firebaseio.com"
|
|
80
|
+
export KIAPI_RELAY_GCP_BUCKET="PRIVATE_RELAY_BUCKET"
|
|
81
|
+
|
|
82
|
+
# 既定では Application Default Credentials を使用
|
|
83
|
+
kiapi run --relay gcp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
各 node は初回起動時に自分の `node_id` を生成して user data directory に永続化し、
|
|
87
|
+
`liveness` 以下へ liveness heartbeat を publish します。requester は最も新しく
|
|
88
|
+
観測された node を選び、GCS の `sessions/{session_id}/request.json` を書き込んだ
|
|
89
|
+
後、RTDB の `nodes/{node_id}/requests/{session_id}` へ通知を書き込みます。relay は
|
|
90
|
+
requester node の `responses` path へ `queued`、`running`、terminal result を通知します。
|
|
91
|
+
|
|
92
|
+
- request は process 内の FastAPI app へ直接 dispatch され、relay が 1 件ずつ処理します。
|
|
93
|
+
- JSON response は `response.json`、binary response は `response.body` の後に
|
|
94
|
+
`response.json` を書き込みます。
|
|
95
|
+
- `response.json` は GCS の create-only generation precondition で排他します。再起動後に
|
|
96
|
+
完了済み response が見つかった場合、API を再実行せず結果を再通知します。
|
|
97
|
+
- terminal RTDB response の通知と request 削除は 1 回の atomic multi-location update
|
|
98
|
+
で行います。
|
|
99
|
+
- 起動時に session object を 1 日後に削除する session 限定 lifecycle rule を設定します。
|
|
100
|
+
infrastructure 側で管理する場合は
|
|
101
|
+
`KIAPI_RELAY_GCP_MANAGE_BUCKET_LIFECYCLE=false` を指定してください。
|
|
102
|
+
|
|
103
|
+
専用 bucket と必要最小限の RTDB / GCS 権限を使用してください。Google credential は
|
|
104
|
+
[`kiarina-lib-google`](https://github.com/kiarina/kiarina-python/tree/main/packages/kiarina-lib-google)
|
|
105
|
+
で設定します。
|
|
106
|
+
|
|
107
|
+
resource 作成、IAM、認証、設定、検証手順は
|
|
108
|
+
[GCP Relay setup](../kiapi-relay/src/kiapi_relay/impl/gcp/README.ja.md) を参照してください。
|
|
109
|
+
|
|
110
|
+
GCP を使わずに relay を検証したい場合は `local` を使えます。同じ process 内 dispatch
|
|
111
|
+
経路を使い、通知と payload をローカルディレクトリ配下に保存します。
|
|
112
|
+
|
|
113
|
+
```sh
|
|
114
|
+
export KIAPI_RELAY_LOCAL_ROOT="/tmp/kiapi/relay"
|
|
115
|
+
export KIAPI_RELAY_LOCAL_PREFIX="private/kiapi"
|
|
116
|
+
|
|
117
|
+
kiapi run --relay local
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
requester は `{root}/{prefix}/sessions/{session_id}/request.json` を書き込んだ後、
|
|
121
|
+
`{root}/{prefix}/nodes/{node_id}/requests/{session_id}.json` に
|
|
122
|
+
`{"session_id":"...","source_node_id":"..."}` を書き込みます。relay は bridge status を
|
|
123
|
+
`{root}/{prefix}/nodes/{source_node_id}/responses/{session_id}.json` に書き込み、
|
|
124
|
+
committed response を session directory に保存します。
|
|
125
|
+
|
|
126
|
+
## Local Storage
|
|
127
|
+
|
|
128
|
+
kiapi が実行中にローカルへ書き込む主な場所は次の通りです。
|
|
129
|
+
|
|
130
|
+
| 用途 | 設定 | 既定値 | 備考 |
|
|
131
|
+
|---|---|---|---|
|
|
132
|
+
| Files API のアップロード・生成成果物・URL/data URL 入力 | `KIAPI_FILES_ROOT` | `/tmp/kiapi/files` | `file_id` で参照される保存先。既定では OS の再起動や tmp cleanup で消える可能性があります。長期保存したい場合は `~/.kiapi/files` や外部ディスクに変更してください。 |
|
|
133
|
+
| リクエスト処理中の一時作業ディレクトリ | `KIAPI_TMP_ROOT` | `/tmp/kiapi/work` | chat/embedding の入力展開、生成前の中間ファイル、LoRA 学習作業など。 |
|
|
134
|
+
| Web backend subprocess log | `KIAPI_WEB_BACKEND_LOG_DIR` | `/tmp/kiapi/logs/web` | SearXNG / Crawl4AI Docker subprocess の stdout/stderr。 |
|
|
135
|
+
| ACE-Step 専用 venv / project / checkpoints | `KIAPI_ACESTEP_PYTHON_PATH`, `KIAPI_ACESTEP_PROJECT_ROOT`, `KIAPI_ACESTEP_CHECKPOINT_DIR` | user data dir 配下の `acestep/` | `python_path`, `project_root`, `checkpoint_dir` が未指定の場合、ACE-Step 用の永続ディレクトリに venv と checkpoint を配置します。 |
|
|
136
|
+
|
|
137
|
+
上記を除くモデル重みやライブラリキャッシュは Hugging Face、mflux、Docker など
|
|
138
|
+
各ライブラリ・ツールの管理下に置き、kiapi は原則として独自の保存先へ移しません。
|
|
139
|
+
|
|
140
|
+
## Security
|
|
141
|
+
|
|
142
|
+
既定では `kiapi run` は `127.0.0.1:8000` で起動します。
|
|
143
|
+
`--host 0.0.0.0` を指定すると他のマシンから到達できる可能性があるため、
|
|
144
|
+
信頼できるネットワーク内でのみ使用してください。
|
kiapi-0.5.2/README.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# kiapi
|
|
2
|
+
|
|
3
|
+
[](./LICENSE)
|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
[](https://kiarina.github.io/kiapi/)
|
|
7
|
+
|
|
8
|
+
**English** | [日本語](README.ja.md)
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
kiapi is a local API server that uses Apple Silicon and MLX to provide generative AI capabilities for LLM agents.
|
|
13
|
+
|
|
14
|
+
## API
|
|
15
|
+
|
|
16
|
+
| Domain | Family | Endpoint | Description |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| chat | | `POST /v1/chat` | [Chat API details](./kiapi/capabilities/chat/README.md) |
|
|
19
|
+
| embedding | | `POST /v1/embedding` | [Embedding API details](./kiapi/capabilities/embedding/README.md) |
|
|
20
|
+
| image | zimage | `POST /v1/image/zimage` | [Z-Image API details](./kiapi/capabilities/zimage/README.md) |
|
|
21
|
+
| | flux2 | `POST /v1/image/flux2` | [FLUX.2 API details](./kiapi/capabilities/flux2/README.md) |
|
|
22
|
+
| | qwen | `POST /v1/image/qwen` | [Qwen Image API details](./kiapi/capabilities/qwen/README.md) |
|
|
23
|
+
| | ideogram4 | `POST /v1/image/ideogram4` | [Ideogram 4 API details](./kiapi/capabilities/ideogram4/README.md) |
|
|
24
|
+
| | ernie | `POST /v1/image/ernie` | [ERNIE-Image API details](./kiapi/capabilities/ernie/README.md) |
|
|
25
|
+
| | seedvr2 | `POST /v1/image/seedvr2` | [SeedVR2 API details](./kiapi/capabilities/seedvr2/README.md) |
|
|
26
|
+
| | depthpro | `POST /v1/image/depthpro` | [Depth Pro API details](./kiapi/capabilities/depthpro/README.md) |
|
|
27
|
+
| audio | acestep | `POST /v1/audio/acestep` | [ACE-Step API details](./kiapi/capabilities/acestep/README.md) |
|
|
28
|
+
| | audiogen | `POST /v1/audio/audiogen` | [AudioGen API details](./kiapi/capabilities/audiogen/README.md) |
|
|
29
|
+
| video | ltx2 | `POST /v1/video/ltx2` | [LTX-2 API details](./kiapi/capabilities/ltx2/README.md) |
|
|
30
|
+
| web | | `POST /v1/web` | [Web API details](./kiapi/capabilities/web/README.md) |
|
|
31
|
+
| core | files | `POST /v1/files` | Upload input files, LoRA adapters, and other files, then issue a `file_id`. |
|
|
32
|
+
| | | `GET /v1/files` | Return a list of stored files. |
|
|
33
|
+
| | | `GET /v1/files/{file_id}` | Return file metadata. |
|
|
34
|
+
| | | `GET /v1/files/{file_id}/download` | Download the file body. |
|
|
35
|
+
| | | `DELETE /v1/files/{file_id}` | Delete a stored file. |
|
|
36
|
+
| | jobs | `GET /v1/jobs` | Return a list of generation jobs. |
|
|
37
|
+
| | | `GET /v1/jobs/{job_id}` | Return job status, progress, result, and artifact `file_id`s. |
|
|
38
|
+
| | | `DELETE /v1/jobs/{job_id}` | Remove a job from the job store. Running jobs are not interrupted. |
|
|
39
|
+
| | openapi | `GET /openapi.json` | Return the common API and each capability documentation URL. |
|
|
40
|
+
| | | `GET /v1/{domain}/{family}/openapi.json` | Return detailed input/output specs, usage, tips, and examples for each family. |
|
|
41
|
+
| | health | `GET /health` | Return server status, warmup status, queue length, and memory usage. |
|
|
42
|
+
|
|
43
|
+
See: [kiapi API Docs](https://kiarina.github.io/kiapi/)
|
|
44
|
+
|
|
45
|
+
## Requirements
|
|
46
|
+
|
|
47
|
+
- macOS / Apple Silicon
|
|
48
|
+
- Python `>=3.12,<3.13`
|
|
49
|
+
- `uv` (optional, recommended for isolated CLI installs and faster venv/package setup in `kiapi activate`)
|
|
50
|
+
- `mise` (used for development)
|
|
51
|
+
- Docker (when using the Web capability)
|
|
52
|
+
- Enough disk capacity for model weights and Docker images
|
|
53
|
+
|
|
54
|
+
kiapi is developed mainly for personal use on a **Mac Studio M4 Max 128GB**.
|
|
55
|
+
Some or all features may work on other Apple Silicon environments, but they are
|
|
56
|
+
not the primary verification target.
|
|
57
|
+
|
|
58
|
+
The memory budget can be specified with `KIAPI_MEMORY_LIMIT_GB`. If omitted,
|
|
59
|
+
kiapi automatically uses 80% of installed memory as the effective budget on
|
|
60
|
+
startup. If a model's required memory does not fit in that budget, requests
|
|
61
|
+
return 503 as an insufficient memory budget error.
|
|
62
|
+
|
|
63
|
+
`kiapi activate --all` uses a little under 600GB of disk capacity, including
|
|
64
|
+
model weights and Docker images. At first, it is recommended to use `kiapi activate`
|
|
65
|
+
to set up only the capabilities you need.
|
|
66
|
+
|
|
67
|
+
## Remote Job Relay
|
|
68
|
+
|
|
69
|
+
The optional GCP relay lets a kiapi node inside a closed network receive API
|
|
70
|
+
work without exposing an inbound socket. Firebase Realtime Database carries
|
|
71
|
+
small notifications, while Cloud Storage carries request and response bodies.
|
|
72
|
+
Install kiapi with the `relay-gcp` extra to enable it:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
python3.12 -m pip install --upgrade "kiapi[relay-gcp]"
|
|
76
|
+
uv tool install --python 3.12 "kiapi[relay-gcp]"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
export KIAPI_RELAY_GCP_DATABASE_URL="https://PROJECT.firebaseio.com"
|
|
81
|
+
export KIAPI_RELAY_GCP_BUCKET="PRIVATE_RELAY_BUCKET"
|
|
82
|
+
|
|
83
|
+
# Uses Application Default Credentials by default.
|
|
84
|
+
kiapi run --relay gcp
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Each node generates its own `node_id` on first start, persists it in the user
|
|
88
|
+
data directory, and publishes a liveness heartbeat under `liveness`.
|
|
89
|
+
A requester picks the most recently seen node and writes
|
|
90
|
+
`sessions/{session_id}/request.json` in GCS, then writes a notification
|
|
91
|
+
to `nodes/{node_id}/requests/{session_id}` in RTDB. The relay reports
|
|
92
|
+
`queued`, `running`, and the terminal result below the requester node's
|
|
93
|
+
`responses` path.
|
|
94
|
+
|
|
95
|
+
- Requests are dispatched directly to the in-process FastAPI app and handled
|
|
96
|
+
one at a time by the relay.
|
|
97
|
+
- JSON responses use `response.json`. Binary responses write `response.body`
|
|
98
|
+
before `response.json`.
|
|
99
|
+
- `response.json` uses a GCS create-only generation precondition. A completed
|
|
100
|
+
response found after restart is reported without executing the API again.
|
|
101
|
+
- The terminal RTDB response and request deletion use one atomic multi-location
|
|
102
|
+
update.
|
|
103
|
+
- Startup installs a session-scoped lifecycle rule that deletes session objects
|
|
104
|
+
after one day. Set `KIAPI_RELAY_GCP_MANAGE_BUCKET_LIFECYCLE=false` when
|
|
105
|
+
infrastructure manages this rule.
|
|
106
|
+
|
|
107
|
+
Use a dedicated bucket and narrowly scoped RTDB/GCS permissions. Google
|
|
108
|
+
credentials are configured through
|
|
109
|
+
[`kiarina-lib-google`](https://github.com/kiarina/kiarina-python/tree/main/packages/kiarina-lib-google).
|
|
110
|
+
|
|
111
|
+
See [GCP Relay setup](../kiapi-relay/src/kiapi_relay/impl/gcp/README.md) for resource
|
|
112
|
+
creation, IAM, authentication, configuration, and verification steps.
|
|
113
|
+
|
|
114
|
+
For local relay verification without GCP, use `local`. It uses the same
|
|
115
|
+
in-process dispatch path but stores notifications and payloads under a local
|
|
116
|
+
directory:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
export KIAPI_RELAY_LOCAL_ROOT="/tmp/kiapi/relay"
|
|
120
|
+
export KIAPI_RELAY_LOCAL_PREFIX="private/kiapi"
|
|
121
|
+
|
|
122
|
+
kiapi run --relay local
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The requester writes `{root}/{prefix}/sessions/{session_id}/request.json`, then
|
|
126
|
+
writes `{root}/{prefix}/nodes/{node_id}/requests/{session_id}.json` with
|
|
127
|
+
`{"session_id":"...","source_node_id":"..."}`. The relay writes bridge status
|
|
128
|
+
to `{root}/{prefix}/nodes/{source_node_id}/responses/{session_id}.json` and
|
|
129
|
+
stores the committed response in the session directory.
|
|
130
|
+
|
|
131
|
+
## Local Storage
|
|
132
|
+
|
|
133
|
+
kiapi mainly writes to these local paths at runtime.
|
|
134
|
+
|
|
135
|
+
| Purpose | Setting | Default | Notes |
|
|
136
|
+
|---|---|---|---|
|
|
137
|
+
| Files API uploads, generated artifacts, and URL/data URL inputs | `KIAPI_FILES_ROOT` | `/tmp/kiapi/files` | Storage referenced by `file_id`. The default may disappear after OS reboot or tmp cleanup. Use `~/.kiapi/files` or external storage for long-term retention. |
|
|
138
|
+
| Temporary working directories during request processing | `KIAPI_TMP_ROOT` | `/tmp/kiapi/work` | Used for chat/embedding input expansion, generation intermediates, LoRA training work, and similar tasks. |
|
|
139
|
+
| Web backend subprocess logs | `KIAPI_WEB_BACKEND_LOG_DIR` | `/tmp/kiapi/logs/web` | stdout/stderr for SearXNG / Crawl4AI Docker subprocesses. |
|
|
140
|
+
| ACE-Step dedicated venv / project / checkpoints | `KIAPI_ACESTEP_PYTHON_PATH`, `KIAPI_ACESTEP_PROJECT_ROOT`, `KIAPI_ACESTEP_CHECKPOINT_DIR` | `acestep/` under the user data dir | When `python_path`, `project_root`, and `checkpoint_dir` are omitted, kiapi places the ACE-Step venv and checkpoints under a persistent ACE-Step directory. |
|
|
141
|
+
|
|
142
|
+
Other model weights and library caches are managed by Hugging Face, mflux,
|
|
143
|
+
Docker, or each library/tool. kiapi generally does not move them into its own
|
|
144
|
+
storage location.
|
|
145
|
+
|
|
146
|
+
## Security
|
|
147
|
+
|
|
148
|
+
By default, `kiapi run` starts on `127.0.0.1:8000`.
|
|
149
|
+
When `--host 0.0.0.0` is specified, the server may be reachable from other
|
|
150
|
+
machines, so use it only on trusted networks.
|