kaiten-cli 0.3.4__tar.gz → 0.3.5__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.
- kaiten_cli-0.3.5/LICENSE +21 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/PKG-INFO +35 -3
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/README.md +31 -2
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/PYPI_PUBLISHING.md +15 -1
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/pyproject.toml +4 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/check_release.py +10 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/__init__.py +1 -1
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_release.py +27 -3
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/.gitignore +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/AGENTS.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/API_BEHAVIOR_MATRIX.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/ARCHITECTURE.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/LIVE_VALIDATION.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/SECURITY.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/DOCUMENT_YJS_VERIFICATION.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/LOCALIZATION_VERIFICATION.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/RESTRICTIONS_VERIFICATION.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/README.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/automation-tables.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/contracts.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/coverage.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/decisions.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/README.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/build.mjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/cli.mjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/core.mjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/export-schemas.cjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/package-lock.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/package.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/schemas.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/test/live-holder.mjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/test/sync.test.mjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/audit_public_api.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/benchmark_reference_workflows.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/check_locales.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/extract_automation_docs.cjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/generate_reference_docs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/normalize_automation_docs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-heavy-data/SKILL.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-metrics/SKILL.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-mutations/SKILL.md +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/__main__.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/agent_gateway.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/app.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs.LEGAL.txt +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs.LICENSES.txt +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/completion.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/discovery.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/errors.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/i18n.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/locales/ru.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/localized_click.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/models.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/profiles.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/__init__.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/addons.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/audit_and_analytics.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schema.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schemas.json +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automations.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/base.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/blockers.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/boards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_relations.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_types.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/cards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/charts.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/checklists.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/columns.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/comments.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_directories.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_properties.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/dashboards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/documents.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/external_links.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/files.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/github_addon.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/iterations.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/lanes.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/live_contracts.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/members.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/module_docs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/projects.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/query.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/restrictions.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/roles_and_groups.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/scim.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/service_desk.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/snapshot.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/spaces.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/subscribers.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tags.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/time_logs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tree.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/utilities.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/webhooks.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/__init__.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/automation_validation.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/behaviors.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/cache.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/client.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/endpoints.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/executor.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/fs_security.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/input.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/output.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/public_validation.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_build.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_common.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_query.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_store.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshots.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/sqlite_errors.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/__init__.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/addons.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/audit.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/batch.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/card_move_url.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/cards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/checklists.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/company_users.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/dashboards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/document_sync.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/documents.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/files.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/markdown_export.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/pagination.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/projects.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/relations.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/restrictions.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/spaces.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/time_logs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree_sharing.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/trace.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/transforms.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/schema_docs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/update_check.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/conftest.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/data/mcp_aliases.txt +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/conftest.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_automation_contract.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_restrictions_live.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_sandbox_live_full.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_addons_and_github_addon.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_agent_gateway.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_audit_and_analytics.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_automation_schemas.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_card_types_and_custom_properties.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_cards_move_by_url.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_charts.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_cli_smoke.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_column_settings.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_command_resolution.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_completion_tail.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_dashboards.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_developer_parity_gaps.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_discovery.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_docs_structure.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_document_sync.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_documents_and_tree.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_domain_expansion.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_entrypoints.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_executor_architecture.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_executor_http.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_file_downloads.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_file_uploads.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_fs_security.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_generated_docs.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_input_parsing.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_investigation_workflows.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_iterations.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_live_contracts.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_local_snapshots.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_localization.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_markdown_export.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_narrow_list_fields.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_output_human.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_output_json.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_pagination.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_private_files.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_profiles.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_api_cutover.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_contract_parity.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_input_transport.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_rate_limit_policy.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_registry_examples.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_restrictions.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_roles_groups_and_subscribers.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_runtime_cache.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_service_desk.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_shell_completion.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_skills_structure.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_timeout_policy.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_transforms.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_tree_entity_sharing.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_update_check.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_utilities_remainder.py +0 -0
- {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_webhooks_and_automations.py +0 -0
kaiten_cli-0.3.5/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Viktor Ognev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: kaiten-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: LLM-oriented CLI for Kaiten
|
|
5
5
|
Project-URL: Homepage, https://github.com/ViktorOgnev/kaiten-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/ViktorOgnev/kaiten-cli
|
|
7
7
|
Project-URL: Issues, https://github.com/ViktorOgnev/kaiten-cli/issues
|
|
8
8
|
Author: Viktor Ognev
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
9
11
|
Keywords: api,automation,cli,kaiten,llm
|
|
10
12
|
Classifier: Development Status :: 4 - Beta
|
|
11
13
|
Classifier: Environment :: Console
|
|
@@ -16,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
16
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
19
22
|
Classifier: Topic :: Utilities
|
|
20
23
|
Requires-Python: >=3.11
|
|
21
24
|
Requires-Dist: click>=8.1
|
|
@@ -106,6 +109,35 @@ Yjs-режима заблокирован (`mutation_blocked`, код `6`). Дл
|
|
|
106
109
|
|
|
107
110
|
## Быстрый старт
|
|
108
111
|
|
|
112
|
+
### Установка через Homebrew
|
|
113
|
+
|
|
114
|
+
На macOS и Linux:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
brew install ViktorOgnev/tap/kaiten-cli
|
|
118
|
+
kaiten --locale ru --version
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Homebrew устанавливает Python, Node.js для Yjs и зависимости CLI в управляемое
|
|
122
|
+
окружение. Отдельно устанавливать pipx или uv не требуется. Формула находится в
|
|
123
|
+
[публичном tap](https://github.com/ViktorOgnev/homebrew-tap); пока она не входит
|
|
124
|
+
в основной каталог Homebrew.
|
|
125
|
+
|
|
126
|
+
Обновление:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
brew update
|
|
130
|
+
brew upgrade kaiten-cli
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
При переходе с pipx или uv сначала удалите прежнюю установку соответствующим
|
|
134
|
+
менеджером (`pipx uninstall kaiten-cli` или `uv tool uninstall kaiten-cli`).
|
|
135
|
+
Для pip используйте `python -m pip uninstall kaiten-cli` именно в прежнем
|
|
136
|
+
окружении. Эти команды не удаляют профили Kaiten. После установки проверьте
|
|
137
|
+
`command -v kaiten` и `type -a kaiten`: запускаемый файл должен принадлежать
|
|
138
|
+
Homebrew. При необходимости выполните `hash -r` или откройте новый терминал.
|
|
139
|
+
Обновляйте Homebrew-установку только через `brew upgrade`.
|
|
140
|
+
|
|
109
141
|
### Установка из PyPI
|
|
110
142
|
|
|
111
143
|
Требуется Python 3.11 или новее. Стабильные версии доступны в
|
|
@@ -152,7 +184,7 @@ pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
|
152
184
|
Для установки конкретного выпуска:
|
|
153
185
|
|
|
154
186
|
```bash
|
|
155
|
-
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.
|
|
187
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
156
188
|
```
|
|
157
189
|
|
|
158
190
|
Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
|
|
@@ -318,7 +350,7 @@ uv tool upgrade kaiten-cli
|
|
|
318
350
|
Установку можно закрепить на конкретном выпуске с помощью тега:
|
|
319
351
|
|
|
320
352
|
```bash
|
|
321
|
-
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.
|
|
353
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
322
354
|
```
|
|
323
355
|
|
|
324
356
|
При установке из Git CLI после успешной команды в интерактивном терминале
|
|
@@ -61,6 +61,35 @@ Yjs-режима заблокирован (`mutation_blocked`, код `6`). Дл
|
|
|
61
61
|
|
|
62
62
|
## Быстрый старт
|
|
63
63
|
|
|
64
|
+
### Установка через Homebrew
|
|
65
|
+
|
|
66
|
+
На macOS и Linux:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
brew install ViktorOgnev/tap/kaiten-cli
|
|
70
|
+
kaiten --locale ru --version
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Homebrew устанавливает Python, Node.js для Yjs и зависимости CLI в управляемое
|
|
74
|
+
окружение. Отдельно устанавливать pipx или uv не требуется. Формула находится в
|
|
75
|
+
[публичном tap](https://github.com/ViktorOgnev/homebrew-tap); пока она не входит
|
|
76
|
+
в основной каталог Homebrew.
|
|
77
|
+
|
|
78
|
+
Обновление:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
brew update
|
|
82
|
+
brew upgrade kaiten-cli
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
При переходе с pipx или uv сначала удалите прежнюю установку соответствующим
|
|
86
|
+
менеджером (`pipx uninstall kaiten-cli` или `uv tool uninstall kaiten-cli`).
|
|
87
|
+
Для pip используйте `python -m pip uninstall kaiten-cli` именно в прежнем
|
|
88
|
+
окружении. Эти команды не удаляют профили Kaiten. После установки проверьте
|
|
89
|
+
`command -v kaiten` и `type -a kaiten`: запускаемый файл должен принадлежать
|
|
90
|
+
Homebrew. При необходимости выполните `hash -r` или откройте новый терминал.
|
|
91
|
+
Обновляйте Homebrew-установку только через `brew upgrade`.
|
|
92
|
+
|
|
64
93
|
### Установка из PyPI
|
|
65
94
|
|
|
66
95
|
Требуется Python 3.11 или новее. Стабильные версии доступны в
|
|
@@ -107,7 +136,7 @@ pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
|
107
136
|
Для установки конкретного выпуска:
|
|
108
137
|
|
|
109
138
|
```bash
|
|
110
|
-
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.
|
|
139
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
111
140
|
```
|
|
112
141
|
|
|
113
142
|
Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
|
|
@@ -273,7 +302,7 @@ uv tool upgrade kaiten-cli
|
|
|
273
302
|
Установку можно закрепить на конкретном выпуске с помощью тега:
|
|
274
303
|
|
|
275
304
|
```bash
|
|
276
|
-
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.
|
|
305
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
277
306
|
```
|
|
278
307
|
|
|
279
308
|
При установке из Git CLI после успешной команды в интерактивном терминале
|
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
Обычный push в `master` и PR запускают CI без загрузки в PyPI.
|
|
5
5
|
Установка и ручное обновление описаны в [README](../README.md).
|
|
6
6
|
|
|
7
|
+
## Homebrew
|
|
8
|
+
|
|
9
|
+
С выпуска `0.3.5` проект распространяется под MIT; текст лицензии включён в
|
|
10
|
+
wheel и sdist. Homebrew использует тот же стабильный sdist из PyPI, без
|
|
11
|
+
переупаковки upstream.
|
|
12
|
+
|
|
13
|
+
Формула и её автоматизация находятся в
|
|
14
|
+
[`ViktorOgnev/homebrew-tap`](https://github.com/ViktorOgnev/homebrew-tap).
|
|
15
|
+
Tap проверяет PyPI каждые шесть часов и готовит PR для нового стабильного
|
|
16
|
+
выпуска. После успешных проверок PR сливается вручную. Для немедленного
|
|
17
|
+
обновления можно запустить workflow `Update formula` в tap с номером версии.
|
|
18
|
+
Повторная публикация в PyPI для этого не нужна. Ошибка tap не влияет на
|
|
19
|
+
публикацию пакета.
|
|
20
|
+
|
|
7
21
|
## Состоявшийся первый выпуск
|
|
8
22
|
|
|
9
23
|
`0.3.3` опубликована **2026-10-23**:
|
|
@@ -92,7 +106,7 @@ API-токен PyPI и repository secret для загрузки не нужны
|
|
|
92
106
|
- GET метаданных версии PyPI должен вернуть `404`. Существующая версия,
|
|
93
107
|
сетевой сбой, `403`, `429` или ошибка сервера останавливают публикацию.
|
|
94
108
|
- `checks` вызывает тот же CI на коммите тега: lint, форматирование, локализация,
|
|
95
|
-
документация, тесты Python 3.11–3.
|
|
109
|
+
документация, тесты Python 3.11–3.15, coverage и аудит зависимостей.
|
|
96
110
|
- Сборка создаёт ровно wheel и sdist; `twine check --strict` проверяет описание,
|
|
97
111
|
а `scripts/check_release.py artifacts` проверяет Name/Version обоих архивов
|
|
98
112
|
и выводит SHA256 в summary job сборки.
|
|
@@ -7,6 +7,8 @@ name = "kaiten-cli"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "LLM-oriented CLI for Kaiten"
|
|
9
9
|
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
10
12
|
requires-python = ">=3.11"
|
|
11
13
|
authors = [
|
|
12
14
|
{ name = "Viktor Ognev" },
|
|
@@ -22,6 +24,7 @@ classifiers = [
|
|
|
22
24
|
"Programming Language :: Python :: 3.12",
|
|
23
25
|
"Programming Language :: Python :: 3.13",
|
|
24
26
|
"Programming Language :: Python :: 3.14",
|
|
27
|
+
"Programming Language :: Python :: 3.15",
|
|
25
28
|
"Topic :: Utilities",
|
|
26
29
|
]
|
|
27
30
|
dependencies = [
|
|
@@ -68,6 +71,7 @@ include = [
|
|
|
68
71
|
"/src",
|
|
69
72
|
"/tests",
|
|
70
73
|
"/README.md",
|
|
74
|
+
"/LICENSE",
|
|
71
75
|
"/ARCHITECTURE.md",
|
|
72
76
|
"/AGENTS.md",
|
|
73
77
|
"/LIVE_VALIDATION.md",
|
|
@@ -83,6 +83,10 @@ def check_metadata(data: bytes, version: str, archive: Path) -> None:
|
|
|
83
83
|
raise ReleaseError(
|
|
84
84
|
f"Unexpected Name/Version in {archive.name}: expected {PACKAGE} {version}"
|
|
85
85
|
)
|
|
86
|
+
if metadata.get("License-Expression") != "MIT" or "LICENSE" not in metadata.get_all(
|
|
87
|
+
"License-File", []
|
|
88
|
+
):
|
|
89
|
+
raise ReleaseError(f"Missing MIT license metadata in {archive.name}")
|
|
86
90
|
|
|
87
91
|
|
|
88
92
|
def check_artifacts(dist: Path, version: str) -> list[Path]:
|
|
@@ -96,6 +100,9 @@ def check_artifacts(dist: Path, version: str) -> list[Path]:
|
|
|
96
100
|
if len(names) != 1:
|
|
97
101
|
raise ReleaseError("Expected exactly one wheel METADATA file")
|
|
98
102
|
check_metadata(wheel.read(names[0]), version, wheels[0])
|
|
103
|
+
license_path = names[0].removesuffix("METADATA") + "licenses/LICENSE"
|
|
104
|
+
if license_path not in wheel.namelist() or not wheel.read(license_path).strip():
|
|
105
|
+
raise ReleaseError("Missing wheel LICENSE text")
|
|
99
106
|
with tarfile.open(sdists[0], "r:gz") as sdist:
|
|
100
107
|
members = [
|
|
101
108
|
member
|
|
@@ -108,6 +115,9 @@ def check_artifacts(dist: Path, version: str) -> list[Path]:
|
|
|
108
115
|
assert stream is not None
|
|
109
116
|
with stream:
|
|
110
117
|
check_metadata(stream.read(), version, sdists[0])
|
|
118
|
+
license_member = sdist.getmember(members[0].name.rsplit("/", 1)[0] + "/LICENSE")
|
|
119
|
+
if not license_member.isfile() or license_member.size == 0:
|
|
120
|
+
raise ReleaseError("Missing sdist LICENSE text")
|
|
111
121
|
return files
|
|
112
122
|
|
|
113
123
|
|
|
@@ -128,17 +128,34 @@ def test_network_failure_never_allows_publishing(monkeypatch, error):
|
|
|
128
128
|
release.check_unpublished("0.3.3")
|
|
129
129
|
|
|
130
130
|
|
|
131
|
-
def make_archives(
|
|
131
|
+
def make_archives(
|
|
132
|
+
root,
|
|
133
|
+
*,
|
|
134
|
+
wheel_version="0.3.3",
|
|
135
|
+
sdist_version="0.3.3",
|
|
136
|
+
name="kaiten-cli",
|
|
137
|
+
license_text=True,
|
|
138
|
+
license_metadata=True,
|
|
139
|
+
):
|
|
132
140
|
root.mkdir(exist_ok=True)
|
|
141
|
+
licensing = "License-Expression: MIT\nLicense-File: LICENSE\n" if license_metadata else ""
|
|
133
142
|
with zipfile.ZipFile(root / "kaiten_cli-0.3.3-py3-none-any.whl", "w") as wheel:
|
|
134
143
|
wheel.writestr(
|
|
135
|
-
"kaiten_cli-0.3.3.dist-info/METADATA",
|
|
144
|
+
"kaiten_cli-0.3.3.dist-info/METADATA",
|
|
145
|
+
f"Name: {name}\nVersion: {wheel_version}\n{licensing}",
|
|
136
146
|
)
|
|
147
|
+
if license_text:
|
|
148
|
+
wheel.writestr("kaiten_cli-0.3.3.dist-info/licenses/LICENSE", "MIT License\n")
|
|
137
149
|
with tarfile.open(root / "kaiten_cli-0.3.3.tar.gz", "w:gz") as sdist:
|
|
138
|
-
data = f"Name: {name}\nVersion: {sdist_version}\n".encode()
|
|
150
|
+
data = f"Name: {name}\nVersion: {sdist_version}\n{licensing}".encode()
|
|
139
151
|
member = tarfile.TarInfo("kaiten_cli-0.3.3/PKG-INFO")
|
|
140
152
|
member.size = len(data)
|
|
141
153
|
sdist.addfile(member, io.BytesIO(data))
|
|
154
|
+
if license_text:
|
|
155
|
+
data = b"MIT License\n"
|
|
156
|
+
member = tarfile.TarInfo("kaiten_cli-0.3.3/LICENSE")
|
|
157
|
+
member.size = len(data)
|
|
158
|
+
sdist.addfile(member, io.BytesIO(data))
|
|
142
159
|
|
|
143
160
|
|
|
144
161
|
def test_matching_archives(tmp_path):
|
|
@@ -146,6 +163,13 @@ def test_matching_archives(tmp_path):
|
|
|
146
163
|
assert len(release.check_artifacts(tmp_path, "0.3.3")) == 2
|
|
147
164
|
|
|
148
165
|
|
|
166
|
+
@pytest.mark.parametrize("changes", [{"license_text": False}, {"license_metadata": False}])
|
|
167
|
+
def test_missing_license_blocks_release(tmp_path, changes):
|
|
168
|
+
make_archives(tmp_path, **changes)
|
|
169
|
+
with pytest.raises(release.ReleaseError, match="[Ll][Ii][Cc][Ee][Nn][Ss][Ee]"):
|
|
170
|
+
release.check_artifacts(tmp_path, "0.3.3")
|
|
171
|
+
|
|
172
|
+
|
|
149
173
|
@pytest.mark.parametrize(
|
|
150
174
|
"changes",
|
|
151
175
|
[{"wheel_version": "0.3.2"}, {"sdist_version": "0.3.2"}, {"name": "another-package"}],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|