agentpool-cli 0.1.9__tar.gz → 0.1.11__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 (123) hide show
  1. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/CHANGELOG.md +20 -0
  2. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/PKG-INFO +19 -8
  3. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/README.md +18 -7
  4. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/agentpool-skill.md +3 -1
  5. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/examples.md +7 -0
  6. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/mcp-tools.md +4 -2
  7. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/model-catalog.md +27 -4
  8. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/provider-adapters.md +9 -2
  9. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/provider-lifecycle-matrix.md +4 -4
  10. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/quickstart.md +9 -0
  11. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-claude-code.md +7 -0
  12. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-cursor-cli.md +3 -1
  13. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-droid.md +3 -1
  14. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/pyproject.toml +9 -1
  15. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/server.json +2 -2
  16. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/__init__.py +1 -1
  17. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/cli.py +193 -1
  18. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/config.py +24 -4
  19. agentpool_cli-0.1.11/src/agentpool/provider_model_catalog.json +4043 -0
  20. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/providers/base.py +5 -0
  21. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/session_manager.py +4 -1
  22. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/provider_model_catalog_golden.json +63 -5
  23. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_cli.py +53 -0
  24. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_models_config_store.py +121 -9
  25. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/uv.lock +1 -1
  26. agentpool_cli-0.1.9/src/agentpool/provider_model_catalog.json +0 -997
  27. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.cursor/mcp.json.example +0 -0
  28. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/CODEOWNERS +0 -0
  29. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  30. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/ISSUE_TEMPLATE/provider_probe.md +0 -0
  31. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/dependabot.yml +0 -0
  32. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/workflows/ci.yml +0 -0
  33. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.github/workflows/release.yml +0 -0
  34. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.gitignore +0 -0
  35. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/.mcp.json.example +0 -0
  36. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/AGENTS.md +0 -0
  37. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/CONTRIBUTING.md +0 -0
  38. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/LICENSE +0 -0
  39. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/SECURITY.md +0 -0
  40. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/agent-cli-and-mcp.md +0 -0
  41. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/architecture.md +0 -0
  42. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/examples/README.md +0 -0
  43. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/install.md +0 -0
  44. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/mcp-clients.md +0 -0
  45. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/onboarding.md +0 -0
  46. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/release.md +0 -0
  47. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/security.md +0 -0
  48. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-codex.md +0 -0
  49. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-copilot.md +0 -0
  50. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-cursor.md +0 -0
  51. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/setup-devin.md +0 -0
  52. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/stats.md +0 -0
  53. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/usage-detection.md +0 -0
  54. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/docs/usage-probe-matrix.md +0 -0
  55. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/scripts/install.sh +0 -0
  56. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/__main__.py +0 -0
  57. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/agent_io.py +0 -0
  58. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/artifacts.py +0 -0
  59. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/event_detection.py +0 -0
  60. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/__init__.py +0 -0
  61. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/__init__.py +0 -0
  62. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_approval_agent.py +0 -0
  63. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_common.py +0 -0
  64. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_completed_agent.py +0 -0
  65. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_idle_agent.py +0 -0
  66. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_limit_agent.py +0 -0
  67. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_patch_agent.py +0 -0
  68. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/fixtures/fake_agents/fake_question_agent.py +0 -0
  69. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/git_worktree.py +0 -0
  70. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/mcp/__init__.py +0 -0
  71. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/mcp/resources.py +0 -0
  72. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/mcp/tools.py +0 -0
  73. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/mcp_server.py +0 -0
  74. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/models.py +0 -0
  75. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/onboarding.py +0 -0
  76. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/policy.py +0 -0
  77. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/preferences.py +0 -0
  78. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/providers/__init__.py +0 -0
  79. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/providers/registry.py +0 -0
  80. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/redaction.py +0 -0
  81. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/runtimes/__init__.py +0 -0
  82. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/runtimes/base.py +0 -0
  83. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/runtimes/tmux.py +0 -0
  84. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/__init__.py +0 -0
  85. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/card.py +0 -0
  86. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/compute.py +0 -0
  87. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/queries.py +0 -0
  88. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/render.py +0 -0
  89. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/stats/window.py +0 -0
  90. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/store.py +0 -0
  91. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/__init__.py +0 -0
  92. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/_common.py +0 -0
  93. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/ccusage.py +0 -0
  94. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/claude.py +0 -0
  95. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/codex.py +0 -0
  96. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/codexbar.py +0 -0
  97. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/combine.py +0 -0
  98. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/copilot.py +0 -0
  99. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/devin.py +0 -0
  100. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/parsers.py +0 -0
  101. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/probes.py +0 -0
  102. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/provider_parsers.py +0 -0
  103. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/usage/summary.py +0 -0
  104. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/src/agentpool/utils.py +0 -0
  105. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/stats_seed.py +0 -0
  106. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/usage/claude_usage.txt +0 -0
  107. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/usage/codex_rate_limits.json +0 -0
  108. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/usage/copilot_user.json +0 -0
  109. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/fixtures/usage/devin_plan_status.json +0 -0
  110. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/integration/test_fake_tmux_flow.py +0 -0
  111. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_agent_io.py +0 -0
  112. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_event_policy.py +0 -0
  113. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_mcp_surface.py +0 -0
  114. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_mcp_tools.py +0 -0
  115. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_onboarding.py +0 -0
  116. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_redaction.py +0 -0
  117. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_stats_cli.py +0 -0
  118. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_stats_mcp.py +0 -0
  119. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_stats_window.py +0 -0
  120. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_subprocess_safety.py +0 -0
  121. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_usage_probes.py +0 -0
  122. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_usage_provider_parsers.py +0 -0
  123. {agentpool_cli-0.1.9 → agentpool_cli-0.1.11}/tests/unit/test_usage_summary_enrichment.py +0 -0
