axe-cli 1.7.8__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.8 → axe_cli-1.7.9}/PKG-INFO +1 -1
  2. {axe_cli-1.7.8 → axe_cli-1.7.9}/pyproject.toml +1 -1
  3. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/app.py +8 -3
  4. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/config.py +2 -0
  5. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/llm.py +6 -3
  6. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/agent.py +5 -1
  7. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/axesoul.py +10 -0
  8. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/__init__.py +2 -2
  9. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/slash.py +1 -1
  10. {axe_cli-1.7.8 → axe_cli-1.7.9}/README.md +0 -0
  11. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/CHANGELOG.md +0 -0
  12. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/README.md +0 -0
  13. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/__init__.py +0 -0
  14. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/AGENTS.md +0 -0
  15. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/__init__.py +0 -0
  16. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/convert.py +0 -0
  17. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/kaos.py +0 -0
  18. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/mcp.py +0 -0
  19. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/server.py +0 -0
  20. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/session.py +0 -0
  21. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/tools.py +0 -0
  22. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/acp/types.py +0 -0
  23. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agents/README.md +0 -0
  24. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agents/default/agent.yaml +0 -0
  25. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agents/default/sub.yaml +0 -0
  26. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agents/default/system.md +0 -0
  27. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agents/okabe/agent.yaml +0 -0
  28. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/agentspec.py +0 -0
  29. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/auth/__init__.py +0 -0
  30. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/auth/oauth.py +0 -0
  31. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/auth/platforms.py +0 -0
  32. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/cli/__init__.py +0 -0
  33. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/cli/__main__.py +0 -0
  34. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/cli/info.py +0 -0
  35. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/cli/mcp.py +0 -0
  36. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/cli/toad.py +0 -0
  37. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/constant.py +0 -0
  38. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/exception.py +0 -0
  39. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/metadata.py +0 -0
  40. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/prompts/__init__.py +0 -0
  41. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/prompts/compact.md +0 -0
  42. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/prompts/init.md +0 -0
  43. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/py.typed +0 -0
  44. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/session.py +0 -0
  45. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/share.py +0 -0
  46. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skill/__init__.py +0 -0
  47. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skill/flow/__init__.py +0 -0
  48. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skill/flow/d2.py +0 -0
  49. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skill/flow/mermaid.py +0 -0
  50. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skills/README.md +0 -0
  51. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skills/axe-cli-help/SKILL.md +0 -0
  52. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/skills/skill-creator/SKILL.md +0 -0
  53. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/__init__.py +0 -0
  54. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/approval.py +0 -0
  55. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/compaction.py +0 -0
  56. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/context.py +0 -0
  57. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/denwarenji.py +0 -0
  58. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/message.py +0 -0
  59. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/slash.py +0 -0
  60. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/soul/toolset.py +0 -0
  61. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/token_counter.py +0 -0
  62. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/AGENTS.md +0 -0
  63. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/README.md +0 -0
  64. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/__init__.py +0 -0
  65. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/__init__.py +0 -0
  66. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/auto_init.py +0 -0
  67. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/context.py +0 -0
  68. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/impact.py +0 -0
  69. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/index.py +0 -0
  70. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/prewarm.py +0 -0
  71. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/search.py +0 -0
  72. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/structure.py +0 -0
  73. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/axe/warm.py +0 -0
  74. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/display.py +0 -0
  75. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/dmail/__init__.py +0 -0
  76. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/dmail/dmail.md +0 -0
  77. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/__init__.py +0 -0
  78. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/glob.md +0 -0
  79. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/glob.py +0 -0
  80. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/grep.md +0 -0
  81. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/grep_local.py +0 -0
  82. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/read.md +0 -0
  83. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/read.py +0 -0
  84. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/read_media.md +0 -0
  85. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/read_media.py +0 -0
  86. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/replace.md +0 -0
  87. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/replace.py +0 -0
  88. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/utils.py +0 -0
  89. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/write.md +0 -0
  90. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/file/write.py +0 -0
  91. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/__init__.py +0 -0
  92. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/create.md +0 -0
  93. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/create.py +0 -0
  94. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/task.md +0 -0
  95. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/multiagent/task.py +0 -0
  96. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/shell/__init__.py +0 -0
  97. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/shell/bash.md +0 -0
  98. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/shell/powershell.md +0 -0
  99. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/test.py +0 -0
  100. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/think/__init__.py +0 -0
  101. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/think/think.md +0 -0
  102. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/todo/__init__.py +0 -0
  103. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/todo/set_todo_list.md +0 -0
  104. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/utils.py +0 -0
  105. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/web/__init__.py +0 -0
  106. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/web/fetch.md +0 -0
  107. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/web/fetch.py +0 -0
  108. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/web/search.md +0 -0
  109. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/tools/web/search.py +0 -0
  110. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/__init__.py +0 -0
  111. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/acp/__init__.py +0 -0
  112. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/print/__init__.py +0 -0
  113. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/print/visualize.py +0 -0
  114. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/console.py +0 -0
  115. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/debug.py +0 -0
  116. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/keyboard.py +0 -0
  117. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/oauth.py +0 -0
  118. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/prompt.py +0 -0
  119. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/replay.py +0 -0
  120. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/setup.py +0 -0
  121. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/update.py +0 -0
  122. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/usage.py +0 -0
  123. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/ui/shell/visualize.py +0 -0
  124. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/__init__.py +0 -0
  125. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/aiohttp.py +0 -0
  126. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/aioqueue.py +0 -0
  127. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/broadcast.py +0 -0
  128. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/changelog.py +0 -0
  129. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/clipboard.py +0 -0
  130. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/datetime.py +0 -0
  131. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/diff.py +0 -0
  132. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/environment.py +0 -0
  133. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/envvar.py +0 -0
  134. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/frontmatter.py +0 -0
  135. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/logging.py +0 -0
  136. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/media_tags.py +0 -0
  137. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/message.py +0 -0
  138. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/path.py +0 -0
  139. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/pyinstaller.py +0 -0
  140. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/__init__.py +0 -0
  141. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/columns.py +0 -0
  142. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown.py +0 -0
  143. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown_sample.md +0 -0
  144. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/markdown_sample_short.md +0 -0
  145. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/rich/syntax.py +0 -0
  146. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/signals.py +0 -0
  147. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/slashcmd.py +0 -0
  148. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/string.py +0 -0
  149. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/term.py +0 -0
  150. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/utils/typing.py +0 -0
  151. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/__init__.py +0 -0
  152. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/file.py +0 -0
  153. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/jsonrpc.py +0 -0
  154. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/protocol.py +0 -0
  155. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/serde.py +0 -0
  156. {axe_cli-1.7.8 → axe_cli-1.7.9}/src/axe_cli/wire/server.py +0 -0
  157. {axe_cli-1.7.8 → 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.8
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.8"
3
+ version = "1.7.9"
4
4
  description = "axe, yerrrr"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -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:
@@ -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