kon-coding-agent 0.3.11__tar.gz → 0.4.1__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 (209) hide show
  1. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.agents/skills/kon-release-publish/SKILL.md +1 -1
  2. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.agents/skills/kon-tmux-test/SKILL.md +5 -5
  3. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.agents/skills/kon-tmux-test/run-e2e-tests.sh +8 -8
  4. kon_coding_agent-0.4.1/.claude/settings.local.json +36 -0
  5. kon_coding_agent-0.4.1/.github/workflows/publish.yml +39 -0
  6. kon_coding_agent-0.4.1/.github/workflows/test.yml +40 -0
  7. kon_coding_agent-0.4.1/.pre-commit-config.yaml +7 -0
  8. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/AGENTS.md +1 -1
  9. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/CHANGELOG.md +58 -0
  10. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/PKG-INFO +76 -28
  11. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/README.md +74 -27
  12. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/docs/e2e-test-coverage-review.md +6 -6
  13. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/docs/local-models.md +6 -0
  14. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/pyproject.toml +3 -2
  15. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/__init__.py +6 -0
  16. kon_coding_agent-0.4.1/src/kon/builtin_skills/review/SKILL.md +72 -0
  17. kon_coding_agent-0.4.1/src/kon/cli.py +98 -0
  18. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/config.py +66 -1
  19. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/agent_mds.py +9 -11
  20. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/skills.py +52 -10
  21. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/core/__init__.py +2 -0
  22. kon_coding_agent-0.4.1/src/kon/core/errors.py +17 -0
  23. kon_coding_agent-0.4.1/src/kon/diff_display.py +12 -0
  24. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/events.py +1 -0
  25. kon_coding_agent-0.4.1/src/kon/gh_cli.py +82 -0
  26. kon_coding_agent-0.4.1/src/kon/headless.py +127 -0
  27. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/models.py +1 -47
  28. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/anthropic.py +6 -2
  29. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/mock.py +19 -0
  30. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/openai_completions.py +6 -2
  31. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/openai_responses.py +6 -2
  32. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/loop.py +6 -3
  33. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/notify.py +13 -0
  34. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/themes.py +27 -1
  35. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/bash.py +35 -10
  36. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/edit.py +81 -34
  37. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/write.py +7 -2
  38. kon_coding_agent-0.4.1/src/kon/turn.py +768 -0
  39. kon_coding_agent-0.4.1/src/kon/ui/agent_runner.py +417 -0
  40. kon_coding_agent-0.4.1/src/kon/ui/app.py +658 -0
  41. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/autocomplete.py +63 -0
  42. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/blocks.py +124 -22
  43. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/chat.py +1 -1
  44. kon_coding_agent-0.4.1/src/kon/ui/commands/__init__.py +100 -0
  45. kon_coding_agent-0.4.1/src/kon/ui/commands/auth.py +149 -0
  46. kon_coding_agent-0.4.1/src/kon/ui/commands/base.py +121 -0
  47. kon_coding_agent-0.4.1/src/kon/ui/commands/models.py +50 -0
  48. kon_coding_agent-0.4.1/src/kon/ui/commands/sessions.py +390 -0
  49. kon_coding_agent-0.4.1/src/kon/ui/commands/settings.py +286 -0
  50. kon_coding_agent-0.4.1/src/kon/ui/completion_ui.py +310 -0
  51. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/export.py +10 -0
  52. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/formatting.py +40 -2
  53. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/input.py +17 -6
  54. kon_coding_agent-0.4.1/src/kon/ui/launch.py +102 -0
  55. kon_coding_agent-0.4.1/src/kon/ui/queue_ui.py +141 -0
  56. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/selection_mode.py +2 -0
  57. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/session_ui.py +10 -0
  58. kon_coding_agent-0.4.1/src/kon/ui/startup.py +116 -0
  59. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/styles.py +19 -15
  60. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/widgets.py +5 -2
  61. kon_coding_agent-0.4.1/src/kon/version.py +22 -0
  62. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/context/test_agents.py +12 -0
  63. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/context/test_skills.py +179 -2
  64. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_openai_codex_provider_errors.py +18 -18
  65. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_agentic_loop.py +25 -1
  66. kon_coding_agent-0.4.1/tests/test_cli.py +35 -0
  67. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_cli_auth_flags.py +1 -9
  68. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_config_binaries.py +3 -1
  69. kon_coding_agent-0.4.1/tests/test_errors.py +17 -0
  70. kon_coding_agent-0.4.1/tests/test_headless.py +207 -0
  71. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_llm_lazy_imports.py +7 -1
  72. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_model_provider_resolution.py +6 -6
  73. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_notify.py +15 -1
  74. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_openai_compat.py +2 -2
  75. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_runtime_switch_model.py +2 -2
  76. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_tools_manager.py +1 -0
  77. kon_coding_agent-0.4.1/tests/tools/test_bash_shell.py +92 -0
  78. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_bash_truncation.py +1 -0
  79. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_diff.py +35 -20
  80. kon_coding_agent-0.4.1/tests/tools/test_edit_display.py +45 -0
  81. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_read.py +3 -0
  82. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_subprocess_cancellation.py +1 -0
  83. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_completion_chrome.py +19 -3
  84. kon_coding_agent-0.4.1/tests/ui/test_export.py +101 -0
  85. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_login_command.py +1 -1
  86. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_shell_command_detection.py +35 -0
  87. kon_coding_agent-0.4.1/tests/ui/test_streaming_blocks.py +198 -0
  88. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_tool_output_expansion.py +36 -0
  89. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/uv.lock +3 -1
  90. kon_coding_agent-0.3.11/.github/workflows/test.yml +0 -33
  91. kon_coding_agent-0.3.11/src/kon/turn.py +0 -630
  92. kon_coding_agent-0.3.11/src/kon/ui/app.py +0 -1571
  93. kon_coding_agent-0.3.11/src/kon/ui/commands.py +0 -943
  94. kon_coding_agent-0.3.11/tests/tools/test_edit_display.py +0 -38
  95. kon_coding_agent-0.3.11/tests/ui/test_streaming_blocks.py +0 -69
  96. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.agents/skills/kon-tmux-test/setup-test-project.sh +0 -0
  97. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.gitignore +0 -0
  98. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/.python-version +0 -0
  99. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/LICENSE +0 -0
  100. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/docs/images/kon-screenshot.png +0 -0
  101. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/scripts/show_themes.py +0 -0
  102. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/async_utils.py +0 -0
  103. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/builtin_skills/init/SKILL.md +0 -0
  104. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/__init__.py +0 -0
  105. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/_xml.py +0 -0
  106. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/git.py +0 -0
  107. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/context/loader.py +0 -0
  108. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/core/compaction.py +0 -0
  109. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/core/handoff.py +0 -0
  110. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/core/types.py +0 -0
  111. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/defaults/__init__.py +0 -0
  112. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/defaults/config.toml +0 -0
  113. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/git_branch.py +0 -0
  114. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/__init__.py +0 -0
  115. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/base.py +0 -0
  116. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/oauth/__init__.py +0 -0
  117. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/oauth/copilot.py +0 -0
  118. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/oauth/openai.py +0 -0
  119. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/__init__.py +0 -0
  120. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/anthropic_capabilities.py +0 -0
  121. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/azure_ai_foundry.py +0 -0
  122. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/copilot.py +0 -0
  123. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/copilot_anthropic.py +0 -0
  124. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/github_copilot_headers.py +0 -0
  125. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/openai_codex_responses.py +0 -0
  126. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/openai_compat.py +0 -0
  127. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/llm/providers/sanitize.py +0 -0
  128. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/permissions.py +0 -0
  129. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/py.typed +0 -0
  130. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/runtime.py +0 -0
  131. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/session.py +0 -0
  132. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/sounds/completion.wav +0 -0
  133. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/sounds/error.wav +0 -0
  134. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/sounds/permission.wav +0 -0
  135. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/__init__.py +0 -0
  136. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/_read_image.py +0 -0
  137. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/_tool_utils.py +0 -0
  138. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/base.py +0 -0
  139. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/find.py +0 -0
  140. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/grep.py +0 -0
  141. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/read.py +0 -0
  142. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/web_fetch.py +0 -0
  143. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools/web_search.py +0 -0
  144. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/tools_manager.py +0 -0
  145. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/__init__.py +0 -0
  146. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/app_protocol.py +0 -0
  147. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/clipboard.py +0 -0
  148. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/floating_list.py +0 -0
  149. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/latex.py +0 -0
  150. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/path_complete.py +0 -0
  151. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/prompt_history.py +0 -0
  152. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/tool_output.py +0 -0
  153. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/tree.py +0 -0
  154. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/ui/welcome.py +0 -0
  155. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/src/kon/update_check.py +0 -0
  156. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/conftest.py +0 -0
  157. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/__init__.py +0 -0
  158. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_anthropic_provider.py +0 -0
  159. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_azure_ai_foundry_provider.py +0 -0
  160. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_mock_provider.py +0 -0
  161. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_openai_oauth.py +0 -0
  162. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/llm/test_tls_verify.py +0 -0
  163. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_cli_provider_resolution.py +0 -0
  164. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_compaction.py +0 -0
  165. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_config_error_fallback.py +0 -0
  166. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_config_injection.py +0 -0
  167. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_config_migration.py +0 -0
  168. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_git_branch.py +0 -0
  169. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_handoff.py +0 -0
  170. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_handoff_link_interrupt.py +0 -0
  171. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_launch_warnings.py +0 -0
  172. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_local_auth_config.py +0 -0
  173. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_notifications_config.py +0 -0
  174. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_permissions.py +0 -0
  175. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_session_persistence.py +0 -0
  176. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_session_queries.py +0 -0
  177. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_session_resume.py +0 -0
  178. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_session_tree.py +0 -0
  179. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_system_prompt.py +0 -0
  180. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_system_prompt_git_context.py +0 -0
  181. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_themes.py +0 -0
  182. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_ui_notifications.py +0 -0
  183. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_update_check.py +0 -0
  184. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/test_update_notice_behavior.py +0 -0
  185. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_edit.py +0 -0
  186. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_read_image.py +0 -0
  187. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_read_image_integration.py +0 -0
  188. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_read_image_resize.py +0 -0
  189. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_web_fetch.py +0 -0
  190. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/tools/test_write.py +0 -0
  191. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_app_approval_keys.py +0 -0
  192. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_autocomplete.py +0 -0
  193. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_floating_list.py +0 -0
  194. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_info_bar_clicks.py +0 -0
  195. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_info_bar_permissions.py +0 -0
  196. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_input_approval_submit.py +0 -0
  197. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_input_cursor_theme.py +0 -0
  198. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_input_handoff.py +0 -0
  199. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_input_paste.py +0 -0
  200. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_input_shell_style.py +0 -0
  201. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_keybindings.py +0 -0
  202. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_latex.py +0 -0
  203. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_permission_selection_status.py +0 -0
  204. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_permissions_command.py +0 -0
  205. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_prompt_history.py +0 -0
  206. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_queue_editing.py +0 -0
  207. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_status_line.py +0 -0
  208. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_styles.py +0 -0
  209. {kon_coding_agent-0.3.11 → kon_coding_agent-0.4.1}/tests/ui/test_thinking_notifications_commands.py +0 -0