@@ -2,6 +2,26 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.1.11 - 2026-06-05
6
+
7
+ - Refresh provider model catalogs from current Claude Code, Codex, Cursor,
8
+ Droid, and OpenCode surfaces, including Claude Opus 4.8, Claude Code 1M
9
+ suffixes, and Cursor's explicit 1M/reasoning variants.
10
+ - Forward provider reasoning controls for Claude Code (`--effort`) and Droid
11
+ (`--reasoning-effort`) while keeping Codex reasoning/service-tier overrides
12
+ process-local.
13
+ - Refresh stale installed catalog metadata from the embedded catalog without
14
+ overriding user-selected default or smoke models.
15
+
16
+ ## 0.1.10 - 2026-06-03
17
+
18
+ - Add an AI-agent start section to root help pointing agents at bundled skill
19
+ guidance before they infer workflows from flags.
20
+ - Add `agentpool skills` with `list`, `get`, and `path` so agents can load
21
+ version-matched AgentPool usage guidance from the installed CLI.
22
+ - Include examples with packaged docs so `agentpool skills get core --full`
23
+ returns both the skill and copy-paste CLI flows.
24
+
5
25
  ## 0.1.9 - 2026-06-02
6
26
 
7
27
  - Harden agent-facing CLI recovery with examples on root/group help, structured
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentpool-cli
3
- Version: 0.1.9
3
+ Version: 0.1.11
4
4
  Summary: Make full use of every coding-agent subscription you pay for: a local CLI + MCP server that surfaces live usage limits and offloads work to providers with headroom.
5
5
  Author: AgentPool contributors
6
6
  License-Expression: MIT
@@ -103,6 +103,13 @@ notes.
103
103
 
104
104
  ## Quickstart
105
105
 
106
+ For AI agents, start by loading the bundled version-matched skill:
107
+
108
+ ```bash
109
+ agentpool skills get agentpool
110
+ agentpool skills get core --full
111
+ ```
112
+
106
113
  ```bash
107
114
  agentpool init
108
115
  agentpool setup cursor
@@ -140,9 +147,10 @@ agentpool terminate <session-id> --json
140
147
 
141
148
  `spawn` defaults `--initial-prompt-mode` to `provider_default`. For Codex CLI
142
149
  this resolves to `arg`, which passes the first task as the Codex prompt argument
143
- instead of relying on a paste-and-submit startup cycle. Codex workers also
144
- accept process-local overrides such as `--reasoning-effort high` and
145
- `--service-tier fast`; AgentPool does not edit your Codex config.
150
+ instead of relying on a paste-and-submit startup cycle. Providers that expose
151
+ reasoning controls also accept process-local overrides such as
152
+ `--reasoning-effort high`; Codex also accepts `--service-tier priority`.
153
+ AgentPool does not edit your provider config.
146
154
 
147
155
  For AgentPool-created edit isolation, choose worktrees explicitly:
148
156
 
@@ -196,13 +204,13 @@ shell script must avoid provider TUI fallback probes.
196
204
 
197
205
  | Provider id | Command | Usage status in v0.1 | Model pinning |
198
206
  | --- | --- | --- | --- |
199
- | `codex-cli` | `codex` | native local app-server rate-limit probe; CodexBar optional | `--model` |
207
+ | `codex-cli` | `codex` | native local app-server rate-limit probe; CodexBar optional | `--model` + config-scoped reasoning/service tier |
200
208
  | `cursor-cli` | `agent` or `cursor-agent` | optional CodexBar Cursor usage; native CLI usage is interactive `/usage` only | `--model` + read-only `--mode ask` |
201
- | `claude-code` | `claude` | temporary `/usage` probe; ccusage telemetry optional | `--model` |
209
+ | `claude-code` | `claude` | temporary `/usage` probe; ccusage telemetry optional | `--model` + `--effort` |
202
210
  | `devin-cli` | `devin` | Devin/Windsurf plan-status API from existing CLI auth, with `/usage` fallback | `--model` |
203
211
  | `copilot-cli` | `gh copilot` | GitHub Copilot usage API from env or `gh auth token` | forwarded `--model` |
204
- | `droid-cli` | `droid` | unknown unless surfaced by future safe probe | process-local settings file |
205
- | `opencode` | `opencode` | configured adapter; usage unknown in this alpha | catalog-driven |
212
+ | `droid-cli` | `droid` | unknown unless surfaced by future safe probe | process-local settings file + `--reasoning-effort` |
213
+ | `opencode` | `opencode` | configured adapter; usage unknown in this alpha | `--model` with provider/model ids |
206
214
 
207
215
  Compatibility note: the PRD calls Factory's coding product `factory-droid`, but
208
216
  AgentPool exposes it as `droid-cli` because the installed command is `droid`.
@@ -312,6 +320,9 @@ summary, provider models, preferences, spawn, observe, send, interrupt,
312
320
  collect, artifact manifest, transcript paging, and terminate. Add opt-in
313
321
  toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
314
322
 
323
+ Shell-capable agents can use `agentpool skills get agentpool` instead of MCP
324
+ resources to load the same core usage guidance from the installed CLI.
325
+
315
326
  Coding agents with shell access should prefer the CLI path. It is more
316
327
  token-efficient because large worker output stays in artifact files and
317
328
  `observe`/`collect` return compact manifests by default. MCP remains first-class
@@ -82,6 +82,13 @@ notes.
82
82
 
83
83
  ## Quickstart
84
84
 
85
+ For AI agents, start by loading the bundled version-matched skill:
86
+
87
+ ```bash
88
+ agentpool skills get agentpool
89
+ agentpool skills get core --full
90
+ ```
91
+
85
92
  ```bash
86
93
  agentpool init
87
94
  agentpool setup cursor
@@ -119,9 +126,10 @@ agentpool terminate <session-id> --json
119
126
 
120
127
  `spawn` defaults `--initial-prompt-mode` to `provider_default`. For Codex CLI
121
128
  this resolves to `arg`, which passes the first task as the Codex prompt argument
122
- instead of relying on a paste-and-submit startup cycle. Codex workers also
123
- accept process-local overrides such as `--reasoning-effort high` and
124
- `--service-tier fast`; AgentPool does not edit your Codex config.
129
+ instead of relying on a paste-and-submit startup cycle. Providers that expose
130
+ reasoning controls also accept process-local overrides such as
131
+ `--reasoning-effort high`; Codex also accepts `--service-tier priority`.
132
+ AgentPool does not edit your provider config.
125
133
 
126
134
  For AgentPool-created edit isolation, choose worktrees explicitly:
127
135
 
@@ -175,13 +183,13 @@ shell script must avoid provider TUI fallback probes.
175
183
 
176
184
  | Provider id | Command | Usage status in v0.1 | Model pinning |
177
185
  | --- | --- | --- | --- |
178
- | `codex-cli` | `codex` | native local app-server rate-limit probe; CodexBar optional | `--model` |
186
+ | `codex-cli` | `codex` | native local app-server rate-limit probe; CodexBar optional | `--model` + config-scoped reasoning/service tier |
179
187
  | `cursor-cli` | `agent` or `cursor-agent` | optional CodexBar Cursor usage; native CLI usage is interactive `/usage` only | `--model` + read-only `--mode ask` |
180
- | `claude-code` | `claude` | temporary `/usage` probe; ccusage telemetry optional | `--model` |
188
+ | `claude-code` | `claude` | temporary `/usage` probe; ccusage telemetry optional | `--model` + `--effort` |
181
189
  | `devin-cli` | `devin` | Devin/Windsurf plan-status API from existing CLI auth, with `/usage` fallback | `--model` |
182
190
  | `copilot-cli` | `gh copilot` | GitHub Copilot usage API from env or `gh auth token` | forwarded `--model` |
183
- | `droid-cli` | `droid` | unknown unless surfaced by future safe probe | process-local settings file |
184
- | `opencode` | `opencode` | configured adapter; usage unknown in this alpha | catalog-driven |
191
+ | `droid-cli` | `droid` | unknown unless surfaced by future safe probe | process-local settings file + `--reasoning-effort` |
192
+ | `opencode` | `opencode` | configured adapter; usage unknown in this alpha | `--model` with provider/model ids |
185
193
 
186
194
  Compatibility note: the PRD calls Factory's coding product `factory-droid`, but
187
195
  AgentPool exposes it as `droid-cli` because the installed command is `droid`.
@@ -291,6 +299,9 @@ summary, provider models, preferences, spawn, observe, send, interrupt,
291
299
  collect, artifact manifest, transcript paging, and terminate. Add opt-in
292
300
  toolsets with `agentpool mcp --toolsets default,stats,sessions,leases,worktrees`.
293
301
 
302
+ Shell-capable agents can use `agentpool skills get agentpool` instead of MCP
303
+ resources to load the same core usage guidance from the installed CLI.
304
+
294
305
  Coding agents with shell access should prefer the CLI path. It is more
295
306
  token-efficient because large worker output stays in artifact files and
296
307
  `observe`/`collect` return compact manifests by default. MCP remains first-class
@@ -96,7 +96,9 @@ that directory is acceptable. Then observe again.
96
96
  When spawning Codex workers, leave `initial_prompt_mode` unset unless you have a
97
97
  reason to force it. The provider default uses the Codex CLI prompt argument path.
98
98
  Pass `reasoning_effort="high"` or another explicit value when the task needs a
99
- different Codex reasoning setting from the catalog default.
99
+ different provider reasoning setting from the catalog default. AgentPool
100
+ forwards that to Codex config overrides, Claude Code `--effort`, or Droid
101
+ `--reasoning-effort` depending on the selected provider.
100
102
 
101
103
  ## Safety Boundaries
102
104
 
@@ -1,5 +1,12 @@
1
1
  # Examples
2
2
 
3
+ Load agent guidance from the installed CLI:
4
+
5
+ ```bash
6
+ agentpool skills get agentpool
7
+ agentpool skills get core --full
8
+ ```
9
+
3
10
  Spawn a fake question worker:
4
11
 
5
12
  ```bash
@@ -100,8 +100,10 @@ initial prompt as a process argument and avoids first-turn paste/submission
100
100
  drift.
101
101
 
102
102
  `spawn_worker.reasoning_effort` and `spawn_worker.service_tier` are optional
103
- provider controls. For `codex-cli`, they become process-local Codex overrides;
104
- AgentPool does not edit the user's Codex config.
103
+ provider controls. For `claude-code`, reasoning becomes `--effort`; for
104
+ `droid-cli`, it becomes `--reasoning-effort`; for `codex-cli`, reasoning and
105
+ service tier become process-local Codex overrides. AgentPool does not edit the
106
+ user's provider config.
105
107
 
106
108
  ## Output Detail And Lockdown
107
109
 
@@ -8,6 +8,7 @@ It is not a ranking table and it must not be used to implement `provider=auto`.
8
8
 
9
9
  ```bash
10
10
  agentpool models
11
+ agentpool models --provider claude-code
11
12
  agentpool models --provider droid-cli
12
13
  agentpool models --provider codex-cli --json
13
14
  agentpool models validate --path ~/.agentpool/models.json
@@ -20,6 +21,8 @@ Each provider entry can describe:
20
21
  - `models`: known model slugs, display names, aliases, confidence, and metadata.
21
22
  - `model_arg`: the CLI flag used by providers with native model selection.
22
23
  - `model_selection`: non-flag pinning mode, such as Droid runtime settings.
24
+ - `reasoning_effort_arg`: the CLI flag used by providers with native effort
25
+ selection, such as Claude Code `--effort` or Droid `--reasoning-effort`.
23
26
  - `submit_keys`: tmux keys needed for interactive submit quirks.
24
27
  - `quirks`: operator-facing notes for harness behavior.
25
28
 
@@ -79,10 +82,18 @@ This lets a user or a primary agent pin a local default without changing the
79
82
  provider adapter. Explicit `--model` on `agentpool spawn` or `agentpool smoke`
80
83
  still overrides both catalog and provider config.
81
84
 
82
- Compatibility note: the PRD calls the Factory coding product `factory-droid`,
83
- but AgentPool exposes it as `droid-cli` because the installed command is
84
- `droid`. Keep the catalog keyed by `droid-cli` unless a separate Factory Droid
85
- binary or harness appears.
85
+ ## Claude Code
86
+
87
+ Claude Code supports aliases such as `sonnet`, `opus`, `haiku`, and `opusplan`,
88
+ plus full model names such as `claude-opus-4-8`. The catalog also includes
89
+ supported `[1m]` suffix entries, for example `claude-opus-4-8[1m]`. Account and
90
+ plan access still belongs to Claude Code; AgentPool only forwards the selected
91
+ model with `--model`.
92
+
93
+ Claude Code effort is model-dependent. AgentPool stores the supported effort
94
+ levels per model and forwards `--reasoning-effort` as Claude Code `--effort`.
95
+ When you pass an explicit Claude model without an effort, AgentPool uses that
96
+ model's catalog default.
86
97
 
87
98
  ## Droid
88
99
 
@@ -92,6 +103,18 @@ the configured or requested model by writing a process-local settings file under
92
103
  This avoids mutating the user's global Factory settings and avoids accidentally
93
104
  using a custom default model backed by a local proxy.
94
105
 
106
+ Compatibility note: the PRD calls the Factory coding product `factory-droid`,
107
+ but AgentPool exposes it as `droid-cli` because the installed command is
108
+ `droid`. Keep the catalog keyed by `droid-cli` unless a separate Factory Droid
109
+ binary or harness appears.
110
+
111
+ ## Cursor And OpenCode
112
+
113
+ Cursor Agent CLI exposes reasoning and 1M context variants as model ids from
114
+ `agent models`, so AgentPool lists those explicit ids instead of inventing a
115
+ separate effort flag. OpenCode model ids use provider/model form, for example
116
+ `opencode/claude-opus-4-8`, and AgentPool forwards them with `--model`.
117
+
95
118
  ## Catalog Confidence
96
119
 
97
120
  Model lists are conservative. Providers that expose a complete local list, such
@@ -37,10 +37,17 @@ Model pinning behavior:
37
37
  - `cursor-cli` uses `agent` or `cursor-agent`, adds `--workspace <path>`, and
38
38
  uses `--mode ask` for `read_only` isolation because Cursor documents Ask mode
39
39
  as read-only Q&A. Its provider default initial prompt mode is `arg`, matching
40
- Cursor's documented `[prompt...]` argument.
40
+ Cursor's documented `[prompt...]` argument. Cursor's reasoning and 1M context
41
+ variants are explicit model ids from `agent models`, not a separate effort
42
+ flag.
43
+ - `claude-code` uses `--model` for model pinning and `--effort` for supported
44
+ Claude Code effort levels. Full model names such as `claude-opus-4-8` and
45
+ `[1m]` suffixes are catalog entries, but account and plan access still belong
46
+ to Claude Code.
41
47
  - `droid-cli` does not expose interactive `--model`; AgentPool
42
48
  writes a minimal `~/.agentpool/runtime-settings/droid-<model>.json` and starts
43
- Droid with `--settings <path>`.
49
+ Droid with `--settings <path>`. Droid `exec` exposes reasoning through
50
+ `--reasoning-effort`, which AgentPool forwards when requested.
44
51
  - AgentPool does not edit or persist provider credentials or user defaults.
45
52
 
46
53
  Tmux submit behavior:
@@ -37,12 +37,12 @@ Cursor has two separate surfaces: `cursor` is an MCP host integration, while
37
37
  | `fake-limit` | native fake | yes | yes | pending | pending | pending | pending | pending | tests | Limit warning fixture. |
38
38
  | `fake-patch` | native fake | yes | yes | pending | pending | pending | pending | pending | tests | Worktree/edit fixture; use only with explicit mutating tests. |
39
39
  | `codex-cli` | native + CodexBar combined | yes | yes | yes | yes | yes | yes | yes | 2026-05-09 | Verified with explicit `--model gpt-5.5` on Codex CLI v0.130.0. Known startup trust prompts can be accepted only for the smoke temp repo. The harness detects Codex update prompts and skips them before sending task text. Codex tmux submit uses `C-m`. Codex usage supports 5h and weekly windows. |
40
- | `cursor-cli` | CodexBar cursor optional, native unknown | partial | yes | pending | yes | yes | yes | yes | 2026-05-24 | Local command is `agent` v2026.05.24-dda726e. Adapter pins models with `--model`, sets `--workspace`, and uses `--mode ask` for read-only. Local smoke reached Cursor login/auth prompt and was terminated cleanly; full completion requires `agent login` to make the installed CLI usable. `agent models` returned no account models on this machine. CodexBar cursor usage returned primary/secondary/tertiary windows through the optional backend. |
41
- | `claude-code` | native `/usage` + CodexBar cli | yes | yes | yes | n/a | yes | yes | yes | 2026-05-09 | Verified with explicit `--model sonnet`; generated `AGENTPOOL_SMOKE_DONE`, collected, terminated, and left git clean. Startup can show Warp/tmux focus and optional MCP warnings; they did not block lifecycle detection. CodexBar safe source gives 5h usage; native `/usage` is interactive. |
40
+ | `cursor-cli` | CodexBar cursor optional, native unknown | partial | yes | pending | yes | yes | yes | yes | 2026-06-05 | Local command is `agent` v2026.06.02-8c11d9f. Adapter pins models with `--model`, sets `--workspace`, and uses `--mode ask` for read-only. `agent models` returned account models including Composer 2.5, Claude Opus 4.8 1M variants, and GPT 5.5/5.4 variants. CodexBar cursor usage returned primary/secondary/tertiary windows through the optional backend. |
41
+ | `claude-code` | native `/usage` + CodexBar cli | yes | yes | yes | n/a | yes | yes | yes | 2026-06-05 | Verified previously with explicit `--model sonnet`; generated `AGENTPOOL_SMOKE_DONE`, collected, terminated, and left git clean. Local Claude Code v2.1.165 documents `--model` full names such as `claude-opus-4-8` and `--effort low/medium/high/xhigh/max`; AgentPool forwards both. Startup can show Warp/tmux focus and optional MCP warnings; they did not block lifecycle detection. CodexBar safe source gives 5h usage; native `/usage` is interactive. |
42
42
  | `copilot-cli` | native GitHub API + CodexBar api | yes | yes | yes | n/a | yes | yes | yes | 2026-05-09 | Verified with explicit `--model gpt-5.5`; GitHub Copilot CLI generated `AGENTPOOL_SMOKE_DONE`, collected, terminated, and left git clean. Usage percentages are available through native/CodexBar API paths. |
43
43
  | `devin-cli` | native plan-status API | yes | yes | yes | n/a | yes | yes | yes | 2026-05-09 | Verified with explicit `--model codex`; generated `AGENTPOOL_SMOKE_DONE`, collected, terminated, and left git clean. Native usage includes daily, weekly, and on-demand balance. |
44
- | `droid-cli` | unknown | yes | yes | yes | n/a | yes | yes | yes | 2026-05-09 | Verified with explicit `--model glm-5.1`, which AgentPool applies through a process-local Droid `--settings` file. This avoids the user's custom default localhost-backed model. No safe subscription quota probe confirmed. |
45
- | `opencode` | CodexBar mapped, native unknown | skipped | skipped | skipped | skipped | skipped | skipped | skipped | skipped | Skipped for now because no OpenCode Go plan is available. CodexBar is mapped as a safe optional usage backend; native usage remains unknown. |
44
+ | `droid-cli` | unknown | yes | yes | yes | n/a | yes | yes | yes | 2026-06-05 | Verified previously with explicit `--model glm-5.1`, which AgentPool applies through a process-local Droid `--settings` file. This avoids the user's custom default localhost-backed model. Local Droid v0.122.0 exposes `--reasoning-effort`; AgentPool forwards it. No safe subscription quota probe confirmed. |
45
+ | `opencode` | native unknown | skipped | skipped | skipped | skipped | skipped | skipped | skipped | 2026-06-05 | Local `opencode models` returned provider/model ids, and AgentPool can forward them with `--model`. Real lifecycle smoke remains skipped; native usage remains unknown. |
46
46
 
47
47
  ## Smoke Commands
48
48
 
@@ -7,6 +7,14 @@ plane, not a router: you pick the provider and model explicitly.
7
7
 
8
8
  ## 1. Verify the environment
9
9
 
10
+ AI agents should load the bundled version-matched skill before inferring flows
11
+ from flags:
12
+
13
+ ```bash
14
+ agentpool skills get agentpool
15
+ agentpool skills get core --full
16
+ ```
17
+
10
18
  ```bash
11
19
  agentpool init
12
20
  agentpool doctor --deep --privacy
@@ -58,6 +66,7 @@ Use `--isolation worktree` instead of `read_only` for tasks that edit files.
58
66
 
59
67
  ## Next
60
68
 
69
+ - CLI agent guidance: `agentpool skills get agentpool`
61
70
  - Full agent guidance: `agentpool://skill.md`
62
71
  - Setup and privacy detail: `agentpool://onboarding`
63
72
  - User delegation preferences: `agentpool://preferences.md`
@@ -75,7 +75,14 @@ agentpool usage-summary --provider claude-code --refresh --json
75
75
  agentpool models --provider claude-code
76
76
  agentpool spawn \
77
77
  --provider claude-code \
78
+ --model claude-opus-4-8 \
79
+ --reasoning-effort high \
78
80
  --repo . \
79
81
  --task "Inspect this repo read-only and summarize the main entry points." \
80
82
  --isolation read_only
81
83
  ```
84
+
85
+ Claude Code accepts aliases such as `sonnet` and `opus`, full names such as
86
+ `claude-opus-4-8`, and supported `[1m]` suffixes such as
87
+ `claude-opus-4-8[1m]`. Availability of 1M context depends on the Claude account
88
+ and plan; AgentPool only forwards the explicit model id.
@@ -50,4 +50,6 @@ agentpool spawn \
50
50
 
51
51
  AgentPool launches Cursor with `--workspace <repo>` and uses `--mode ask` for
52
52
  read-only isolation. Cursor's `--trust` flag is documented for headless print
53
- mode, so AgentPool does not use it for interactive tmux workers.
53
+ mode, so AgentPool does not use it for interactive tmux workers. Cursor exposes
54
+ reasoning and 1M context as explicit model ids from `agent models`; choose those
55
+ ids with `--model` when you want them.
@@ -45,6 +45,7 @@ agentpool models --provider droid-cli
45
45
  agentpool spawn \
46
46
  --provider droid-cli \
47
47
  --model glm-5.1 \
48
+ --reasoning-effort high \
48
49
  --repo . \
49
50
  --task "Inspect this repo read-only and summarize the main entry points." \
50
51
  --isolation read_only
@@ -52,4 +53,5 @@ agentpool spawn \
52
53
 
53
54
  AgentPool pins Droid models through a process-local `--settings` file under
54
55
  `~/.agentpool/runtime-settings/` so it does not mutate your global Factory
55
- settings.
56
+ settings. Droid reasoning effort is forwarded with `--reasoning-effort` when
57
+ you provide it.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agentpool-cli"
7
- version = "0.1.9"
7
+ version = "0.1.11"
8
8
  description = "Make full use of every coding-agent subscription you pay for: a local CLI + MCP server that surfaces live usage limits and offloads work to providers with headroom."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -54,5 +54,13 @@ include = [
54
54
 
55
55
  [tool.hatch.build.targets.wheel.force-include]
56
56
  "docs/agentpool-skill.md" = "agentpool/docs/agentpool-skill.md"
57
+ "docs/examples.md" = "agentpool/docs/examples.md"
57
58
  "docs/onboarding.md" = "agentpool/docs/onboarding.md"
58
59
  "docs/quickstart.md" = "agentpool/docs/quickstart.md"
60
+
61
+ [tool.hatch.build.targets.sdist]
62
+ exclude = [
63
+ "/.firecrawl",
64
+ "/demo",
65
+ "/dist",
66
+ ]
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.sidduHERE/agentpool",
4
4
  "title": "AgentPool",
5
5
  "description": "See each coding-agent subscription's live limits and offload work to one with headroom.",
6
- "version": "0.1.9",
6
+ "version": "0.1.11",
7
7
  "repository": {
8
8
  "url": "https://github.com/sidduHERE/agentpool",
9
9
  "source": "github"
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "registryType": "pypi",
15
15
  "identifier": "agentpool-cli",
16
- "version": "0.1.9",
16
+ "version": "0.1.11",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
@@ -1,3 +1,3 @@
1
1
  """AgentPool local agent control plane."""
2
2
 
3
- __version__ = "0.1.9"
3
+ __version__ = "0.1.11"
@@ -4,6 +4,7 @@ import json
4
4
  import os
5
5
  import shutil
6
6
  import sys
7
+ from importlib import resources
7
8
  from pathlib import Path
8
9
  from typing import Annotated, Any, Callable
9
10
 
@@ -196,6 +197,14 @@ app = AgentPoolTyper(
196
197
  cls=AgentPoolGroup,
197
198
  help=(
198
199
  "Use every coding-agent subscription you pay for: see live usage limits and offload work to providers with headroom.\n\n"
200
+ "Start here (for AI agents):\n"
201
+ " agentpool skills get agentpool\n\n"
202
+ " Skills ship with the CLI, stay version-matched, and include workflow patterns, safety boundaries, "
203
+ "and copy-paste examples. Prefer this over guessing from flag docs alone.\n\n"
204
+ " skills \\[list] List available skills\n"
205
+ " skills get agentpool Core CLI + MCP delegation guide\n"
206
+ " skills get core --full Include quickstart and examples\n"
207
+ " skills path \\[name] Print bundled skill/docs path\n\n"
199
208
  "Examples:\n"
200
209
  " agentpool inventory --json\n"
201
210
  " cat task.md | agentpool spawn --provider codex-cli --repo . --task-stdin\n"
@@ -206,6 +215,19 @@ app = AgentPoolTyper(
206
215
  invoke_without_command=True,
207
216
  no_args_is_help=True,
208
217
  )
218
+ skills_app = AgentPoolTyper(
219
+ cls=AgentPoolGroup,
220
+ help=(
221
+ "List and retrieve bundled AgentPool skill content.\n\n"
222
+ "Examples:\n"
223
+ " agentpool skills\n"
224
+ " agentpool skills get agentpool\n"
225
+ " agentpool skills get core --full\n"
226
+ " agentpool skills path agentpool"
227
+ ),
228
+ invoke_without_command=True,
229
+ no_args_is_help=False,
230
+ )
209
231
  config_app = AgentPoolTyper(
210
232
  cls=AgentPoolGroup,
211
233
  help=(
@@ -242,12 +264,26 @@ worktrees_app = AgentPoolTyper(
242
264
  " agentpool worktrees cleanup --session-id <session-id> --dry-run --json"
243
265
  ),
244
266
  )
267
+ app.add_typer(skills_app, name="skills")
245
268
  app.add_typer(config_app, name="config")
246
269
  app.add_typer(leases_app, name="leases")
247
270
  app.add_typer(session_app, name="session")
248
271
  app.add_typer(worktrees_app, name="worktrees")
249
272
  console = Console()
250
273
 
274
+ SKILL_DEFINITIONS: dict[str, dict[str, Any]] = {
275
+ "agentpool": {
276
+ "aliases": ["core"],
277
+ "filename": "agentpool-skill.md",
278
+ "description": "Core AgentPool CLI + MCP delegation guide. Read this before spawning workers.",
279
+ "references": ["quickstart.md", "examples.md"],
280
+ }
281
+ }
282
+ SKILL_ALIASES = {
283
+ alias: name for name, definition in SKILL_DEFINITIONS.items() for alias in [name, *definition["aliases"]]
284
+ }
285
+ PROJECT_ROOT = Path(__file__).resolve().parents[2]
286
+
251
287
 
252
288
  @app.callback()
253
289
  def root(
@@ -265,6 +301,158 @@ def print_data(data: object, json_output: bool) -> None:
265
301
  console.print(data)
266
302
 
267
303
 
304
+ def _docs_resource(filename: str | None = None) -> Any:
305
+ docs = resources.files("agentpool").joinpath("docs")
306
+ return docs.joinpath(filename) if filename else docs
307
+
308
+
309
+ def _read_packaged_doc(filename: str) -> str:
310
+ packaged = _docs_resource(filename)
311
+ if packaged.is_file():
312
+ return packaged.read_text(encoding="utf-8")
313
+ return (PROJECT_ROOT / "docs" / filename).read_text(encoding="utf-8")
314
+
315
+
316
+ def _resource_display_path(filename: str | None = None) -> str:
317
+ packaged = _docs_resource(filename)
318
+ if packaged.is_file() or (filename is None and packaged.is_dir()):
319
+ return str(packaged)
320
+ fallback_docs = PROJECT_ROOT / "docs"
321
+ return str(fallback_docs / filename) if filename else str(fallback_docs)
322
+
323
+
324
+ def _skill_entry(name: str) -> dict[str, Any]:
325
+ definition = SKILL_DEFINITIONS[name]
326
+ return {
327
+ "name": name,
328
+ "aliases": definition["aliases"],
329
+ "description": definition["description"],
330
+ "full_available": bool(definition.get("references")),
331
+ }
332
+
333
+
334
+ def _resolve_skill_name(name: str) -> str:
335
+ normalized = name.strip().lower()
336
+ if normalized in SKILL_ALIASES:
337
+ return SKILL_ALIASES[normalized]
338
+ raise ToolError(
339
+ "INVALID_REQUEST",
340
+ f"Unknown skill {name!r}.",
341
+ {"example": "agentpool skills list"},
342
+ )
343
+
344
+
345
+ def _skill_text(name: str, *, full: bool = False) -> str:
346
+ definition = SKILL_DEFINITIONS[name]
347
+ chunks = [_read_packaged_doc(definition["filename"])]
348
+ if full:
349
+ for filename in definition.get("references") or []:
350
+ title = filename.removesuffix(".md").replace("-", " ").title()
351
+ chunks.append(f"\n\n# Reference: {title}\n\n{_read_packaged_doc(filename)}")
352
+ return "".join(chunks)
353
+
354
+
355
+ def _print_skills_list(json_output: bool) -> None:
356
+ data = {"skills": [_skill_entry(name) for name in sorted(SKILL_DEFINITIONS)]}
357
+ if json_output:
358
+ console.print_json(json.dumps(data, default=str))
359
+ return
360
+ for skill in data["skills"]:
361
+ aliases = f" (aliases: {', '.join(skill['aliases'])})" if skill["aliases"] else ""
362
+ console.print(f" {skill['name']:<12} {skill['description']}{aliases}")
363
+
364
+
365
+ @skills_app.callback(invoke_without_command=True)
366
+ def skills_root(
367
+ ctx: typer.Context,
368
+ json_output: Annotated[bool, typer.Option("--json", help="Emit JSON.")] = False,
369
+ ) -> None:
370
+ """List bundled skills when no subcommand is provided."""
371
+ if ctx.invoked_subcommand is None:
372
+ _print_skills_list(json_output)
373
+ raise typer.Exit()
374
+
375
+
376
+ @skills_app.command("list")
377
+ def skills_list(json_output: Annotated[bool, typer.Option("--json", help="Emit JSON.")] = False) -> None:
378
+ """List bundled skills.
379
+
380
+ Examples:
381
+ agentpool skills list
382
+ agentpool skills list --json
383
+ """
384
+ _print_skills_list(json_output)
385
+
386
+
387
+ @skills_app.command("get")
388
+ def skills_get(
389
+ name: Annotated[str | None, typer.Argument(help="Skill name, for example: agentpool or core.")] = None,
390
+ full: Annotated[bool, typer.Option("--full", help="Include quickstart and examples with the core skill.")] = False,
391
+ all_skills: Annotated[bool, typer.Option("--all", help="Output every bundled skill.")] = False,
392
+ json_output: Annotated[bool, typer.Option("--json", help="Emit JSON.")] = False,
393
+ ) -> None:
394
+ """Output bundled skill content.
395
+
396
+ Examples:
397
+ agentpool skills get agentpool
398
+ agentpool skills get core --full
399
+ agentpool skills get --all --json
400
+ """
401
+ try:
402
+ if all_skills:
403
+ names = sorted(SKILL_DEFINITIONS)
404
+ elif name:
405
+ names = [_resolve_skill_name(name)]
406
+ else:
407
+ raise ToolError(
408
+ "INVALID_REQUEST",
409
+ "Provide a skill name or --all.",
410
+ {"example": "agentpool skills get agentpool"},
411
+ )
412
+ skills = [
413
+ {
414
+ **_skill_entry(skill_name),
415
+ "full": full,
416
+ "path": _resource_display_path(SKILL_DEFINITIONS[skill_name]["filename"]),
417
+ "text": _skill_text(skill_name, full=full),
418
+ }
419
+ for skill_name in names
420
+ ]
421
+ if json_output:
422
+ console.print_json(json.dumps({"skills": skills}, default=str))
423
+ return
424
+ console.print("\n\n".join(skill["text"] for skill in skills), markup=False)
425
+ except ToolError as exc:
426
+ handle_tool_error(exc, json_output)
427
+
428
+
429
+ @skills_app.command("path")
430
+ def skills_path(
431
+ name: Annotated[str | None, typer.Argument(help="Optional skill name, for example: agentpool or core.")] = None,
432
+ json_output: Annotated[bool, typer.Option("--json", help="Emit JSON.")] = False,
433
+ ) -> None:
434
+ """Print bundled skill/docs path.
435
+
436
+ Examples:
437
+ agentpool skills path
438
+ agentpool skills path agentpool
439
+ agentpool skills path core --json
440
+ """
441
+ try:
442
+ if name:
443
+ skill_name = _resolve_skill_name(name)
444
+ path = _resource_display_path(SKILL_DEFINITIONS[skill_name]["filename"])
445
+ data = {"name": skill_name, "path": path}
446
+ else:
447
+ data = {"path": _resource_display_path()}
448
+ if json_output:
449
+ console.print_json(json.dumps(data, default=str))
450
+ return
451
+ console.print(data["path"], markup=False)
452
+ except ToolError as exc:
453
+ handle_tool_error(exc, json_output)
454
+
455
+
268
456
  def _env_flag(name: str) -> bool:
269
457
  return os.environ.get(name, "").strip().lower() in {"1", "true", "yes", "on"}
270
458
 
@@ -1093,6 +1281,10 @@ def models_command(
1093
1281
  console.print(f"default: {row['default_model'] or ''}")
1094
1282
  console.print(f"smoke: {row['smoke_model'] or ''}")
1095
1283
  console.print(f"selection: {row['model_selection'] or ''}")
1284
+ if row.get("reasoning_effort_arg"):
1285
+ console.print(f"reasoning: {row['reasoning_effort_arg']}")
1286
+ elif row.get("reasoning_effort_config_key"):
1287
+ console.print(f"reasoning config: {row['reasoning_effort_config_key']}")
1096
1288
  console.print(f"catalog: {row['catalog_completeness'] or ''}")
1097
1289
  if row["quirks"]:
1098
1290
  console.print("quirks:")
@@ -1460,7 +1652,7 @@ def spawn(
1460
1652
  ] = None,
1461
1653
  service_tier: Annotated[
1462
1654
  str | None,
1463
- typer.Option("--service-tier", help="Provider service tier override when supported, for example fast."),
1655
+ typer.Option("--service-tier", help="Provider service tier override when supported, for example priority."),
1464
1656
  ] = None,
1465
1657
  json_output: Annotated[bool, typer.Option("--json", help="Emit JSON.")] = False,
1466
1658
  ) -> None: