axe-cli 1.7.7__tar.gz → 1.7.9__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 (157) hide show
  1. {axe_cli-1.7.7 → axe_cli-1.7.9}/PKG-INFO +1 -1
  2. {axe_cli-1.7.7 → axe_cli-1.7.9}/pyproject.toml +1 -1
  3. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agents/default/system.md +11 -16
  4. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/app.py +8 -3
  5. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/config.py +2 -0
  6. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/llm.py +6 -3
  7. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/agent.py +5 -1
  8. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/axesoul.py +10 -0
  9. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/context.py +1 -10
  10. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/__init__.py +2 -2
  11. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/slash.py +1 -1
  12. {axe_cli-1.7.7 → axe_cli-1.7.9}/README.md +0 -0
  13. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/CHANGELOG.md +0 -0
  14. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/README.md +0 -0
  15. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/__init__.py +0 -0
  16. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/AGENTS.md +0 -0
  17. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/__init__.py +0 -0
  18. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/convert.py +0 -0
  19. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/kaos.py +0 -0
  20. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/mcp.py +0 -0
  21. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/server.py +0 -0
  22. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/session.py +0 -0
  23. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/tools.py +0 -0
  24. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/acp/types.py +0 -0
  25. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agents/README.md +0 -0
  26. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agents/default/agent.yaml +0 -0
  27. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agents/default/sub.yaml +0 -0
  28. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agents/okabe/agent.yaml +0 -0
  29. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/agentspec.py +0 -0
  30. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/auth/__init__.py +0 -0
  31. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/auth/oauth.py +0 -0
  32. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/auth/platforms.py +0 -0
  33. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/cli/__init__.py +0 -0
  34. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/cli/__main__.py +0 -0
  35. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/cli/info.py +0 -0
  36. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/cli/mcp.py +0 -0
  37. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/cli/toad.py +0 -0
  38. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/constant.py +0 -0
  39. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/exception.py +0 -0
  40. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/metadata.py +0 -0
  41. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/prompts/__init__.py +0 -0
  42. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/prompts/compact.md +0 -0
  43. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/prompts/init.md +0 -0
  44. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/py.typed +0 -0
  45. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/session.py +0 -0
  46. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/share.py +0 -0
  47. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skill/__init__.py +0 -0
  48. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skill/flow/__init__.py +0 -0
  49. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skill/flow/d2.py +0 -0
  50. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skill/flow/mermaid.py +0 -0
  51. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skills/README.md +0 -0
  52. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skills/axe-cli-help/SKILL.md +0 -0
  53. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/skills/skill-creator/SKILL.md +0 -0
  54. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/__init__.py +0 -0
  55. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/approval.py +0 -0
  56. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/compaction.py +0 -0
  57. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/context.py +0 -0
  58. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/denwarenji.py +0 -0
  59. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/message.py +0 -0
  60. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/slash.py +0 -0
  61. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/soul/toolset.py +0 -0
  62. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/token_counter.py +0 -0
  63. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/AGENTS.md +0 -0
  64. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/README.md +0 -0
  65. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/__init__.py +0 -0
  66. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/__init__.py +0 -0
  67. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/auto_init.py +0 -0
  68. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/impact.py +0 -0
  69. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/index.py +0 -0
  70. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/prewarm.py +0 -0
  71. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/search.py +0 -0
  72. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/structure.py +0 -0
  73. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/axe/warm.py +0 -0
  74. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/display.py +0 -0
  75. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/dmail/__init__.py +0 -0
  76. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/dmail/dmail.md +0 -0
  77. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/__init__.py +0 -0
  78. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/glob.md +0 -0
  79. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/glob.py +0 -0
  80. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/grep.md +0 -0
  81. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/grep_local.py +0 -0
  82. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/read.md +0 -0
  83. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/read.py +0 -0
  84. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/read_media.md +0 -0
  85. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/read_media.py +0 -0
  86. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/replace.md +0 -0
  87. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/replace.py +0 -0
  88. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/utils.py +0 -0
  89. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/write.md +0 -0
  90. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/file/write.py +0 -0
  91. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/__init__.py +0 -0
  92. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/create.md +0 -0
  93. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/create.py +0 -0
  94. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/task.md +0 -0
  95. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/task.py +0 -0
  96. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/shell/__init__.py +0 -0
  97. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/shell/bash.md +0 -0
  98. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/shell/powershell.md +0 -0
  99. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/test.py +0 -0
  100. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/think/__init__.py +0 -0
  101. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/think/think.md +0 -0
  102. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/todo/__init__.py +0 -0
  103. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/todo/set_todo_list.md +0 -0
  104. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/utils.py +0 -0
  105. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/web/__init__.py +0 -0
  106. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/web/fetch.md +0 -0
  107. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/web/fetch.py +0 -0
  108. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/web/search.md +0 -0
  109. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/tools/web/search.py +0 -0
  110. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/__init__.py +0 -0
  111. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/acp/__init__.py +0 -0
  112. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/print/__init__.py +0 -0
  113. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/print/visualize.py +0 -0
  114. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/console.py +0 -0
  115. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/debug.py +0 -0
  116. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/keyboard.py +0 -0
  117. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/oauth.py +0 -0
  118. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/prompt.py +0 -0
  119. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/replay.py +0 -0
  120. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/setup.py +0 -0
  121. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/update.py +0 -0
  122. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/usage.py +0 -0
  123. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/ui/shell/visualize.py +0 -0
  124. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/__init__.py +0 -0
  125. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/aiohttp.py +0 -0
  126. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/aioqueue.py +0 -0
  127. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/broadcast.py +0 -0
  128. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/changelog.py +0 -0
  129. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/clipboard.py +0 -0
  130. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/datetime.py +0 -0
  131. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/diff.py +0 -0
  132. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/environment.py +0 -0
  133. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/envvar.py +0 -0
  134. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/frontmatter.py +0 -0
  135. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/logging.py +0 -0
  136. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/media_tags.py +0 -0
  137. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/message.py +0 -0
  138. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/path.py +0 -0
  139. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/pyinstaller.py +0 -0
  140. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/__init__.py +0 -0
  141. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/columns.py +0 -0
  142. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown.py +0 -0
  143. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown_sample.md +0 -0
  144. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown_sample_short.md +0 -0
  145. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/rich/syntax.py +0 -0
  146. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/signals.py +0 -0
  147. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/slashcmd.py +0 -0
  148. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/string.py +0 -0
  149. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/term.py +0 -0
  150. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/utils/typing.py +0 -0
  151. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/__init__.py +0 -0
  152. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/file.py +0 -0
  153. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/jsonrpc.py +0 -0
  154. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/protocol.py +0 -0
  155. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/serde.py +0 -0
  156. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/server.py +0 -0
  157. {axe_cli-1.7.7 → axe_cli-1.7.9}/src/axe_cli/wire/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: axe-cli
3
- Version: 1.7.7
3
+ Version: 1.7.9
4
4
  Summary: axe, yerrrr
5
5
  Requires-Dist: agent-client-protocol==0.7.0
6
6
  Requires-Dist: axe-dig
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "axe-cli"
3
- version = "1.7.7"
3
+ version = "1.7.9"
4
4
  description = "axe, yerrrr"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -20,34 +20,28 @@ When responding to the user, you MUST use the SAME language as the user, unless
20
20
 
21
21
  # Code Intelligence Tools (Axe-Dig)
22
22
 
23
- The codebase is automatically indexed on startup using axe-dig, providing powerful semantic code search and analysis capabilities. When working with code, **YOU MUST PREFER** these tools over basic file operations:
23
+ The codebase is automatically indexed on startup using axe-dig. When searching for code, **Grep** is **MOST PREFERABLE** for exact results, but **CodeSearch** can be used alongside it to form a **POWERFUL COMBINATION** of semantic and exact search.
24
24
 
25
25
  **Recommended workflow for code tasks:**
26
- 1. **CodeSearch** - Find what you're looking for (semantic discovery)
27
- 2. **Grep** - Get exact file location and line numbers
26
+ 1. **Grep** - PREFERRED. Use this first to find code locations.
27
+ 2. **CodeSearch** - Use in combination with Grep for semantic discovery.
28
28
  3. **CodeImpact** - Understand the function and shows all callers and dependencies, for refactoring (if needed)
