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.
Files changed (200) hide show
  1. kaiten_cli-0.3.5/LICENSE +21 -0
  2. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/PKG-INFO +35 -3
  3. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/README.md +31 -2
  4. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/PYPI_PUBLISHING.md +15 -1
  5. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/pyproject.toml +4 -0
  6. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/check_release.py +10 -0
  7. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/__init__.py +1 -1
  8. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_release.py +27 -3
  9. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/.gitignore +0 -0
  10. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/AGENTS.md +0 -0
  11. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/API_BEHAVIOR_MATRIX.md +0 -0
  12. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/ARCHITECTURE.md +0 -0
  13. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/LIVE_VALIDATION.md +0 -0
  14. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/SECURITY.md +0 -0
  15. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/DOCUMENT_YJS_VERIFICATION.md +0 -0
  16. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/LOCALIZATION_VERIFICATION.md +0 -0
  17. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/RESTRICTIONS_VERIFICATION.md +0 -0
  18. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/README.md +0 -0
  19. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/automation-tables.json +0 -0
  20. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/contracts.json +0 -0
  21. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/coverage.json +0 -0
  22. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/docs/public-api/decisions.json +0 -0
  23. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/README.md +0 -0
  24. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/build.mjs +0 -0
  25. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/cli.mjs +0 -0
  26. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/core.mjs +0 -0
  27. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/export-schemas.cjs +0 -0
  28. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/package-lock.json +0 -0
  29. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/package.json +0 -0
  30. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/schemas.json +0 -0
  31. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/test/live-holder.mjs +0 -0
  32. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/js/document-yjs/test/sync.test.mjs +0 -0
  33. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/audit_public_api.py +0 -0
  34. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/benchmark_reference_workflows.py +0 -0
  35. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/check_locales.py +0 -0
  36. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/extract_automation_docs.cjs +0 -0
  37. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/generate_reference_docs.py +0 -0
  38. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/scripts/normalize_automation_docs.py +0 -0
  39. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-heavy-data/SKILL.md +0 -0
  40. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-metrics/SKILL.md +0 -0
  41. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/skills/kaiten-cli-mutations/SKILL.md +0 -0
  42. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/__main__.py +0 -0
  43. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/agent_gateway.py +0 -0
  44. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/app.py +0 -0
  45. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs +0 -0
  46. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs.LEGAL.txt +0 -0
  47. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/assets/document_yjs.cjs.LICENSES.txt +0 -0
  48. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/completion.py +0 -0
  49. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/discovery.py +0 -0
  50. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/errors.py +0 -0
  51. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/i18n.py +0 -0
  52. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/locales/ru.json +0 -0
  53. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/localized_click.py +0 -0
  54. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/models.py +0 -0
  55. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/profiles.py +0 -0
  56. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/__init__.py +0 -0
  57. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/addons.py +0 -0
  58. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/audit_and_analytics.py +0 -0
  59. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schema.py +0 -0
  60. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automation_schemas.json +0 -0
  61. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/automations.py +0 -0
  62. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/base.py +0 -0
  63. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/blockers.py +0 -0
  64. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/boards.py +0 -0
  65. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_relations.py +0 -0
  66. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/card_types.py +0 -0
  67. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/cards.py +0 -0
  68. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/charts.py +0 -0
  69. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/checklists.py +0 -0
  70. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/columns.py +0 -0
  71. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/comments.py +0 -0
  72. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_directories.py +0 -0
  73. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/custom_properties.py +0 -0
  74. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/dashboards.py +0 -0
  75. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/documents.py +0 -0
  76. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/external_links.py +0 -0
  77. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/files.py +0 -0
  78. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/github_addon.py +0 -0
  79. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/iterations.py +0 -0
  80. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/lanes.py +0 -0
  81. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/live_contracts.py +0 -0
  82. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/members.py +0 -0
  83. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/module_docs.py +0 -0
  84. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/projects.py +0 -0
  85. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/query.py +0 -0
  86. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/restrictions.py +0 -0
  87. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/roles_and_groups.py +0 -0
  88. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/scim.py +0 -0
  89. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/service_desk.py +0 -0
  90. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/snapshot.py +0 -0
  91. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/spaces.py +0 -0
  92. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/subscribers.py +0 -0
  93. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tags.py +0 -0
  94. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/time_logs.py +0 -0
  95. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/tree.py +0 -0
  96. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/utilities.py +0 -0
  97. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/registry/webhooks.py +0 -0
  98. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/__init__.py +0 -0
  99. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/automation_validation.py +0 -0
  100. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/behaviors.py +0 -0
  101. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/cache.py +0 -0
  102. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/client.py +0 -0
  103. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/endpoints.py +0 -0
  104. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/executor.py +0 -0
  105. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/fs_security.py +0 -0
  106. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/input.py +0 -0
  107. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/output.py +0 -0
  108. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/public_validation.py +0 -0
  109. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_build.py +0 -0
  110. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_common.py +0 -0
  111. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_query.py +0 -0
  112. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshot_store.py +0 -0
  113. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/snapshots.py +0 -0
  114. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/sqlite_errors.py +0 -0
  115. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/__init__.py +0 -0
  116. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/addons.py +0 -0
  117. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/audit.py +0 -0
  118. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/batch.py +0 -0
  119. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/card_move_url.py +0 -0
  120. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/cards.py +0 -0
  121. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/checklists.py +0 -0
  122. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/company_users.py +0 -0
  123. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/dashboards.py +0 -0
  124. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/document_sync.py +0 -0
  125. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/documents.py +0 -0
  126. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/files.py +0 -0
  127. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/markdown_export.py +0 -0
  128. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/pagination.py +0 -0
  129. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/projects.py +0 -0
  130. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/relations.py +0 -0
  131. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/restrictions.py +0 -0
  132. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/spaces.py +0 -0
  133. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/time_logs.py +0 -0
  134. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree.py +0 -0
  135. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/support/tree_sharing.py +0 -0
  136. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/trace.py +0 -0
  137. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/runtime/transforms.py +0 -0
  138. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/schema_docs.py +0 -0
  139. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/src/kaiten_cli/update_check.py +0 -0
  140. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/conftest.py +0 -0
  141. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/data/mcp_aliases.txt +0 -0
  142. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/conftest.py +0 -0
  143. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_automation_contract.py +0 -0
  144. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_restrictions_live.py +0 -0
  145. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/live/test_sandbox_live_full.py +0 -0
  146. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_addons_and_github_addon.py +0 -0
  147. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_agent_gateway.py +0 -0
  148. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_audit_and_analytics.py +0 -0
  149. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_automation_schemas.py +0 -0
  150. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_card_types_and_custom_properties.py +0 -0
  151. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_cards_move_by_url.py +0 -0
  152. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_charts.py +0 -0
  153. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_cli_smoke.py +0 -0
  154. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_column_settings.py +0 -0
  155. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_command_resolution.py +0 -0
  156. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_completion_tail.py +0 -0
  157. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_dashboards.py +0 -0
  158. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_developer_parity_gaps.py +0 -0
  159. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_discovery.py +0 -0
  160. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_docs_structure.py +0 -0
  161. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_document_sync.py +0 -0
  162. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_documents_and_tree.py +0 -0
  163. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_domain_expansion.py +0 -0
  164. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_entrypoints.py +0 -0
  165. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_executor_architecture.py +0 -0
  166. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_executor_http.py +0 -0
  167. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_file_downloads.py +0 -0
  168. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_file_uploads.py +0 -0
  169. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_fs_security.py +0 -0
  170. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_generated_docs.py +0 -0
  171. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_input_parsing.py +0 -0
  172. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_investigation_workflows.py +0 -0
  173. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_iterations.py +0 -0
  174. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_live_contracts.py +0 -0
  175. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_local_snapshots.py +0 -0
  176. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_localization.py +0 -0
  177. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_markdown_export.py +0 -0
  178. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_narrow_list_fields.py +0 -0
  179. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_output_human.py +0 -0
  180. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_output_json.py +0 -0
  181. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_pagination.py +0 -0
  182. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_private_files.py +0 -0
  183. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_profiles.py +0 -0
  184. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_api_cutover.py +0 -0
  185. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_contract_parity.py +0 -0
  186. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_public_input_transport.py +0 -0
  187. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_rate_limit_policy.py +0 -0
  188. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_registry_examples.py +0 -0
  189. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_restrictions.py +0 -0
  190. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_roles_groups_and_subscribers.py +0 -0
  191. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_runtime_cache.py +0 -0
  192. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_service_desk.py +0 -0
  193. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_shell_completion.py +0 -0
  194. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_skills_structure.py +0 -0
  195. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_timeout_policy.py +0 -0
  196. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_transforms.py +0 -0
  197. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_tree_entity_sharing.py +0 -0
  198. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_update_check.py +0 -0
  199. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_utilities_remainder.py +0 -0
  200. {kaiten_cli-0.3.4 → kaiten_cli-0.3.5}/tests/test_webhooks_and_automations.py +0 -0
@@ -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.4
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.4"
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.4"
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.4"
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.4"
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.14, coverage и аудит зависимостей.
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
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "0.3.4"
5
+ __version__ = "0.3.5"
@@ -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(root, *, wheel_version="0.3.3", sdist_version="0.3.3", name="kaiten-cli"):
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", f"Name: {name}\nVersion: {wheel_version}\n"
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