@@ -24,7 +24,7 @@ Use this skill when the user asks to cut a new Kon version, tag it, publish to P
24
24
  ## Files to bump
25
25
 
26
26
  - `pyproject.toml` → `[project].version`
27
- - `src/kon/ui/app.py` → fallback `VERSION = "..."`
27
+ - `src/kon/version.py` → fallback `VERSION = "..."`
28
28
  - `uv.lock` → local package version block
29
29
 
30
30
  ## Release workflow
@@ -29,14 +29,14 @@ Kon is a TUI (Textual-based) app. Running tests programmatically is hard. Tmux p
29
29
 
30
30
  ```bash
31
31
  # Run all e2e tests from the repo root
32
- bash .kon/skills/kon-tmux-test/run-e2e-tests.sh
32
+ bash .agents/skills/kon-tmux-test/run-e2e-tests.sh
33
33
 
34
34
  # Optional: keep the temporary HOME for debugging
35
- KEEP_E2E_HOME=1 bash .kon/skills/kon-tmux-test/run-e2e-tests.sh
35
+ KEEP_E2E_HOME=1 bash .agents/skills/kon-tmux-test/run-e2e-tests.sh
36
36
 
37
37
  # Optional: override launch command/provider/model
38
38
  KON_CMD='uv run kon --model gpt-5.5' \
39
- bash .kon/skills/kon-tmux-test/run-e2e-tests.sh
39
+ bash .agents/skills/kon-tmux-test/run-e2e-tests.sh
40
40
  ```