29
29
  4. **StrReplaceFile** - Make precise edits
30
30
 
31
31
  ## When to use Code Intelligence tools:
32
32
 
33
33
  - **CodeSearch**: Use this **HEAVILY** for natural language queries to find code by BEHAVIOR or PURPOSE (e.g., "find where subagents are created").
34
- - **Much better than Grep** for finding code based on what it does, even if you don't know the exact variable names.
34
+ - for finding code based on what it does, even if you don't know the exact variable names.
35
35
  - Returns semantic matches even without exact text matches.
36
36
  - Usage: `chop semantic search "natural language query"`
37
37
 
38
- **Real examples from this codebase (verified):**
39
- - "retry failed operations with exponential backoff" → `_is_retryable_error()` (score: 0.71)
40
- - "load configuration from toml file" → `load_config_from_string()` (score: 0.76)
41
- - "execute shell commands and capture output" → `run_sh()` (score: 0.73)
42
- - "write content to file and handle errors" → `flush_content()` (score: 0.69)
43
-
44
38
  **When to use CodeSearch:**
45
39
  - Finding code by behavior: "cache with TTL", "validate input", "retry logic"
46
40
  - Exploring unfamiliar code: "session management", "error handling patterns"
47
41
  - Before refactoring: "who implements this pattern?"
48
- - When you don't know exact function names but know what the code should do
42
+
49
43
 
50
- **Scores 0.65-0.80 are excellent matches. Try CodeSearch FIRST for discovery, then use Grep for exact locations.**
44
+ **Scores 0.65-0.80 are excellent matches. Use CodeSearch together with Grep for a powerful search strategy.**
51
45
 
52
46
  - **CodeContext**: Use when you need to understand a specific function, class, or symbol WITHOUT reading entire files.
53
47
  - **Requires a function/symbol name** (often found via CodeSearch first).
@@ -68,6 +62,7 @@ The codebase is automatically indexed on startup using axe-dig, providing powerf
68
62
  - Can be used after CodeSearch to pinpoint exact locations for StrReplaceFile.
69
63
  - Supports literal strings and complex regex patterns.
70
64
  - Returns file paths + line numbers + content.
65
+
71
66
  - **ReadFile**: Reading full file content when detailed implementation logic is needed.
72
67
  - **FileSearch**: Finding files by name patterns.
73
68
 
@@ -96,10 +91,10 @@ This means you can find code by BEHAVIOR even without exact keywords:
96
91
  4. Scores 0.65+ are excellent, 0.55-0.65 are good, below 0.55 try rephrasing
97
92
 
98
93
  **Recommended workflow:**
99
- 1. **CodeSearch** - Find what you're looking for by behavior ("find retry logic")
100
- 2. **CodeContext** - Understand the function without reading entire files
101
- 3. **CodeImpact** - Check who calls it before refactoring
102
- 4. **Grep** - Get exact line numbers for precise edits
94
+ 1. **Grep** - PREFERABLY, use this first to locate code.
95
+ 2. **CodeSearch** - Use if Grep fails or for behavioral search. Combine with Grep for best results.
96
+ 3. **CodeContext** - Understand the function without reading entire files
97
+ 4. **CodeImpact** - Check who calls it before refactoring
103
98
  5. **StrReplaceFile** - Make the changes
104
99
 
105
100
  **Each tool has its strength:**
@@ -108,16 +108,19 @@ class AxeCLI:
108
108
 
109
109
  model: LLMModel | None = None
110
110
  provider: LLMProvider | None = None
111
+ model_config_name: str | None = None
111
112
 
112
113
  # try to use config file
113
114
  if not model_name and config.default_model:
114
115
  # no --model specified && default model is set in config
115
116
  model = config.models[config.default_model]
116
117
  provider = config.providers[model.provider]
118
+ model_config_name = config.default_model
117
119
  if model_name and model_name in config.models:
118
120
  # --model specified && model is set in config
119
121
  model = config.models[model_name]
120
122
  provider = config.providers[model.provider]
123
+ model_config_name = model_name
121
124
 
122
125
  if not model:
123
126
  model = LLMModel(provider="", model="", max_context_size=100_000)
@@ -142,7 +145,7 @@ class AxeCLI:
142
145
  logger.info("Using LLM model: {model}", model=model)
143
146
  logger.info("Thinking mode: {thinking}", thinking=thinking)
144
147
 
145
- runtime = await Runtime.create(config, llm, session, yolo, skills_dir)
148
+ runtime = await Runtime.create(config, llm, model_config_name, session, yolo, skills_dir)
146
149
 
147
150
  if agent_file is None:
148
151
  agent_file = DEFAULT_AGENT_FILE
@@ -152,17 +155,19 @@ class AxeCLI:
152
155
  await context.restore()
153
156
 
154
157
  soul = AxeSoul(agent, context=context)
155
- return AxeCLI(soul, runtime, env_overrides)
158
+ return AxeCLI(soul, runtime, env_overrides, model)
156
159
 
157
160
  def __init__(
158
161
  self,
159
162
  _soul: AxeSoul,
160
163
  _runtime: Runtime,
161
164
  _env_overrides: dict[str, str],
165
+ _model_config: LLMModel | None = None,
162
166
  ) -> None:
163
167
  self._soul = _soul
164
168
  self._runtime = _runtime
165
169
  self._env_overrides = _env_overrides
170
+ self._model_config = _model_config
166
171
 
167
172
  @property
168
173
  def soul(self) -> AxeSoul:
@@ -288,7 +293,7 @@ class AxeCLI:
288
293
  welcome_info.append(
289
294
  WelcomeInfoItem(
290
295
  name="Model",
291
- value=model_display_name(self._soul.model_name),
296
+ value=model_display_name(self._model_config or self._soul.model_name),
292
297
  level=WelcomeInfoItem.Level.INFO,
293
298
  )
294
299
  )
@@ -52,6 +52,8 @@ class LLMModel(BaseModel):
52
52
  """Provider name"""
53
53
  model: str
54
54
  """Model name"""
55
+ alias: str | None = None
56
+ """Model alias for nickname switch"""
55
57
  max_context_size: int
56
58
  """Maximum context size (unit: tokens)"""
57
59
  capabilities: set[ModelCapability] | None = None
@@ -45,10 +45,13 @@ class LLM:
45
45
  return self.chat_provider.model_name
46
46
 
47
47
 
48
- def model_display_name(model_name: str | None) -> str:
49
- if not model_name:
48
+ def model_display_name(model: LLMModel | str | None) -> str:
49
+ """Get display name for a model, using alias if available."""
50
+ if model is None:
50
51
  return ""
51
- return model_name
52
+ if isinstance(model, str):
53
+ return model
54
+ return model.alias or model.model
52
55
 
53
56
 
54
57
  def augment_provider_with_env_vars(provider: LLMProvider, model: LLMModel) -> dict[str, str]:
@@ -64,6 +64,7 @@ class Runtime:
64
64
 
65
65
  config: Config
66
66
  llm: LLM | None # we do not freeze the `Runtime` dataclass because LLM can be changed
67
+ model_config_name: str | None # name of the model config from config.toml
67
68
  session: Session
68
69
  builtin_args: BuiltinSystemPromptArgs
69
70
  denwa_renji: DenwaRenji
@@ -73,10 +74,10 @@ class Runtime:
73
74
  skills: dict[str, Skill]
74
75
  oauth: OAuthManager
75
76
 
76
- @staticmethod
77
77
  async def create(
78
78
  config: Config,
79
79
  llm: LLM | None,
80
+ model_config_name: str | None,
80
81
  session: Session,
81
82
  yolo: bool,
82
83
  skills_dir: KaosPath | None = None,
@@ -106,6 +107,7 @@ class Runtime:
106
107
  return Runtime(
107
108
  config=config,
108
109
  llm=llm,
110
+ model_config_name=model_config_name,
109
111
  session=session,
110
112
  builtin_args=BuiltinSystemPromptArgs(
111
113
  AXE_NOW=datetime.now().astimezone().isoformat(),
@@ -127,6 +129,7 @@ class Runtime:
127
129
  return Runtime(
128
130
  config=self.config,
129
131
  llm=self.llm,
132
+ model_config_name=self.model_config_name,
130
133
  session=self.session,
131
134
  builtin_args=self.builtin_args,
132
135
  denwa_renji=DenwaRenji(), # subagent must have its own DenwaRenji
@@ -142,6 +145,7 @@ class Runtime:
142
145
  return Runtime(
143
146
  config=self.config,
144
147
  llm=self.llm,
148
+ model_config_name=self.model_config_name,
145
149
  session=self.session,
146
150
  builtin_args=self.builtin_args,
147
151
  denwa_renji=DenwaRenji(), # subagent must have its own DenwaRenji
@@ -133,6 +133,16 @@ class AxeSoul:
133
133
  def model_name(self) -> str:
134
134
  return self._runtime.llm.chat_provider.model_name if self._runtime.llm else ""
135
135
 
136
+ @property
137
+ def model_display_name(self) -> str:
138
+ """Get the display name for the model (uses alias if available)."""
139
+ if self._runtime.llm is None:
140
+ return ""
141
+ if self._runtime.model_config_name and self._runtime.model_config_name in self._runtime.config.models:
142
+ model_cfg = self._runtime.config.models[self._runtime.model_config_name]
143
+ return model_cfg.alias or model_cfg.model
144
+ return self._runtime.llm.chat_provider.model_name
145
+
136
146
  @property
137
147
  def model_capabilities(self) -> set[ModelCapability] | None:
138
148
  if self._runtime.llm is None:
@@ -56,19 +56,10 @@ Returns a compressed LLM-ready summary that includes:
56
56
  → calls: check_permissions, get_user_data, log_access
57
57
  ```
58
58
 
59
- **examples**
60
- ```bash
61
- chop context reset_step_count --project src/axe_cli/
62
- # Output: ~89 tokens (vs ~4,200 for reading the raw file)
63
- # Shows: Function signature, what it calls (TokenCount), complexity (1 block)
64
- # Result: 98% token savings while preserving full understanding
65
- ```
66
-
67
- **Why use this instead of ReadFile?**
59
+ **Why use this?**
68
60
  - 95% fewer tokens while preserving understanding
69
61
  - Includes cross-file context (callers from other files, dependencies)
70
62
  - Shows complexity metrics to assess refactoring difficulty
71
- - Optimized for LLM comprehension
72
63
 
73
64
  **When to use:**
74
65
  - Understanding a function before editing it
@@ -59,7 +59,7 @@ class Shell:
59
59
  else:
60
60
  self._start_background_task(self._auto_update())
61
61
 
62
- _print_welcome_info(self.soul.name or "Axe Code CLI", self._welcome_info)
62
+ _print_welcome_info(self.soul.name or "axe", self._welcome_info)
63
63
 
64
64
  if isinstance(self.soul, AxeSoul):
65
65
  await replay_recent_history(
@@ -70,7 +70,7 @@ class Shell:
70
70
  with CustomPromptSession(
71
71
  status_provider=lambda: self.soul.status,
72
72
  model_capabilities=self.soul.model_capabilities or set(),
73
- model_name=self.soul.model_name,
73
+ model_name=self.soul.model_display_name,
74
74
  thinking=self.soul.thinking or False,
75
75
  agent_mode_slash_commands=list(self._available_slash_commands.values()),
76
76
  shell_mode_slash_commands=shell_mode_registry.list_commands(),
@@ -173,7 +173,7 @@ async def model(app: Shell, args: str):
173
173
  model_cfg = config.models[name]
174
174
  provider_label = model_cfg.provider
175
175
  marker = " (current)" if name == curr_model_name else ""
176
- label = f"{model_cfg.model} ({provider_label}){marker}"
176
+ label = f"{model_cfg.alias or model_cfg.model} ({provider_label}){marker}"
177
177
  model_choices.append((name, label))
178
178
 
179
179
  try:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes