kaiten-cli 0.3.3__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.3 → kaiten_cli-0.3.5}/.gitignore +1 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/AGENTS.md +5 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/API_BEHAVIOR_MATRIX.md +10 -3
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/ARCHITECTURE.md +26 -1
- kaiten_cli-0.3.5/LICENSE +21 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/LIVE_VALIDATION.md +9 -5
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/PKG-INFO +115 -23
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/README.md +111 -22
- kaiten_cli-0.3.5/docs/DOCUMENT_YJS_VERIFICATION.md +199 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/LOCALIZATION_VERIFICATION.md +4 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/PYPI_PUBLISHING.md +62 -22
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/RESTRICTIONS_VERIFICATION.md +4 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/public-api/README.md +5 -1
- kaiten_cli-0.3.5/js/document-yjs/README.md +51 -0
- kaiten_cli-0.3.5/js/document-yjs/build.mjs +25 -0
- kaiten_cli-0.3.5/js/document-yjs/cli.mjs +30 -0
- kaiten_cli-0.3.5/js/document-yjs/core.mjs +171 -0
- kaiten_cli-0.3.5/js/document-yjs/export-schemas.cjs +37 -0
- kaiten_cli-0.3.5/js/document-yjs/package-lock.json +957 -0
- kaiten_cli-0.3.5/js/document-yjs/package.json +19 -0
- kaiten_cli-0.3.5/js/document-yjs/schemas.json +1 -0
- kaiten_cli-0.3.5/js/document-yjs/test/live-holder.mjs +64 -0
- kaiten_cli-0.3.5/js/document-yjs/test/sync.test.mjs +221 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/pyproject.toml +5 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/check_locales.py +1 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/check_release.py +10 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/skills/kaiten-cli-mutations/SKILL.md +17 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/__init__.py +1 -1
- kaiten_cli-0.3.5/src/kaiten_cli/assets/document_yjs.cjs +16 -0
- kaiten_cli-0.3.5/src/kaiten_cli/assets/document_yjs.cjs.LEGAL.txt +15 -0
- kaiten_cli-0.3.5/src/kaiten_cli/assets/document_yjs.cjs.LICENSES.txt +323 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/locales/ru.json +27 -1
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/documents.py +35 -4
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/behaviors.py +4 -1
- kaiten_cli-0.3.5/src/kaiten_cli/runtime/support/document_sync.py +252 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/documents.py +36 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/trace.py +3 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/live/test_sandbox_live_full.py +1 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_cli_smoke.py +2 -2
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_docs_structure.py +3 -1
- kaiten_cli-0.3.5/tests/test_document_sync.py +444 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_documents_and_tree.py +1 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_release.py +27 -3
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/SECURITY.md +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/public-api/automation-tables.json +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/public-api/contracts.json +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/public-api/coverage.json +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/docs/public-api/decisions.json +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/audit_public_api.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/benchmark_reference_workflows.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/extract_automation_docs.cjs +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/generate_reference_docs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/scripts/normalize_automation_docs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/skills/kaiten-cli-heavy-data/SKILL.md +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/skills/kaiten-cli-metrics/SKILL.md +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/__main__.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/agent_gateway.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/app.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/completion.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/discovery.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/errors.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/i18n.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/localized_click.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/models.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/profiles.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/__init__.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/addons.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/audit_and_analytics.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schema.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schemas.json +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automations.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/base.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/blockers.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/boards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_relations.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_types.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/cards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/charts.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/checklists.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/columns.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/comments.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_directories.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_properties.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/dashboards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/external_links.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/files.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/github_addon.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/iterations.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/lanes.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/live_contracts.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/members.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/module_docs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/projects.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/query.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/restrictions.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/roles_and_groups.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/scim.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/service_desk.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/snapshot.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/spaces.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/subscribers.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tags.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/time_logs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tree.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/utilities.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/webhooks.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/__init__.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/automation_validation.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/cache.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/client.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/endpoints.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/executor.py +1 -1
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/fs_security.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/input.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/output.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/public_validation.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_build.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_common.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_query.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_store.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshots.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/sqlite_errors.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/__init__.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/addons.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/audit.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/batch.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/card_move_url.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/cards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/checklists.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/company_users.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/dashboards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/files.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/markdown_export.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/pagination.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/projects.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/relations.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/restrictions.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/spaces.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/time_logs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree_sharing.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/transforms.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/schema_docs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/src/kaiten_cli/update_check.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/conftest.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/data/mcp_aliases.txt +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/live/conftest.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/live/test_automation_contract.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/live/test_restrictions_live.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_addons_and_github_addon.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_agent_gateway.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_audit_and_analytics.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_automation_schemas.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_card_types_and_custom_properties.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_cards_move_by_url.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_charts.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_column_settings.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_command_resolution.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_completion_tail.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_dashboards.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_developer_parity_gaps.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_discovery.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_domain_expansion.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_entrypoints.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_executor_architecture.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_executor_http.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_file_downloads.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_file_uploads.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_fs_security.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_generated_docs.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_input_parsing.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_investigation_workflows.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_iterations.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_live_contracts.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_local_snapshots.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_localization.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_markdown_export.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_narrow_list_fields.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_output_human.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_output_json.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_pagination.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_private_files.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_profiles.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_public_api_cutover.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_public_contract_parity.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_public_input_transport.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_rate_limit_policy.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_registry_examples.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_restrictions.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_roles_groups_and_subscribers.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_runtime_cache.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_service_desk.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_shell_completion.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_skills_structure.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_timeout_policy.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_transforms.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_tree_entity_sharing.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_update_check.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_utilities_remainder.py +0 -0
- {kaiten_cli-0.3.3 → kaiten_cli-0.3.5}/tests/test_webhooks_and_automations.py +0 -0
|
@@ -5,6 +5,10 @@ This file only captures agent-specific guidance.
|
|
|
5
5
|
For install, human-oriented usage, and the full docs map, start with [README.md](README.md).
|
|
6
6
|
For the full command catalog, use [COMMAND_REFERENCE.md](COMMAND_REFERENCE.md).
|
|
7
7
|
For the system map, use [ARCHITECTURE.md](ARCHITECTURE.md).
|
|
8
|
+
For the PyPI publishing process, use [docs/PYPI_PUBLISHING.md](docs/PYPI_PUBLISHING.md).
|
|
9
|
+
For a stable install, start with `pip install kaiten-cli`; pipx and uv are alternatives.
|
|
10
|
+
Use a Git install when the requested source is a branch or tag. Check the installed
|
|
11
|
+
version separately from the checkout: they can differ.
|
|
8
12
|
For optimized LLM workflows, start with:
|
|
9
13
|
|
|
10
14
|
- [skills/kaiten-cli-heavy-data/SKILL.md](skills/kaiten-cli-heavy-data/SKILL.md)
|
|
@@ -95,3 +99,4 @@ kaiten profile add main --domain <company-subdomain-or-url> --token <api-token>
|
|
|
95
99
|
- Attaching a PR to a card usually means the GitHub addon, not `external-links create`; check both sources when looking for every PR a card references.
|
|
96
100
|
- The GitHub addon UUID is derived from its mount path only on on-premises Kaiten; elsewhere it is random. `addons uid` returns the derived guess, `space-addons list` and `company-addons list` return the real one, and the `github-addon` commands re-resolve it from the card's space when the guess finds no data.
|
|
97
101
|
- Live validation is opt-in and documented in [LIVE_VALIDATION.md](LIVE_VALIDATION.md).
|
|
102
|
+
- For installations without the verified server-side API fix, document content updates should use the explicitly selected temporary compatibility fallback `documents update --content-mode yjs` (requires an existing Node.js 20+). It is a future removal candidate, not deprecated; see the retirement criteria in `docs/DOCUMENT_YJS_VERIFICATION.md`. API replacement of `data`/`text` is blocked without `--allow-unsafe-content-replace` because synchronization with an open editor may duplicate the entire document. Never treat this flag as an automatic fallback after a failed Yjs update; an unacknowledged write may already have been saved.
|
|
@@ -8,18 +8,25 @@
|
|
|
8
8
|
|
|
9
9
|
| Поле | Значение |
|
|
10
10
|
|------|----------|
|
|
11
|
-
|
|
|
11
|
+
| Исторический contract baseline | `kaiten-cli v0.1.23` |
|
|
12
12
|
| Tenant class | Kaiten sandbox test tenant |
|
|
13
|
-
|
|
|
13
|
+
| Последний зафиксированный аудит | `2026-07-09`; live suite **не запускался** |
|
|
14
14
|
| Последняя полная live campaign | `TBD`: дата и commit не подтверждены в репозитории |
|
|
15
|
-
| Источник до следующего live run | checked-in contracts и `tests/live/`; записи ниже
|
|
15
|
+
| Источник до следующего live run | checked-in contracts и `tests/live/`; записи ниже не являются свежей live-проверкой текущего выпуска |
|
|
16
16
|
|
|
17
17
|
После следующей полной live campaign эту таблицу нужно обновить точными датой, commit SHA, версией CLI и tenant class. Secrets, tenant URL и идентификаторы тестовых сущностей сюда не записываются.
|
|
18
18
|
|
|
19
|
+
Публикация новой версии CLI и успешный offline CI не меняют дату или статус
|
|
20
|
+
исторической live-проверки. Текущий command surface задаёт реестр CLI.
|
|
21
|
+
|
|
19
22
|
## Default rule
|
|
20
23
|
|
|
21
24
|
Все canonical команды из registry, которые не перечислены ниже, считаются `live_passed`: они должны проходить по normal success-path в полном live suite.
|
|
22
25
|
|
|
26
|
+
Это правило интерпретации закодированной матрицы и ожидаемого success-path,
|
|
27
|
+
а не свидетельство нового прогона каждой команды. Для добавленных позднее команд
|
|
28
|
+
сохраняется явный статус `live_not_validated` до фактической live-проверки.
|
|
29
|
+
|
|
23
30
|
## Validated success-path contracts with special notes
|
|
24
31
|
|
|
25
32
|
| Command | Verb / Path | Status | Notes |
|
|
@@ -111,6 +111,30 @@ Git URL, and installer commands are passed directly to `subprocess` without a
|
|
|
111
111
|
shell. A confirmed update is a separate local side effect and does not alter the
|
|
112
112
|
already completed Kaiten command.
|
|
113
113
|
|
|
114
|
+
PyPI installations do not use this post-command check. They are updated manually
|
|
115
|
+
through the same installer: pip, pipx, or uv. Git installations retain their Git
|
|
116
|
+
source; the updater does not migrate them to PyPI.
|
|
117
|
+
|
|
118
|
+
## Packaging and Releases
|
|
119
|
+
|
|
120
|
+
Hatchling builds the Python 3.11+ wheel and sdist from `pyproject.toml`; the package
|
|
121
|
+
version comes from `src/kaiten_cli/__init__.py`. Stable installations use PyPI;
|
|
122
|
+
Git installations can follow a branch or a specific tag.
|
|
123
|
+
|
|
124
|
+
Pushing a stable `vX.Y.Z` tag runs release preflight, the full reusable CI and then
|
|
125
|
+
the PyPI upload. Preflight checks the tag/version, triggering commit, ancestry in
|
|
126
|
+
`origin/master` and absence of the version on PyPI. CI checks both archives and
|
|
127
|
+
their installation; the upload job publishes those same artifacts without a rebuild.
|
|
128
|
+
PRs and ordinary `master` pushes run CI without uploading.
|
|
129
|
+
|
|
130
|
+
The upload uses Trusted Publishing through the GitHub environment `pypi`, which
|
|
131
|
+
allows only tags matching `v*`. Only the upload job has `id-token: write`; no
|
|
132
|
+
long-lived PyPI API token is stored in the repository. See the
|
|
133
|
+
[publishing guide](docs/PYPI_PUBLISHING.md) for setup, release and readback steps.
|
|
134
|
+
|
|
135
|
+
The PyPI project description is packaged from README at build time. Updating the
|
|
136
|
+
repository docs does not replace metadata in an already published release.
|
|
137
|
+
|
|
114
138
|
## Mutation Safety
|
|
115
139
|
|
|
116
140
|
- Transport retries are limited to safe HTTP methods. An ambiguous timeout, connection failure, HTTP 5xx, or malformed successful response for a remote mutation is returned without retry and explicitly tells the caller to verify remote state.
|
|
@@ -164,6 +188,7 @@ Primary docs:
|
|
|
164
188
|
- [README.md](README.md) for install, usage, config, and operator guidance
|
|
165
189
|
- [COMMAND_REFERENCE.md](COMMAND_REFERENCE.md) for the full generated command catalog
|
|
166
190
|
- [AGENTS.md](AGENTS.md) for agent-specific usage and safety shortcuts
|
|
191
|
+
- [docs/PYPI_PUBLISHING.md](docs/PYPI_PUBLISHING.md) for PyPI setup, release and verification
|
|
167
192
|
- `skills/` for repo-local LLM workflows in `SKILL.md` format
|
|
168
193
|
- [LIVE_VALIDATION.md](LIVE_VALIDATION.md) for live test process
|
|
169
194
|
- [API_BEHAVIOR_MATRIX.md](API_BEHAVIOR_MATRIX.md) for documented sandbox contracts
|
|
@@ -175,7 +200,7 @@ Primary docs:
|
|
|
175
200
|
|
|
176
201
|
- The manual registry is easy to inspect, but large and maintenance-heavy.
|
|
177
202
|
- Runtime behaviors are now explicit, but still centralized in one behavior module.
|
|
178
|
-
- Request-scoped cache is built in
|
|
203
|
+
- Request-scoped cache is built in; persistent cache defaults to `auto` with adaptive TTLs. Freshness overrides remain explicit.
|
|
179
204
|
- Snapshot refresh is still rebuild-oriented in v1; there is no incremental sync yet.
|
|
180
205
|
- Local metric semantics are still generic; tenant-specific flow profiles are intentionally deferred.
|
|
181
206
|
- The default local card path is intentionally summary-first to reduce token and payload cost before LLM involvement.
|
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.
|
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
## Статус проверки
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
9
|
+
- В последнем зафиксированном аудите от `2026-07-09` live suite **не запускался**.
|
|
10
|
+
- Исторический contract baseline — `kaiten-cli v0.1.23`; tenant class ранее зафиксированных контрактов — Kaiten sandbox test tenant.
|
|
11
11
|
- Дата и commit последней полной live campaign не подтверждены в репозитории и остаются `TBD`.
|
|
12
12
|
- До нового запуска [API_BEHAVIOR_MATRIX.md](API_BEHAVIOR_MATRIX.md) описывает ранее наблюдавшиеся и закодированные контракты, а не свежую проверку production или sandbox API.
|
|
13
13
|
|
|
14
|
+
Версия baseline и дата аудита относятся к истории live-проверок, а не к текущему
|
|
15
|
+
выпуску CLI. Успешный CI и публикация пакета в PyPI не обновляют эти свидетельства.
|
|
16
|
+
|
|
14
17
|
После каждой полной campaign нужно записать в оба документа дату, commit SHA, версию CLI и tenant class, не сохраняя credentials, tenant URL и идентификаторы временных сущностей.
|
|
15
18
|
|
|
16
19
|
## Ограничения пространства
|
|
@@ -108,11 +111,12 @@ Harness делает следующее:
|
|
|
108
111
|
- если live API отвечает `405`, CLI делает `GET /projects/{project_id}?with_cards_data=true`
|
|
109
112
|
- затем извлекает embedded cards list из project payload
|
|
110
113
|
- `checklists.list`
|
|
111
|
-
- direct `GET /cards/{card_id}/checklists`
|
|
114
|
+
- direct `GET /cards/{card_id}/checklists` ранее возвращал `405` на проверенном tenant
|
|
112
115
|
- CLI делает `GET /cards/{card_id}` и извлекает embedded `checklists`
|
|
113
116
|
- `checklist-items.list`
|
|
114
|
-
- direct `GET /cards/{card_id}/checklists/{checklist_id}/items`
|
|
115
|
-
- CLI делает `GET /cards/{card_id}` и извлекает `items` из
|
|
117
|
+
- direct `GET /cards/{card_id}/checklists/{checklist_id}/items` ранее возвращал `405` на проверенных экземплярах
|
|
118
|
+
- CLI делает `GET /cards/{card_id}/checklists/{checklist_id}` и извлекает `items` из отдельного чеклиста
|
|
119
|
+
- ошибки API, включая отсутствие чеклиста, сохраняются; чтения всей карточки как fallback нет
|
|
116
120
|
|
|
117
121
|
## Expected-error contracts
|
|
118
122
|
|
|
@@ -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
|
|
@@ -55,50 +58,137 @@ Description-Content-Type: text/markdown
|
|
|
55
58
|
|
|
56
59
|
Источник истины для CLI — локальный реестр `src/kaiten_cli/registry/`.
|
|
57
60
|
|
|
61
|
+
## Обновление содержимого документов
|
|
62
|
+
|
|
63
|
+
**Временный резервный механизм совместимости.** Режим `--content-mode yjs`
|
|
64
|
+
предназначен для установок, где исправленный серверный API ещё не выпущен или
|
|
65
|
+
не включён. Он сохраняет историю совместного редактирования и остаётся нужен
|
|
66
|
+
для поддержки старых облачных и on-premise установок.
|
|
67
|
+
|
|
68
|
+
Этот fallback выбирается только явно; CLI не переключается на него автоматически
|
|
69
|
+
при ошибках API. Механизм — кандидат на последующее удаление, но пока не объявлен
|
|
70
|
+
deprecated и даты удаления нет.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
kaiten --locale ru --json --profile main documents update \
|
|
74
|
+
--document-uid <uid> --content-mode yjs --data @document.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Можно передать `--text` вместо `--data`. В этом режиме метаданные, например
|
|
78
|
+
`--title`, обновляются отдельной командой. Если Socket.IO работает на отдельном
|
|
79
|
+
сервере, укажите его origin через `--socket-url https://socket.example.com`.
|
|
80
|
+
По умолчанию используется origin выбранного профиля, путь Socket.IO — `/socket.io`.
|
|
81
|
+
Режим использует внутренний протокол Kaiten, а не гарантированный Public API;
|
|
82
|
+
совместимость конкретной установки требует проверки на тестовом документе.
|
|
83
|
+
|
|
84
|
+
Для Yjs нужен заранее установленный **Node.js 20+**. JavaScript-помощник,
|
|
85
|
+
библиотеки и схемы документов уже входят в пакет CLI. CLI не устанавливает Node,
|
|
86
|
+
не запускает npm и не скачивает зависимости. Без Node остальные команды работают;
|
|
87
|
+
Yjs-обновление завершится до записи с `config_error` и кодом выхода `3`.
|
|
88
|
+
|
|
89
|
+
**Полная API-запись может создать дубль всего документа при синхронизации
|
|
90
|
+
с открытым редактором.** Поэтому `documents update` с `data` или `text` без
|
|
91
|
+
Yjs-режима заблокирован (`mutation_blocked`, код `6`). Для осознанного разрешения
|
|
92
|
+
старого PATCH укажите `--allow-unsafe-content-replace`; предупреждение о риске
|
|
93
|
+
будет выведено в stderr, JSON в stdout сохранит прежний формат.
|
|
94
|
+
|
|
95
|
+
Автоматического перехода с Yjs на PATCH и автоматических повторов записи нет.
|
|
96
|
+
Успех Yjs означает подтверждение и проверку сохранённого состояния через повторную
|
|
97
|
+
синхронизацию. При обрыве после отправки CLI сообщает, что результат записи
|
|
98
|
+
неизвестен. При параллельных правках возможен конфликт проверки: CLI не
|
|
99
|
+
перезаписывает чужие изменения повторной попыткой. Результат Yjs содержит
|
|
100
|
+
`document_uid`, `content_mode`, `schema_version`, `data` и `status`
|
|
101
|
+
(`verified` или `unchanged`); это результат синхронизации, а не REST-снимок метаданных.
|
|
102
|
+
Сокетные попытки отражаются в `stats.document_sync` отдельно от HTTP-запросов.
|
|
103
|
+
|
|
104
|
+
Серверные исправления уже смержены, но это не подтверждает их rollout на конкретной
|
|
105
|
+
установке. Удалить резервный путь можно после проверки обычного PATCH с сохранением
|
|
106
|
+
старого состояния редактора, включения исправления на поддерживаемых установках
|
|
107
|
+
и пересмотра минимальной поддерживаемой версии сервера. Подробности и состав
|
|
108
|
+
удаляемого слоя — в [протоколе проверки](docs/DOCUMENT_YJS_VERIFICATION.md#temporary-fallback-and-retirement).
|
|
109
|
+
|
|
58
110
|
## Быстрый старт
|
|
59
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
|
+
|
|
60
141
|
### Установка из PyPI
|
|
61
142
|
|
|
62
|
-
Требуется Python 3.11 или новее.
|
|
63
|
-
|
|
143
|
+
Требуется Python 3.11 или новее. Стабильные версии доступны в
|
|
144
|
+
[PyPI](https://pypi.org/project/kaiten-cli/), начиная с выпуска `0.3.3`.
|
|
64
145
|
|
|
65
146
|
Рекомендуемый путь:
|
|
66
147
|
|
|
67
148
|
```bash
|
|
68
|
-
|
|
149
|
+
pip install kaiten-cli
|
|
69
150
|
```
|
|
70
151
|
|
|
71
|
-
|
|
152
|
+
Установка CLI в отдельное окружение через pipx:
|
|
72
153
|
|
|
73
154
|
```bash
|
|
74
155
|
pipx install kaiten-cli
|
|
75
156
|
```
|
|
76
157
|
|
|
77
|
-
|
|
158
|
+
Альтернатива через uv:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
uv tool install kaiten-cli
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Для установки через pip можно предварительно создать и активировать виртуальное
|
|
165
|
+
окружение. На macOS и Linux:
|
|
78
166
|
|
|
79
167
|
```bash
|
|
80
168
|
python3 -m venv .venv
|
|
81
|
-
.venv/bin/
|
|
169
|
+
source .venv/bin/activate
|
|
170
|
+
pip install kaiten-cli
|
|
82
171
|
```
|
|
83
172
|
|
|
84
|
-
В
|
|
173
|
+
В Windows PowerShell окружение активируется командой `.\.venv\Scripts\Activate.ps1`.
|
|
85
174
|
|
|
86
175
|
### Установка из Git
|
|
87
176
|
|
|
88
|
-
Для установки текущего состояния
|
|
177
|
+
PyPI устанавливает опубликованный выпуск. Для установки текущего состояния
|
|
178
|
+
`master`, которое может содержать ещё не выпущенные изменения, используйте Git:
|
|
89
179
|
|
|
90
180
|
```bash
|
|
91
|
-
|
|
181
|
+
pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
92
182
|
```
|
|
93
183
|
|
|
94
184
|
Для установки конкретного выпуска:
|
|
95
185
|
|
|
96
186
|
```bash
|
|
97
|
-
|
|
187
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
98
188
|
```
|
|
99
189
|
|
|
100
|
-
Вместо `
|
|
101
|
-
`python -m pip install
|
|
190
|
+
Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
|
|
191
|
+
Чтобы выбрать конкретный Python для pip, используйте `python -m pip install`.
|
|
102
192
|
|
|
103
193
|
### Проверка установки
|
|
104
194
|
|
|
@@ -239,39 +329,41 @@ PowerShell необходимо использовать отдельную ру
|
|
|
239
329
|
Для установки из PyPI обновление выполняется вручную тем же менеджером:
|
|
240
330
|
|
|
241
331
|
```bash
|
|
242
|
-
uv tool upgrade kaiten-cli
|
|
243
|
-
pipx upgrade kaiten-cli
|
|
244
332
|
python -m pip install --upgrade kaiten-cli
|
|
333
|
+
pipx upgrade kaiten-cli
|
|
334
|
+
uv tool upgrade kaiten-cli
|
|
245
335
|
```
|
|
246
336
|
|
|
247
337
|
Выберите команду своего менеджера; для pip используйте Python того окружения,
|
|
248
338
|
куда установлен пакет. Встроенное предложение обновиться для установок из PyPI
|
|
249
339
|
пока не поддерживается.
|
|
250
340
|
|
|
251
|
-
|
|
341
|
+
Для установки из Git-ветки `master` обновление выполняется вручную:
|
|
252
342
|
|
|
253
343
|
```bash
|
|
254
|
-
|
|
344
|
+
python -m pip install --upgrade git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
255
345
|
pipx upgrade kaiten-cli
|
|
346
|
+
uv tool upgrade kaiten-cli
|
|
256
347
|
```
|
|
257
348
|
|
|
258
349
|
Установка из Git без тега использует текущую версию из ветки `master`.
|
|
259
350
|
Установку можно закрепить на конкретном выпуске с помощью тега:
|
|
260
351
|
|
|
261
352
|
```bash
|
|
262
|
-
|
|
353
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
263
354
|
```
|
|
264
355
|
|
|
265
|
-
|
|
266
|
-
проверяет стабильные теги `vX.Y.Z` в том же
|
|
267
|
-
релиз, появляется вопрос `Update now ...? [y/N]`.
|
|
356
|
+
При установке из Git CLI после успешной команды в интерактивном терминале
|
|
357
|
+
не чаще одного раза в сутки проверяет стабильные теги `vX.Y.Z` в том же
|
|
358
|
+
Git-репозитории. Если найден новый релиз, появляется вопрос `Update now ...? [y/N]`.
|
|
359
|
+
Основная команда к этому
|
|
268
360
|
моменту уже завершена; подтверждённое обновление применяется со следующего запуска.
|
|
269
361
|
|
|
270
362
|
Способ обновления соответствует способу установки:
|
|
271
363
|
|
|
272
|
-
-
|
|
364
|
+
- виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`;
|
|
273
365
|
- `pipx` → `pipx upgrade kaiten-cli`;
|
|
274
|
-
-
|
|
366
|
+
- `uv tool` → `uv tool upgrade kaiten-cli`.
|
|
275
367
|
|
|
276
368
|
Для установки, закреплённой на `@vX.Y.Z`, подтверждение заменяет текущий тег на
|
|
277
369
|
новый с помощью того же менеджера. Проверка не запускается в режиме `--json`,
|
|
@@ -10,50 +10,137 @@
|
|
|
10
10
|
|
|
11
11
|
Источник истины для CLI — локальный реестр `src/kaiten_cli/registry/`.
|
|
12
12
|
|
|
13
|
+
## Обновление содержимого документов
|
|
14
|
+
|
|
15
|
+
**Временный резервный механизм совместимости.** Режим `--content-mode yjs`
|
|
16
|
+
предназначен для установок, где исправленный серверный API ещё не выпущен или
|
|
17
|
+
не включён. Он сохраняет историю совместного редактирования и остаётся нужен
|
|
18
|
+
для поддержки старых облачных и on-premise установок.
|
|
19
|
+
|
|
20
|
+
Этот fallback выбирается только явно; CLI не переключается на него автоматически
|
|
21
|
+
при ошибках API. Механизм — кандидат на последующее удаление, но пока не объявлен
|
|
22
|
+
deprecated и даты удаления нет.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
kaiten --locale ru --json --profile main documents update \
|
|
26
|
+
--document-uid <uid> --content-mode yjs --data @document.json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Можно передать `--text` вместо `--data`. В этом режиме метаданные, например
|
|
30
|
+
`--title`, обновляются отдельной командой. Если Socket.IO работает на отдельном
|
|
31
|
+
сервере, укажите его origin через `--socket-url https://socket.example.com`.
|
|
32
|
+
По умолчанию используется origin выбранного профиля, путь Socket.IO — `/socket.io`.
|
|
33
|
+
Режим использует внутренний протокол Kaiten, а не гарантированный Public API;
|
|
34
|
+
совместимость конкретной установки требует проверки на тестовом документе.
|
|
35
|
+
|
|
36
|
+
Для Yjs нужен заранее установленный **Node.js 20+**. JavaScript-помощник,
|
|
37
|
+
библиотеки и схемы документов уже входят в пакет CLI. CLI не устанавливает Node,
|
|
38
|
+
не запускает npm и не скачивает зависимости. Без Node остальные команды работают;
|
|
39
|
+
Yjs-обновление завершится до записи с `config_error` и кодом выхода `3`.
|
|
40
|
+
|
|
41
|
+
**Полная API-запись может создать дубль всего документа при синхронизации
|
|
42
|
+
с открытым редактором.** Поэтому `documents update` с `data` или `text` без
|
|
43
|
+
Yjs-режима заблокирован (`mutation_blocked`, код `6`). Для осознанного разрешения
|
|
44
|
+
старого PATCH укажите `--allow-unsafe-content-replace`; предупреждение о риске
|
|
45
|
+
будет выведено в stderr, JSON в stdout сохранит прежний формат.
|
|
46
|
+
|
|
47
|
+
Автоматического перехода с Yjs на PATCH и автоматических повторов записи нет.
|
|
48
|
+
Успех Yjs означает подтверждение и проверку сохранённого состояния через повторную
|
|
49
|
+
синхронизацию. При обрыве после отправки CLI сообщает, что результат записи
|
|
50
|
+
неизвестен. При параллельных правках возможен конфликт проверки: CLI не
|
|
51
|
+
перезаписывает чужие изменения повторной попыткой. Результат Yjs содержит
|
|
52
|
+
`document_uid`, `content_mode`, `schema_version`, `data` и `status`
|
|
53
|
+
(`verified` или `unchanged`); это результат синхронизации, а не REST-снимок метаданных.
|
|
54
|
+
Сокетные попытки отражаются в `stats.document_sync` отдельно от HTTP-запросов.
|
|
55
|
+
|
|
56
|
+
Серверные исправления уже смержены, но это не подтверждает их rollout на конкретной
|
|
57
|
+
установке. Удалить резервный путь можно после проверки обычного PATCH с сохранением
|
|
58
|
+
старого состояния редактора, включения исправления на поддерживаемых установках
|
|
59
|
+
и пересмотра минимальной поддерживаемой версии сервера. Подробности и состав
|
|
60
|
+
удаляемого слоя — в [протоколе проверки](docs/DOCUMENT_YJS_VERIFICATION.md#temporary-fallback-and-retirement).
|
|
61
|
+
|
|
13
62
|
## Быстрый старт
|
|
14
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
|
+
|
|
15
93
|
### Установка из PyPI
|
|
16
94
|
|
|
17
|
-
Требуется Python 3.11 или новее.
|
|
18
|
-
|
|
95
|
+
Требуется Python 3.11 или новее. Стабильные версии доступны в
|
|
96
|
+
[PyPI](https://pypi.org/project/kaiten-cli/), начиная с выпуска `0.3.3`.
|
|
19
97
|
|
|
20
98
|
Рекомендуемый путь:
|
|
21
99
|
|
|
22
100
|
```bash
|
|
23
|
-
|
|
101
|
+
pip install kaiten-cli
|
|
24
102
|
```
|
|
25
103
|
|
|
26
|
-
|
|
104
|
+
Установка CLI в отдельное окружение через pipx:
|
|
27
105
|
|
|
28
106
|
```bash
|
|
29
107
|
pipx install kaiten-cli
|
|
30
108
|
```
|
|
31
109
|
|
|
32
|
-
|
|
110
|
+
Альтернатива через uv:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
uv tool install kaiten-cli
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Для установки через pip можно предварительно создать и активировать виртуальное
|
|
117
|
+
окружение. На macOS и Linux:
|
|
33
118
|
|
|
34
119
|
```bash
|
|
35
120
|
python3 -m venv .venv
|
|
36
|
-
.venv/bin/
|
|
121
|
+
source .venv/bin/activate
|
|
122
|
+
pip install kaiten-cli
|
|
37
123
|
```
|
|
38
124
|
|
|
39
|
-
В
|
|
125
|
+
В Windows PowerShell окружение активируется командой `.\.venv\Scripts\Activate.ps1`.
|
|
40
126
|
|
|
41
127
|
### Установка из Git
|
|
42
128
|
|
|
43
|
-
Для установки текущего состояния
|
|
129
|
+
PyPI устанавливает опубликованный выпуск. Для установки текущего состояния
|
|
130
|
+
`master`, которое может содержать ещё не выпущенные изменения, используйте Git:
|
|
44
131
|
|
|
45
132
|
```bash
|
|
46
|
-
|
|
133
|
+
pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
47
134
|
```
|
|
48
135
|
|
|
49
136
|
Для установки конкретного выпуска:
|
|
50
137
|
|
|
51
138
|
```bash
|
|
52
|
-
|
|
139
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
53
140
|
```
|
|
54
141
|
|
|
55
|
-
Вместо `
|
|
56
|
-
`python -m pip install
|
|
142
|
+
Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
|
|
143
|
+
Чтобы выбрать конкретный Python для pip, используйте `python -m pip install`.
|
|
57
144
|
|
|
58
145
|
### Проверка установки
|
|
59
146
|
|
|
@@ -194,39 +281,41 @@ PowerShell необходимо использовать отдельную ру
|
|
|
194
281
|
Для установки из PyPI обновление выполняется вручную тем же менеджером:
|
|
195
282
|
|
|
196
283
|
```bash
|
|
197
|
-
uv tool upgrade kaiten-cli
|
|
198
|
-
pipx upgrade kaiten-cli
|
|
199
284
|
python -m pip install --upgrade kaiten-cli
|
|
285
|
+
pipx upgrade kaiten-cli
|
|
286
|
+
uv tool upgrade kaiten-cli
|
|
200
287
|
```
|
|
201
288
|
|
|
202
289
|
Выберите команду своего менеджера; для pip используйте Python того окружения,
|
|
203
290
|
куда установлен пакет. Встроенное предложение обновиться для установок из PyPI
|
|
204
291
|
пока не поддерживается.
|
|
205
292
|
|
|
206
|
-
|
|
293
|
+
Для установки из Git-ветки `master` обновление выполняется вручную:
|
|
207
294
|
|
|
208
295
|
```bash
|
|
209
|
-
|
|
296
|
+
python -m pip install --upgrade git+https://github.com/ViktorOgnev/kaiten-cli.git
|
|
210
297
|
pipx upgrade kaiten-cli
|
|
298
|
+
uv tool upgrade kaiten-cli
|
|
211
299
|
```
|
|
212
300
|
|
|
213
301
|
Установка из Git без тега использует текущую версию из ветки `master`.
|
|
214
302
|
Установку можно закрепить на конкретном выпуске с помощью тега:
|
|
215
303
|
|
|
216
304
|
```bash
|
|
217
|
-
|
|
305
|
+
pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.5"
|
|
218
306
|
```
|
|
219
307
|
|
|
220
|
-
|
|
221
|
-
проверяет стабильные теги `vX.Y.Z` в том же
|
|
222
|
-
релиз, появляется вопрос `Update now ...? [y/N]`.
|
|
308
|
+
При установке из Git CLI после успешной команды в интерактивном терминале
|
|
309
|
+
не чаще одного раза в сутки проверяет стабильные теги `vX.Y.Z` в том же
|
|
310
|
+
Git-репозитории. Если найден новый релиз, появляется вопрос `Update now ...? [y/N]`.
|
|
311
|
+
Основная команда к этому
|
|
223
312
|
моменту уже завершена; подтверждённое обновление применяется со следующего запуска.
|
|
224
313
|
|
|
225
314
|
Способ обновления соответствует способу установки:
|
|
226
315
|
|
|
227
|
-
-
|
|
316
|
+
- виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`;
|
|
228
317
|
- `pipx` → `pipx upgrade kaiten-cli`;
|
|
229
|
-
-
|
|
318
|
+
- `uv tool` → `uv tool upgrade kaiten-cli`.
|
|
230
319
|
|
|
231
320
|
Для установки, закреплённой на `@vX.Y.Z`, подтверждение заменяет текущий тег на
|
|
232
321
|
новый с помощью того же менеджера. Проверка не запускается в режиме `--json`,
|