kaiten-cli 0.3.3__tar.gz → 0.3.4__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.
Files changed (199) hide show
  1. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/.gitignore +1 -0
  2. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/AGENTS.md +5 -0
  3. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/API_BEHAVIOR_MATRIX.md +10 -3
  4. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/ARCHITECTURE.md +26 -1
  5. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/LIVE_VALIDATION.md +9 -5
  6. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/PKG-INFO +83 -23
  7. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/README.md +82 -22
  8. kaiten_cli-0.3.4/docs/DOCUMENT_YJS_VERIFICATION.md +199 -0
  9. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/LOCALIZATION_VERIFICATION.md +4 -0
  10. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/PYPI_PUBLISHING.md +47 -21
  11. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/RESTRICTIONS_VERIFICATION.md +4 -0
  12. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/public-api/README.md +5 -1
  13. kaiten_cli-0.3.4/js/document-yjs/README.md +51 -0
  14. kaiten_cli-0.3.4/js/document-yjs/build.mjs +25 -0
  15. kaiten_cli-0.3.4/js/document-yjs/cli.mjs +30 -0
  16. kaiten_cli-0.3.4/js/document-yjs/core.mjs +171 -0
  17. kaiten_cli-0.3.4/js/document-yjs/export-schemas.cjs +37 -0
  18. kaiten_cli-0.3.4/js/document-yjs/package-lock.json +957 -0
  19. kaiten_cli-0.3.4/js/document-yjs/package.json +19 -0
  20. kaiten_cli-0.3.4/js/document-yjs/schemas.json +1 -0
  21. kaiten_cli-0.3.4/js/document-yjs/test/live-holder.mjs +64 -0
  22. kaiten_cli-0.3.4/js/document-yjs/test/sync.test.mjs +221 -0
  23. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/pyproject.toml +1 -0
  24. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/check_locales.py +1 -0
  25. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/skills/kaiten-cli-mutations/SKILL.md +17 -0
  26. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/__init__.py +1 -1
  27. kaiten_cli-0.3.4/src/kaiten_cli/assets/document_yjs.cjs +16 -0
  28. kaiten_cli-0.3.4/src/kaiten_cli/assets/document_yjs.cjs.LEGAL.txt +15 -0
  29. kaiten_cli-0.3.4/src/kaiten_cli/assets/document_yjs.cjs.LICENSES.txt +323 -0
  30. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/locales/ru.json +27 -1
  31. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/documents.py +35 -4
  32. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/behaviors.py +4 -1
  33. kaiten_cli-0.3.4/src/kaiten_cli/runtime/support/document_sync.py +252 -0
  34. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/documents.py +36 -0
  35. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/trace.py +3 -0
  36. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/live/test_sandbox_live_full.py +1 -0
  37. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_cli_smoke.py +2 -2
  38. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_docs_structure.py +3 -1
  39. kaiten_cli-0.3.4/tests/test_document_sync.py +444 -0
  40. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_documents_and_tree.py +1 -0
  41. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/SECURITY.md +0 -0
  42. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/public-api/automation-tables.json +0 -0
  43. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/public-api/contracts.json +0 -0
  44. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/public-api/coverage.json +0 -0
  45. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/docs/public-api/decisions.json +0 -0
  46. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/audit_public_api.py +0 -0
  47. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/benchmark_reference_workflows.py +0 -0
  48. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/check_release.py +0 -0
  49. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/extract_automation_docs.cjs +0 -0
  50. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/generate_reference_docs.py +0 -0
  51. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/scripts/normalize_automation_docs.py +0 -0
  52. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/skills/kaiten-cli-heavy-data/SKILL.md +0 -0
  53. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/skills/kaiten-cli-metrics/SKILL.md +0 -0
  54. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/__main__.py +0 -0
  55. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/agent_gateway.py +0 -0
  56. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/app.py +0 -0
  57. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/completion.py +0 -0
  58. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/discovery.py +0 -0
  59. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/errors.py +0 -0
  60. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/i18n.py +0 -0
  61. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/localized_click.py +0 -0
  62. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/models.py +0 -0
  63. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/profiles.py +0 -0
  64. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/__init__.py +0 -0
  65. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/addons.py +0 -0
  66. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/audit_and_analytics.py +0 -0
  67. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/automation_schema.py +0 -0
  68. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/automation_schemas.json +0 -0
  69. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/automations.py +0 -0
  70. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/base.py +0 -0
  71. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/blockers.py +0 -0
  72. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/boards.py +0 -0
  73. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/card_relations.py +0 -0
  74. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/card_types.py +0 -0
  75. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/cards.py +0 -0
  76. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/charts.py +0 -0
  77. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/checklists.py +0 -0
  78. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/columns.py +0 -0
  79. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/comments.py +0 -0
  80. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/custom_directories.py +0 -0
  81. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/custom_properties.py +0 -0
  82. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/dashboards.py +0 -0
  83. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/external_links.py +0 -0
  84. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/files.py +0 -0
  85. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/github_addon.py +0 -0
  86. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/iterations.py +0 -0
  87. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/lanes.py +0 -0
  88. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/live_contracts.py +0 -0
  89. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/members.py +0 -0
  90. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/module_docs.py +0 -0
  91. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/projects.py +0 -0
  92. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/query.py +0 -0
  93. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/restrictions.py +0 -0
  94. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/roles_and_groups.py +0 -0
  95. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/scim.py +0 -0
  96. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/service_desk.py +0 -0
  97. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/snapshot.py +0 -0
  98. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/spaces.py +0 -0
  99. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/subscribers.py +0 -0
  100. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/tags.py +0 -0
  101. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/time_logs.py +0 -0
  102. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/tree.py +0 -0
  103. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/utilities.py +0 -0
  104. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/registry/webhooks.py +0 -0
  105. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/__init__.py +0 -0
  106. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/automation_validation.py +0 -0
  107. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/cache.py +0 -0
  108. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/client.py +0 -0
  109. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/endpoints.py +0 -0
  110. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/executor.py +1 -1
  111. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/fs_security.py +0 -0
  112. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/input.py +0 -0
  113. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/output.py +0 -0
  114. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/public_validation.py +0 -0
  115. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/snapshot_build.py +0 -0
  116. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/snapshot_common.py +0 -0
  117. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/snapshot_query.py +0 -0
  118. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/snapshot_store.py +0 -0
  119. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/snapshots.py +0 -0
  120. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/sqlite_errors.py +0 -0
  121. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/__init__.py +0 -0
  122. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/addons.py +0 -0
  123. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/audit.py +0 -0
  124. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/batch.py +0 -0
  125. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/card_move_url.py +0 -0
  126. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/cards.py +0 -0
  127. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/checklists.py +0 -0
  128. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/company_users.py +0 -0
  129. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/dashboards.py +0 -0
  130. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/files.py +0 -0
  131. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/markdown_export.py +0 -0
  132. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/pagination.py +0 -0
  133. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/projects.py +0 -0
  134. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/relations.py +0 -0
  135. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/restrictions.py +0 -0
  136. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/spaces.py +0 -0
  137. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/time_logs.py +0 -0
  138. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/tree.py +0 -0
  139. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/support/tree_sharing.py +0 -0
  140. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/runtime/transforms.py +0 -0
  141. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/schema_docs.py +0 -0
  142. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/src/kaiten_cli/update_check.py +0 -0
  143. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/conftest.py +0 -0
  144. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/data/mcp_aliases.txt +0 -0
  145. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/live/conftest.py +0 -0
  146. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/live/test_automation_contract.py +0 -0
  147. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/live/test_restrictions_live.py +0 -0
  148. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_addons_and_github_addon.py +0 -0
  149. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_agent_gateway.py +0 -0
  150. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_audit_and_analytics.py +0 -0
  151. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_automation_schemas.py +0 -0
  152. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_card_types_and_custom_properties.py +0 -0
  153. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_cards_move_by_url.py +0 -0
  154. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_charts.py +0 -0
  155. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_column_settings.py +0 -0
  156. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_command_resolution.py +0 -0
  157. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_completion_tail.py +0 -0
  158. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_dashboards.py +0 -0
  159. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_developer_parity_gaps.py +0 -0
  160. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_discovery.py +0 -0
  161. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_domain_expansion.py +0 -0
  162. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_entrypoints.py +0 -0
  163. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_executor_architecture.py +0 -0
  164. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_executor_http.py +0 -0
  165. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_file_downloads.py +0 -0
  166. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_file_uploads.py +0 -0
  167. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_fs_security.py +0 -0
  168. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_generated_docs.py +0 -0
  169. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_input_parsing.py +0 -0
  170. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_investigation_workflows.py +0 -0
  171. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_iterations.py +0 -0
  172. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_live_contracts.py +0 -0
  173. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_local_snapshots.py +0 -0
  174. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_localization.py +0 -0
  175. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_markdown_export.py +0 -0
  176. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_narrow_list_fields.py +0 -0
  177. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_output_human.py +0 -0
  178. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_output_json.py +0 -0
  179. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_pagination.py +0 -0
  180. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_private_files.py +0 -0
  181. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_profiles.py +0 -0
  182. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_public_api_cutover.py +0 -0
  183. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_public_contract_parity.py +0 -0
  184. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_public_input_transport.py +0 -0
  185. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_rate_limit_policy.py +0 -0
  186. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_registry_examples.py +0 -0
  187. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_release.py +0 -0
  188. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_restrictions.py +0 -0
  189. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_roles_groups_and_subscribers.py +0 -0
  190. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_runtime_cache.py +0 -0
  191. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_service_desk.py +0 -0
  192. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_shell_completion.py +0 -0
  193. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_skills_structure.py +0 -0
  194. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_timeout_policy.py +0 -0
  195. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_transforms.py +0 -0
  196. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_tree_entity_sharing.py +0 -0
  197. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_update_check.py +0 -0
  198. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_utilities_remainder.py +0 -0
  199. {kaiten_cli-0.3.3 → kaiten_cli-0.3.4}/tests/test_webhooks_and_automations.py +0 -0
@@ -12,6 +12,7 @@ htmlcov/
12
12
  .bin/
13
13
  .pipx/
14
14
  .uv-tools/
15
+ node_modules/
15
16
  build/
16
17
  dist/
17
18
  *.egg-info/
@@ -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
- | Contract baseline | `kaiten-cli v0.1.23` |
11
+ | Исторический contract baseline | `kaiten-cli v0.1.23` |
12
12
  | Tenant class | Kaiten sandbox test tenant |
13
- | Текущий аудит | `2026-07-09`; live suite **не запускался** |
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, but persistent cache deliberately stays conservative and opt-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.
@@ -6,11 +6,14 @@
6
6
 
7
7
  ## Статус проверки
8
8
 
9
- - На `2026-07-09` в рамках текущего аудита live suite **не запускался**.
10
- - Текущий contract baseline — `kaiten-cli v0.1.23`; tenant class ранее зафиксированных контрактов — Kaiten sandbox test tenant.
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` возвращает `405`
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` возвращает `405`
115
- - CLI делает `GET /cards/{card_id}` и извлекает `items` из matching checklist
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,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: kaiten-cli
3
- Version: 0.3.3
3
+ Version: 0.3.4
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
@@ -55,50 +55,108 @@ Description-Content-Type: text/markdown
55
55
 
56
56
  Источник истины для CLI — локальный реестр `src/kaiten_cli/registry/`.
57
57
 
58
+ ## Обновление содержимого документов
59
+
60
+ **Временный резервный механизм совместимости.** Режим `--content-mode yjs`
61
+ предназначен для установок, где исправленный серверный API ещё не выпущен или
62
+ не включён. Он сохраняет историю совместного редактирования и остаётся нужен
63
+ для поддержки старых облачных и on-premise установок.
64
+
65
+ Этот fallback выбирается только явно; CLI не переключается на него автоматически
66
+ при ошибках API. Механизм — кандидат на последующее удаление, но пока не объявлен
67
+ deprecated и даты удаления нет.
68
+
69
+ ```bash
70
+ kaiten --locale ru --json --profile main documents update \
71
+ --document-uid <uid> --content-mode yjs --data @document.json
72
+ ```
73
+
74
+ Можно передать `--text` вместо `--data`. В этом режиме метаданные, например
75
+ `--title`, обновляются отдельной командой. Если Socket.IO работает на отдельном
76
+ сервере, укажите его origin через `--socket-url https://socket.example.com`.
77
+ По умолчанию используется origin выбранного профиля, путь Socket.IO — `/socket.io`.
78
+ Режим использует внутренний протокол Kaiten, а не гарантированный Public API;
79
+ совместимость конкретной установки требует проверки на тестовом документе.
80
+
81
+ Для Yjs нужен заранее установленный **Node.js 20+**. JavaScript-помощник,
82
+ библиотеки и схемы документов уже входят в пакет CLI. CLI не устанавливает Node,
83
+ не запускает npm и не скачивает зависимости. Без Node остальные команды работают;
84
+ Yjs-обновление завершится до записи с `config_error` и кодом выхода `3`.
85
+
86
+ **Полная API-запись может создать дубль всего документа при синхронизации
87
+ с открытым редактором.** Поэтому `documents update` с `data` или `text` без
88
+ Yjs-режима заблокирован (`mutation_blocked`, код `6`). Для осознанного разрешения
89
+ старого PATCH укажите `--allow-unsafe-content-replace`; предупреждение о риске
90
+ будет выведено в stderr, JSON в stdout сохранит прежний формат.
91
+
92
+ Автоматического перехода с Yjs на PATCH и автоматических повторов записи нет.
93
+ Успех Yjs означает подтверждение и проверку сохранённого состояния через повторную
94
+ синхронизацию. При обрыве после отправки CLI сообщает, что результат записи
95
+ неизвестен. При параллельных правках возможен конфликт проверки: CLI не
96
+ перезаписывает чужие изменения повторной попыткой. Результат Yjs содержит
97
+ `document_uid`, `content_mode`, `schema_version`, `data` и `status`
98
+ (`verified` или `unchanged`); это результат синхронизации, а не REST-снимок метаданных.
99
+ Сокетные попытки отражаются в `stats.document_sync` отдельно от HTTP-запросов.
100
+
101
+ Серверные исправления уже смержены, но это не подтверждает их rollout на конкретной
102
+ установке. Удалить резервный путь можно после проверки обычного PATCH с сохранением
103
+ старого состояния редактора, включения исправления на поддерживаемых установках
104
+ и пересмотра минимальной поддерживаемой версии сервера. Подробности и состав
105
+ удаляемого слоя — в [протоколе проверки](docs/DOCUMENT_YJS_VERIFICATION.md#temporary-fallback-and-retirement).
106
+
58
107
  ## Быстрый старт
59
108
 
60
109
  ### Установка из PyPI
61
110
 
62
- Требуется Python 3.11 или новее. Начиная с выпуска `0.3.3`, стабильные версии
63
- публикуются в PyPI.
111
+ Требуется Python 3.11 или новее. Стабильные версии доступны в
112
+ [PyPI](https://pypi.org/project/kaiten-cli/), начиная с выпуска `0.3.3`.
64
113
 
65
114
  Рекомендуемый путь:
66
115
 
67
116
  ```bash
68
- uv tool install kaiten-cli
117
+ pip install kaiten-cli
69
118
  ```
70
119
 
71
- Альтернатива:
120
+ Установка CLI в отдельное окружение через pipx:
72
121
 
73
122
  ```bash
74
123
  pipx install kaiten-cli
75
124
  ```
76
125
 
77
- Установка в локальное виртуальное окружение:
126
+ Альтернатива через uv:
127
+
128
+ ```bash
129
+ uv tool install kaiten-cli
130
+ ```
131
+
132
+ Для установки через pip можно предварительно создать и активировать виртуальное
133
+ окружение. На macOS и Linux:
78
134
 
79
135
  ```bash
80
136
  python3 -m venv .venv
81
- .venv/bin/python -m pip install kaiten-cli
137
+ source .venv/bin/activate
138
+ pip install kaiten-cli
82
139
  ```
83
140
 
84
- В уже активированном виртуальном окружении достаточно `pip install kaiten-cli`.
141
+ В Windows PowerShell окружение активируется командой `.\.venv\Scripts\Activate.ps1`.
85
142
 
86
143
  ### Установка из Git
87
144
 
88
- Для установки текущего состояния `master`:
145
+ PyPI устанавливает опубликованный выпуск. Для установки текущего состояния
146
+ `master`, которое может содержать ещё не выпущенные изменения, используйте Git:
89
147
 
90
148
  ```bash
91
- uv tool install git+https://github.com/ViktorOgnev/kaiten-cli.git
149
+ pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
92
150
  ```
93
151
 
94
152
  Для установки конкретного выпуска:
95
153
 
96
154
  ```bash
97
- uv tool install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.3"
155
+ pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.4"
98
156
  ```
99
157
 
100
- Вместо `uv tool install` можно использовать `pipx install` или
101
- `python -m pip install` в виртуальном окружении.
158
+ Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
159
+ Чтобы выбрать конкретный Python для pip, используйте `python -m pip install`.
102
160
 
103
161
  ### Проверка установки
104
162
 
@@ -239,39 +297,41 @@ PowerShell необходимо использовать отдельную ру
239
297
  Для установки из PyPI обновление выполняется вручную тем же менеджером:
240
298
 
241
299
  ```bash
242
- uv tool upgrade kaiten-cli
243
- pipx upgrade kaiten-cli
244
300
  python -m pip install --upgrade kaiten-cli
301
+ pipx upgrade kaiten-cli
302
+ uv tool upgrade kaiten-cli
245
303
  ```
246
304
 
247
305
  Выберите команду своего менеджера; для pip используйте Python того окружения,
248
306
  куда установлен пакет. Встроенное предложение обновиться для установок из PyPI
249
307
  пока не поддерживается.
250
308
 
251
- Если CLI установлен по адресу ветки Git, обновление выполняется вручную:
309
+ Для установки из Git-ветки `master` обновление выполняется вручную:
252
310
 
253
311
  ```bash
254
- uv tool upgrade kaiten-cli
312
+ python -m pip install --upgrade git+https://github.com/ViktorOgnev/kaiten-cli.git
255
313
  pipx upgrade kaiten-cli
314
+ uv tool upgrade kaiten-cli
256
315
  ```
257
316
 
258
317
  Установка из Git без тега использует текущую версию из ветки `master`.
259
318
  Установку можно закрепить на конкретном выпуске с помощью тега:
260
319
 
261
320
  ```bash
262
- uv tool install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.3"
321
+ pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.4"
263
322
  ```
264
323
 
265
- Для установки из Git после успешной команды в интерактивном терминале CLI не чаще одного раза в сутки
266
- проверяет стабильные теги `vX.Y.Z` в том же Git-репозитории. Если найден новый
267
- релиз, появляется вопрос `Update now ...? [y/N]`. Основная команда к этому
324
+ При установке из Git CLI после успешной команды в интерактивном терминале
325
+ не чаще одного раза в сутки проверяет стабильные теги `vX.Y.Z` в том же
326
+ Git-репозитории. Если найден новый релиз, появляется вопрос `Update now ...? [y/N]`.
327
+ Основная команда к этому
268
328
  моменту уже завершена; подтверждённое обновление применяется со следующего запуска.
269
329
 
270
330
  Способ обновления соответствует способу установки:
271
331
 
272
- - `uv tool` → `uv tool upgrade kaiten-cli`;
332
+ - виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`;
273
333
  - `pipx` → `pipx upgrade kaiten-cli`;
274
- - виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`.
334
+ - `uv tool` → `uv tool upgrade kaiten-cli`.
275
335
 
276
336
  Для установки, закреплённой на `@vX.Y.Z`, подтверждение заменяет текущий тег на
277
337
  новый с помощью того же менеджера. Проверка не запускается в режиме `--json`,
@@ -10,50 +10,108 @@
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
 
15
64
  ### Установка из PyPI
16
65
 
17
- Требуется Python 3.11 или новее. Начиная с выпуска `0.3.3`, стабильные версии
18
- публикуются в PyPI.
66
+ Требуется Python 3.11 или новее. Стабильные версии доступны в
67
+ [PyPI](https://pypi.org/project/kaiten-cli/), начиная с выпуска `0.3.3`.
19
68
 
20
69
  Рекомендуемый путь:
21
70
 
22
71
  ```bash
23
- uv tool install kaiten-cli
72
+ pip install kaiten-cli
24
73
  ```
25
74
 
26
- Альтернатива:
75
+ Установка CLI в отдельное окружение через pipx:
27
76
 
28
77
  ```bash
29
78
  pipx install kaiten-cli
30
79
  ```
31
80
 
32
- Установка в локальное виртуальное окружение:
81
+ Альтернатива через uv:
82
+
83
+ ```bash
84
+ uv tool install kaiten-cli
85
+ ```
86
+
87
+ Для установки через pip можно предварительно создать и активировать виртуальное
88
+ окружение. На macOS и Linux:
33
89
 
34
90
  ```bash
35
91
  python3 -m venv .venv
36
- .venv/bin/python -m pip install kaiten-cli
92
+ source .venv/bin/activate
93
+ pip install kaiten-cli
37
94
  ```
38
95
 
39
- В уже активированном виртуальном окружении достаточно `pip install kaiten-cli`.
96
+ В Windows PowerShell окружение активируется командой `.\.venv\Scripts\Activate.ps1`.
40
97
 
41
98
  ### Установка из Git
42
99
 
43
- Для установки текущего состояния `master`:
100
+ PyPI устанавливает опубликованный выпуск. Для установки текущего состояния
101
+ `master`, которое может содержать ещё не выпущенные изменения, используйте Git:
44
102
 
45
103
  ```bash
46
- uv tool install git+https://github.com/ViktorOgnev/kaiten-cli.git
104
+ pip install git+https://github.com/ViktorOgnev/kaiten-cli.git
47
105
  ```
48
106
 
49
107
  Для установки конкретного выпуска:
50
108
 
51
109
  ```bash
52
- uv tool install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.3"
110
+ pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.4"
53
111
  ```
54
112
 
55
- Вместо `uv tool install` можно использовать `pipx install` или
56
- `python -m pip install` в виртуальном окружении.
113
+ Вместо `pip install` можно использовать `pipx install` или `uv tool install`.
114
+ Чтобы выбрать конкретный Python для pip, используйте `python -m pip install`.
57
115
 
58
116
  ### Проверка установки
59
117
 
@@ -194,39 +252,41 @@ PowerShell необходимо использовать отдельную ру
194
252
  Для установки из PyPI обновление выполняется вручную тем же менеджером:
195
253
 
196
254
  ```bash
197
- uv tool upgrade kaiten-cli
198
- pipx upgrade kaiten-cli
199
255
  python -m pip install --upgrade kaiten-cli
256
+ pipx upgrade kaiten-cli
257
+ uv tool upgrade kaiten-cli
200
258
  ```
201
259
 
202
260
  Выберите команду своего менеджера; для pip используйте Python того окружения,
203
261
  куда установлен пакет. Встроенное предложение обновиться для установок из PyPI
204
262
  пока не поддерживается.
205
263
 
206
- Если CLI установлен по адресу ветки Git, обновление выполняется вручную:
264
+ Для установки из Git-ветки `master` обновление выполняется вручную:
207
265
 
208
266
  ```bash
209
- uv tool upgrade kaiten-cli
267
+ python -m pip install --upgrade git+https://github.com/ViktorOgnev/kaiten-cli.git
210
268
  pipx upgrade kaiten-cli
269
+ uv tool upgrade kaiten-cli
211
270
  ```
212
271
 
213
272
  Установка из Git без тега использует текущую версию из ветки `master`.
214
273
  Установку можно закрепить на конкретном выпуске с помощью тега:
215
274
 
216
275
  ```bash
217
- uv tool install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.3"
276
+ pip install "git+https://github.com/ViktorOgnev/kaiten-cli.git@v0.3.4"
218
277
  ```
219
278
 
220
- Для установки из Git после успешной команды в интерактивном терминале CLI не чаще одного раза в сутки
221
- проверяет стабильные теги `vX.Y.Z` в том же Git-репозитории. Если найден новый
222
- релиз, появляется вопрос `Update now ...? [y/N]`. Основная команда к этому
279
+ При установке из Git CLI после успешной команды в интерактивном терминале
280
+ не чаще одного раза в сутки проверяет стабильные теги `vX.Y.Z` в том же
281
+ Git-репозитории. Если найден новый релиз, появляется вопрос `Update now ...? [y/N]`.
282
+ Основная команда к этому
223
283
  моменту уже завершена; подтверждённое обновление применяется со следующего запуска.
224
284
 
225
285
  Способ обновления соответствует способу установки:
226
286
 
227
- - `uv tool` → `uv tool upgrade kaiten-cli`;
287
+ - виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`;
228
288
  - `pipx` → `pipx upgrade kaiten-cli`;
229
- - виртуальное окружение и pip → текущий `python -m pip install --upgrade <git-source>`.
289
+ - `uv tool` → `uv tool upgrade kaiten-cli`.
230
290
 
231
291
  Для установки, закреплённой на `@vX.Y.Z`, подтверждение заменяет текущий тег на
232
292
  новый с помощью того же менеджера. Проверка не запускается в режиме `--json`,