41
41
 
42
42
  After running, read `/tmp/kon-test-*.txt` and evaluate the captured pane/config/filesystem outputs.
@@ -48,7 +48,7 @@ After running, read `/tmp/kon-test-*.txt` and evaluate the captured pane/config/
48
48
  Creates a deterministic test project structure at `/tmp/kon-test-project/`.
49
49
 
50
50
  ```bash
51
- bash .kon/skills/kon-tmux-test/setup-test-project.sh
51
+ bash .agents/skills/kon-tmux-test/setup-test-project.sh
52
52
  ```
53
53
 
54
54
  ### Main Test Script: `run-e2e-tests.sh`
@@ -56,7 +56,7 @@ bash .kon/skills/kon-tmux-test/setup-test-project.sh
56
56
  Runs comprehensive e2e tests including UI triggers, runtime controls, tab completion, and tool execution.
57
57
 
58
58
  ```bash
59
- bash .kon/skills/kon-tmux-test/run-e2e-tests.sh
59
+ bash .agents/skills/kon-tmux-test/run-e2e-tests.sh
60
60
  ```
61
61
 
62
62
  ## Test Categories
@@ -29,8 +29,8 @@ capture() {
29
29
  }
30
30
 
31
31
  capture_config() {
32
- if [ -f "$TEST_HOME/.kon/config.toml" ]; then
33
- cp "$TEST_HOME/.kon/config.toml" "$1"
32
+ if [ -f "$TEST_HOME/.config/kon/config.toml" ]; then
33
+ cp "$TEST_HOME/.config/kon/config.toml" "$1"
34
34
  else
35
35
  echo "CONFIG_NOT_FOUND" > "$1"
36
36
  fi
@@ -74,12 +74,12 @@ trap cleanup EXIT
74
74
  echo "Setting up isolated e2e environment..."
75
75
  cleanup
76
76
  rm -rf "$TEST_DIR" "$TEST_HOME"
77
- mkdir -p "$TEST_DIR" "$TEST_HOME/.kon"
78
- if [ -f "$HOME/.kon/openai_auth.json" ]; then
79
- cp "$HOME/.kon/openai_auth.json" "$TEST_HOME/.kon/openai_auth.json"
77
+ mkdir -p "$TEST_DIR" "$TEST_HOME/.config/kon"
78
+ if [ -f "$HOME/.config/kon/openai_auth.json" ]; then
79
+ cp "$HOME/.config/kon/openai_auth.json" "$TEST_HOME/.config/kon/openai_auth.json"
80
80
  fi
81
- if [ -f "$HOME/.kon/copilot_auth.json" ]; then
82
- cp "$HOME/.kon/copilot_auth.json" "$TEST_HOME/.kon/copilot_auth.json"
81
+ if [ -f "$HOME/.config/kon/copilot_auth.json" ]; then
82
+ cp "$HOME/.config/kon/copilot_auth.json" "$TEST_HOME/.config/kon/copilot_auth.json"
83
83
  fi
84
84
  cd "$TEST_DIR" || exit 1
85
85
  printf '# Test Project\n' > README.md
@@ -288,7 +288,7 @@ clear_input
288
288
  # =============================================================================
289
289
  echo "Capturing file system and persisted state..."
290
290
  ls -la "$TEST_DIR" > /tmp/kon-test-files.txt 2>/dev/null
291
- find "$TEST_HOME/.kon/sessions" -type f -name '*.jsonl' -print > /tmp/kon-test-session-files.txt 2>/dev/null || true
291
+ find "$TEST_HOME/.config/kon/sessions" -type f -name '*.jsonl' -print > /tmp/kon-test-session-files.txt 2>/dev/null || true
292
292
  capture_config /tmp/kon-test-final-config.txt
293
293
 
294
294
  # Retry a few times in case the LLM is still finishing file writes
@@ -0,0 +1,36 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(uv run *)",
5
+ "Bash(gh api *)",
6
+ "Bash(echo \"exit=$?\")",
7
+ "Bash(git -C /Users/utsav/Workspaces/kon status --short)",
8
+ "Bash(git -C /Users/utsav/Workspaces/kon diff --stat)",
9
+ "Bash(git add *)",
10
+ "Bash(git commit -m ' *)",
11
+ "Bash(git push *)",
12
+ "Bash(gh run *)",
13
+ "Bash(python3 -c ' *)",
14
+ "Bash(awk -F: '{print $1\": \"$3}')",
15
+ "Bash(awk -F: '{print $3}')",
16
+ "Bash(awk -F: '{print $1, $2}')",
17
+ "Bash(git -C /Users/utsav/Workspaces/kon log --oneline origin/main..HEAD)",
18
+ "Bash(git -C /Users/utsav/Workspaces/kon log --oneline -10)",
19
+ "Bash(git -C /Users/utsav/Workspaces/kon show f987ebf --stat=220)",
20
+ "Bash(git -C /Users/utsav/Workspaces/kon show f987ebf -- src/kon/turn.py)",
21
+ "Bash(git -C /Users/utsav/Workspaces/kon show fa6b029 --stat)",
22
+ "Bash(git -C /Users/utsav/Workspaces/kon show fa6b029)",
23
+ "Bash(git -C /Users/utsav/Workspaces/kon show f987ebf~1:src/kon/turn.py)",
24
+ "Bash(awk '/^async def run_single_turn/,0')",
25
+ "Bash(awk '{print length\\($0\\)/4}')",
26
+ "Bash(git -C /Users/utsav/Workspaces/kon show f987ebf -- tests/)",
27
+ "Bash(git -C /Users/utsav/Workspaces/kon show 31815a4 --stat)",
28
+ "Bash(git -C /Users/utsav/Workspaces/kon show 705fb8f --stat)",
29
+ "Bash(git -C /Users/utsav/Workspaces/kon diff --stat src/kon/ui/app.py)",
30
+ "Bash(gh issue *)",
31
+ "Bash(git *)",
32
+ "Bash(sed -n 250-270p /Users/utsav/Workspaces/kon/src/kon/llm/providers/openai_completions.py)",
33
+ "Bash(sed -n 200-220p /Users/utsav/Workspaces/kon/src/kon/llm/providers/anthropic.py)"
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,39 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ - name: Install uv
16
+ uses: astral-sh/setup-uv@v8.2.0
17
+ with:
18
+ python-version: "3.13"
19
+ - name: Build sdist and wheel
20
+ run: uv build
21
+ - uses: actions/upload-artifact@v7
22
+ with:
23
+ name: dist
24
+ path: dist/
25
+
26
+ publish:
27
+ needs: build
28
+ runs-on: ubuntu-latest
29
+ environment: pypi
30
+ permissions:
31
+ # Required for PyPI trusted publishing (OIDC).
32
+ id-token: write
33
+ steps:
34
+ - uses: actions/download-artifact@v8
35
+ with:
36
+ name: dist
37
+ path: dist/
38
+ - name: Publish to PyPI
39
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,40 @@
1
+ name: Test
2
+
3
+ on: [push, pull_request]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ jobs:
9
+ lint:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v6
13
+ - name: Install uv
14
+ uses: astral-sh/setup-uv@v8.2.0
15
+ with:
16
+ python-version: "3.13"
17
+ - name: Install dependencies
18
+ run: uv sync --group dev
19
+ - name: Ruff format
20
+ run: uv run ruff format --check .
21
+ - name: Ruff check
22
+ run: uv run ruff check .
23
+ - name: Pyright
24
+ run: uv run python -m pyright .
25
+
26
+ test:
27
+ runs-on: ubuntu-latest
28
+ strategy:
29
+ matrix:
30
+ python-version: ["3.12", "3.13", "3.14"]
31
+ steps:
32
+ - uses: actions/checkout@v6
33
+ - name: Install uv
34
+ uses: astral-sh/setup-uv@v8.2.0
35
+ with:
36
+ python-version: ${{ matrix.python-version }}
37
+ - name: Install dependencies
38
+ run: uv sync --group dev
39
+ - name: Run tests
40
+ run: uv run python -m pytest -s
@@ -0,0 +1,7 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.15.16
4
+ hooks:
5
+ - id: ruff-check
6
+ args: [--fix]
7
+ - id: ruff-format
@@ -17,7 +17,7 @@
17
17
 
18
18
  ## Committing code
19
19
 
20
- - If the user tells you to commit code, look at all the changes and create multile commits if needed bsaed on logical groupings
20
+ - If the user tells you to commit code, look at all the changes and create multiple commits if needed based on logical groupings
21
21
  - Follow commit message conventions: `docs:`, `feat:`, `fix:`, `build:`, etc. for the commit prefix
22
22
 
23
23
  ## Pushing
@@ -6,6 +6,64 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  - No changes yet.
8
8
 
9
+ ## 0.4.1 - 2026-06-13
10
+
11
+ ### Added
12
+
13
+ - Added Windows audio notification support without volume control - @clach04.
14
+ - Added slash-only skills support.
15
+ - Added skill-relative path resolution against each skill directory.
16
+
17
+ ### Changed
18
+
19
+ - Split UI monoliths and restructured the turn streaming loop.
20
+ - Improved markdown streaming performance with cached rendered blocks.
21
+ - Kept blocking I/O off the UI event loop.
22
+ - Updated CI, PyPI publishing, and pre-commit workflows.
23
+
24
+ ### Fixed
25
+
26
+ - Skipped mkfifo-dependent tests on Windows - @clach04.
27
+ - Fixed slash-command args for skills without `$ARGUMENTS` placeholders.
28
+ - Updated e2e auth/config/session paths to `~/.config/kon`.
29
+ - Persisted manual shell commands for export and resume.
30
+ - Improved Windows Git Bash path handling.
31
+ - Fixed manually triggered custom skill body expansion.
32
+ - Skipped tool calls with stream-stalled truncated arguments.
33
+ - Preserved error context and retried transient network failures.
34
+ - Fixed skill frontmatter inline comment parsing.
35
+ - Buffered partial streaming markdown lines.
36
+
37
+ ### Docs / Tests
38
+
39
+ - Aligned web tools docs with default config.
40
+ - Updated stale `.kon/skills` references to `.agents/skills`.
41
+ - Added testing guide, local model guidance, and permission clarifications.
42
+ - Improved Windows path and notification test coverage.
43
+
44
+ ## 0.4.0 - 2026-05-31
45
+
46
+ ### Added
47
+
48
+ - Added non-interactive `-p`/`--prompt` headless mode - @Meltedd.
49
+ - Added pull request autocomplete.
50
+ - Added review slash skill and updated review rubric.
51
+ - Added thinking display settings.
52
+ - Added diff rendering improvements.
53
+ - Added git context toggle to settings UI and exported `set_git_context`.
54
+
55
+ ### Changed
56
+
57
+ - Extracted Textual-free CLI entry point.
58
+
59
+ ### Fixed
60
+
61
+ - Aligned agent context paths.
62
+ - Clipped diff output lines.
63
+ - Used warning symbol for chat notices.
64
+ - Replaced `math.fma` for Python 3.12 compatibility.
65
+ - Removed unsupported GLM-4.7 and GPT models below 5.5 from Copilot and Codex providers.
66
+
9
67
  ## 0.3.11 - 2026-05-29
10
68
 
11
69
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kon-coding-agent
3
- Version: 0.3.11
3
+ Version: 0.4.1
4
4
  Summary: Minimal coding agent
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -10,6 +10,7 @@ Requires-Dist: anthropic>=0.79.0
10
10
  Requires-Dist: curl-cffi>=0.15.0
11
11
  Requires-Dist: ddgs>=9.0.0
12
12
  Requires-Dist: html-to-markdown<3.4.0,>=3.3.0
13
+ Requires-Dist: lxml-html-clean>=0.4.3
13
14
  Requires-Dist: openai>=2.21.0
14
15
  Requires-Dist: pillow>=12.1.1
15
16
  Requires-Dist: pydantic>=2.12.5
@@ -34,7 +35,7 @@ Description-Content-Type: text/markdown
34
35
  <img src="docs/images/kon-screenshot.png" alt="Kon terminal UI screenshot" width="700" />
35
36
  </p>
36
37
 
37
- Kon is a minimal coding agent focused on a tiny core prompt, a small built-in toolset, and project-specific context layered on top only when you want it. The default system prompt stays **under 270 tokens**, and even including the built-in tool descriptions and parameter schemas, the fixed harness stays at about **~1,000 tokens**. The core experience is built around just **6 default tools** plus **2 optional web tools**.
38
+ Kon is a minimal coding agent focused on a tiny core prompt, a small built-in toolset, and project-specific context layered on top only when you want it. The default system prompt stays **under 270 tokens**, and even including the built-in tool descriptions and parameter schemas, the fixed harness stays at about **~1,000 tokens**. The core experience is built around **6 default tools** plus **2 extra web tools** included by the shipped config.
38
39
 
39
40
  [Kon](https://bleach.fandom.com/wiki/Kon) is named after the artificial soul from *Bleach*.
40
41
 
@@ -89,34 +90,48 @@ kon
89
90
  ```text
90
91
  usage: kon [-h] [--model MODEL]
91
92
  [--provider {azure-ai-foundry,deepseek,github-copilot,openai,openai-codex,openai-responses,zhipu}]
92
- [--api-key API_KEY] [--base-url BASE_URL] [--continue]
93
- [--resume RESUME_SESSION] [--version]
94
- [--extra-tools EXTRA_TOOLS]
93
+ [--prompt [PROMPT]] [--api-key API_KEY] [--base-url BASE_URL]
94
+ [--openai-compat-auth {auto,required,none}]
95
+ [--anthropic-compat-auth {auto,required,none}]
96
+ [--insecure-skip-verify] [--continue] [--resume RESUME_SESSION]
97
+ [--version] [--extra-tools EXTRA_TOOLS]
95
98
 
96
- Kon TUI
99
+ Kon
97
100
 
98
101
  options:
99
102
  -h, --help show this help message and exit
100
103
  --model, -m MODEL Model to use
101
- --provider, -p {azure-ai-foundry,deepseek,github-copilot,openai,openai-codex,openai-responses,zhipu}
104
+ --provider {azure-ai-foundry,deepseek,github-copilot,openai,openai-codex,openai-responses,zhipu}
102
105
  Provider to use
106
+ --prompt, -p [PROMPT]
107
+ Run a single prompt non-interactively, then exit (omit
108
+ the value or pipe stdin to read the prompt from stdin)
103
109
  --api-key, -k API_KEY
104
110
  API key
105
111
  --base-url, -u BASE_URL
106
112
  Base URL for API
113
+ --openai-compat-auth {auto,required,none}
114
+ Auth mode for OpenAI-compatible endpoints
115
+ --anthropic-compat-auth {auto,required,none}
116
+ Auth mode for Anthropic-compatible endpoints
117
+ --insecure-skip-verify
118
+ Skip TLS verification (e.g. self-signed certs on local
119
+ providers)
107
120
  --continue, -c Resume the most recent session
108
121
  --resume, -r RESUME_SESSION
109
- Resume a specific session by ID (full or unique prefix)
122
+ Resume a specific session by ID (full or unique
123
+ prefix)
110
124
  --version show program's version number and exit
111
125
  --extra-tools EXTRA_TOOLS
112
- Comma-separated extra tools to enable (e.g. web_search,web_fetch)
126
+ Comma-separated extra tools to enable (e.g.
127
+ web_search,web_fetch)
113
128
  ```
114
129
 
115
130
  ### Common examples
116
131
 
117
132
  ```bash
118
- # choose a model explicitly
119
- kon -p openai-codex -m gpt-5.4
133
+ # choose a provider and model explicitly
134
+ kon --provider openai-codex -m gpt-5.4
120
135
 
121
136
  # continue your latest session
122
137
  kon -c
@@ -124,7 +139,7 @@ kon -c
124
139
  # resume a specific session by id or unique prefix
125
140
  kon -r 3f2a8c1b-...
126
141
 
127
- # enable the optional web tools
142
+ # enable extra web tools for this run
128
143
  kon --extra-tools web_search,web_fetch
129
144
  ```
130
145
 
@@ -140,6 +155,23 @@ kon --extra-tools web_search,web_fetch
140
155
  !!find . -name "*.py" | head -20
141
156
  ```
142
157
 
158
+ ### Non-interactive
159
+
160
+ Run a single prompt headlessly with `-p`/`--prompt`, then exit:
161
+
162
+ ```bash
163
+ # pass the prompt inline
164
+ kon -p "fix the failing test"
165
+
166
+ # read the prompt from stdin
167
+ cat task.md | kon -p
168
+
169
+ # capture the final response
170
+ kon -p "summarize this module" > out.txt
171
+ ```
172
+
173
+ In this mode tools run **auto-approved** (no confirmation prompts). The final assistant response is printed to stdout on a clean finish; errors go to stderr. Exit codes: `0` completed, `1` error, `2` startup error (empty prompt or provider/init failure), `3` hit the max-turn limit. Session flags (`-c`/`--continue`, `-r`/`--resume`) aren't supported in this mode.
174
+
143
175
  ### Install from source
144
176
 
145
177
  ```bash
@@ -151,6 +183,19 @@ uv tool install .
151
183
  > [!WARNING]
152
184
  > Kon currently targets macOS and Linux. Windows is not tested yet.
153
185
 
186
+ ### Development and testing
187
+
188
+ Run the test suite through `uv` so the dev dependencies are active — `pytest-asyncio` comes from the dev group, and a bare `pytest` without it fails every async test:
189
+
190
+ ```bash
191
+ git clone https://github.com/kuutsav/kon
192
+ cd kon
193
+ uv sync --dev
194
+ uv run python -m pytest
195
+ ```
196
+
197
+ **Windows note:** if you see many failures like `async def functions are not natively supported`, you are running a pytest without `pytest-asyncio` — re-run with `uv run python -m pytest` as above. Remaining Windows-specific failures are worth reporting as issues.
198
+
154
199
  ---
155
200
 
156
201
  ## Why Kon
@@ -161,7 +206,7 @@ Kon tries to stay small in the places that matter most:
161
206
 
162
207
  - **System prompt under 270 tokens** by default
163
208
  - **6 core tools** for everyday coding work
164
- - **2 optional extra tools** for web lookup and content extraction
209
+ - **2 extra web tools** for web lookup and content extraction in the shipped config
165
210
  - **Project instructions are externalized** through `AGENTS.md`
166
211
  - **Heavily configurable** defaults that you can tune around model, prompt, permissions, compaction, tools, and UI
167
212
  - **Useful features are borrowed selectively** from other agents, like `/handoff` inspired by Amp
@@ -175,7 +220,7 @@ If you want a coding agent you can read, understand, fork, and adapt without inh
175
220
  Kon stores config at:
176
221
 
177
222
  ```text
178
- ~/.kon/config.toml
223
+ ~/.config/kon/config.toml
179
224
  ```
180
225
 
181
226
  It is created automatically on first run, and old schemas are migrated forward automatically when needed.
@@ -243,24 +288,24 @@ This is the core experience: small, predictable, and enough for most coding task
243
288
 
244
289
  ### Extra tools
245
290
 
246
- Kon also ships optional built-in tools you can turn on when needed:
291
+ Kon also ships extra built-in tools beyond the 6 core tools. The shipped config enables these web tools by default:
247
292
 
248
- | Tool | Purpose | How to enable |
293
+ | Tool | Purpose | Config |
249
294
  | --- | --- | --- |
250
- | `web_search` | Search the web with DuckDuckGo | `--extra-tools web_search,web_fetch` or config |
295
+ | `web_search` | Search the web with DuckDuckGo | `extra = ["web_search", "web_fetch"]` |
251
296
  | `web_fetch` | Fetch and extract clean page content | Usually paired with `web_search` |
252
297
 
253
- Enable them from the CLI:
298
+ You can also add extra tools for a single run from the CLI:
254
299
 
255
300
  ```bash
256
301
  kon --extra-tools web_search,web_fetch
257
302
  ```
258
303
 
259
- Or in `~/.kon/config.toml`:
304
+ To disable web tools, remove them from `~/.config/kon/config.toml`:
260
305
 
261
306
  ```toml
262
307
  [tools]
263
- extra = ["web_search", "web_fetch"]
308
+ extra = []
264
309
  ```
265
310
 
266
311
  ---
@@ -369,7 +414,7 @@ Kon supports direct shell command execution from the input box using two prefixe
369
414
  Kon stores sessions as append-only **JSONL** files in:
370
415
 
371
416
  ```text
372
- ~/.kon/sessions/
417
+ ~/.config/kon/sessions/
373
418
  ```
374
419
 
375
420
  That keeps sessions easy to inspect, archive, and move around.
@@ -429,8 +474,8 @@ Kon loads project guidance from `AGENTS.md` or `CLAUDE.md` files into the system
429
474
 
430
475
  Load order:
431
476
 
432
- 1. `~/.kon/AGENTS.md`
433
- 2. matching ancestor directories from git root (or home) down to the current working directory
477
+ 1. `~/.config/kon/AGENTS.md`
478
+ 2. matching `AGENTS.md` or `CLAUDE.md` files in ancestor directories from git root (or home) down to the current working directory
434
479
 
435
480
  Use these files for repo conventions, test commands, code style notes, deployment steps, or anything else you want loaded automatically.
436
481
 
@@ -438,8 +483,8 @@ Use these files for repo conventions, test commands, code style notes, deploymen
438
483
 
439
484
  Skills are reusable instruction packs discovered from:
440
485
 
441
- - project: `.kon/skills/`
442
- - global: `~/.kon/skills/`
486
+ - project: `.agents/skills/`
487
+ - global: `~/.agents/skills/`
443
488
 
444
489
  Each skill lives in its own directory with a `SKILL.md` file.
445
490
 
@@ -462,9 +507,12 @@ Important fields:
462
507
 
463
508
  - `name` - skill identifier
464
509
  - `description` - used for discovery and prompt context
465
- - `register_cmd` - if `true`, exposes the skill as a slash command and includes it in the `/cmd` popup for manual triggering
510
+ - `register_cmd` - if `true`, exposes the skill as a slash command and includes it in the `/cmd` popup for manual triggering; use `only` to register it as a slash command without including it in the system prompt
466
511
  - `cmd_info` - short help text for the slash menu
467
512
 
513
+ > [!NOTE]
514
+ > Installed skills do **not** appear as slash commands by default — without `register_cmd` they are only described to the model, which invokes them on its own when relevant. Add `register_cmd: true` to a skill's frontmatter to trigger it manually as `/<skill-name>`.
515
+
468
516
  Validation highlights:
469
517
 
470
518
  - lowercase letters, numbers, and `-` only
@@ -512,7 +560,7 @@ kon --provider deepseek --model deepseek-v4-flash
512
560
 
513
561
  ### Local models
514
562
 
515
- Kon works well with local models served through an OpenAI-compatible endpoint. For one-off launches, you can force unauthenticated local behavior with `--openai-compat-auth none` or `--anthropic-compat-auth none`. To make that persistent across sessions, set `[llm.auth] openai_compat = "auto"|"none"` and/or `anthropic_compat = "auto"|"none"` in `~/.kon/config.toml`.
563
+ Kon works well with local models served through an OpenAI-compatible endpoint. For one-off launches, you can force unauthenticated local behavior with `--openai-compat-auth none` or `--anthropic-compat-auth none`. To make that persistent across sessions, set `[llm.auth] openai_compat = "auto"|"none"` and/or `anthropic_compat = "auto"|"none"` in `~/.config/kon/config.toml`.
516
564
 
517
565
  More notes, tested models, and examples live in [docs/local-models.md](docs/local-models.md).
518
566
 
@@ -527,7 +575,7 @@ Kon supports two permission modes:
527
575
  | `prompt` | Ask before mutating tool calls |
528
576
  | `auto` | Skip approval prompts |
529
577
 
530
- In `prompt` mode, non-mutating tools are allowed automatically, and some clearly read-only shell commands are also allowed.
578
+ In `prompt` mode, non-mutating tools are allowed automatically, and some clearly read-only shell commands are also allowed. This includes web tools: `web_search` and `web_fetch` are read-only, so they run **without an approval prompt** even in `prompt` mode. If you don't want the agent reaching the network at all, remove them from the `[tools] extra` config.
531
579
 
532
580
  Use `/permissions` to switch modes for the current session and persist the change to config.
533
581