agentpool-cli 0.1.0__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.
- agentpool_cli-0.1.0/.cursor/mcp.json.example +9 -0
- agentpool_cli-0.1.0/.github/CODEOWNERS +1 -0
- agentpool_cli-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
- agentpool_cli-0.1.0/.github/ISSUE_TEMPLATE/provider_probe.md +34 -0
- agentpool_cli-0.1.0/.github/dependabot.yml +6 -0
- agentpool_cli-0.1.0/.github/workflows/ci.yml +65 -0
- agentpool_cli-0.1.0/.github/workflows/release.yml +101 -0
- agentpool_cli-0.1.0/.gitignore +15 -0
- agentpool_cli-0.1.0/.mcp.json.example +10 -0
- agentpool_cli-0.1.0/AGENTS.md +28 -0
- agentpool_cli-0.1.0/CHANGELOG.md +10 -0
- agentpool_cli-0.1.0/CONTRIBUTING.md +80 -0
- agentpool_cli-0.1.0/LICENSE +21 -0
- agentpool_cli-0.1.0/PKG-INFO +292 -0
- agentpool_cli-0.1.0/README.md +272 -0
- agentpool_cli-0.1.0/SECURITY.md +85 -0
- agentpool_cli-0.1.0/docs/agent-cli-and-mcp.md +77 -0
- agentpool_cli-0.1.0/docs/agentpool-skill.md +85 -0
- agentpool_cli-0.1.0/docs/architecture.md +21 -0
- agentpool_cli-0.1.0/docs/examples/README.md +35 -0
- agentpool_cli-0.1.0/docs/examples.md +20 -0
- agentpool_cli-0.1.0/docs/install.md +171 -0
- agentpool_cli-0.1.0/docs/mcp-clients.md +268 -0
- agentpool_cli-0.1.0/docs/mcp-tools.md +137 -0
- agentpool_cli-0.1.0/docs/model-catalog.md +100 -0
- agentpool_cli-0.1.0/docs/onboarding.md +169 -0
- agentpool_cli-0.1.0/docs/provider-adapters.md +58 -0
- agentpool_cli-0.1.0/docs/provider-lifecycle-matrix.md +92 -0
- agentpool_cli-0.1.0/docs/release.md +112 -0
- agentpool_cli-0.1.0/docs/security.md +29 -0
- agentpool_cli-0.1.0/docs/setup-claude-code.md +81 -0
- agentpool_cli-0.1.0/docs/setup-codex.md +137 -0
- agentpool_cli-0.1.0/docs/setup-copilot.md +73 -0
- agentpool_cli-0.1.0/docs/setup-cursor-cli.md +53 -0
- agentpool_cli-0.1.0/docs/setup-cursor.md +51 -0
- agentpool_cli-0.1.0/docs/setup-devin.md +48 -0
- agentpool_cli-0.1.0/docs/setup-droid.md +55 -0
- agentpool_cli-0.1.0/docs/stats.md +100 -0
- agentpool_cli-0.1.0/docs/usage-detection.md +53 -0
- agentpool_cli-0.1.0/docs/usage-probe-matrix.md +123 -0
- agentpool_cli-0.1.0/pyproject.toml +53 -0
- agentpool_cli-0.1.0/scripts/install.sh +139 -0
- agentpool_cli-0.1.0/server.json +12 -0
- agentpool_cli-0.1.0/src/agentpool/__init__.py +3 -0
- agentpool_cli-0.1.0/src/agentpool/agent_io.py +134 -0
- agentpool_cli-0.1.0/src/agentpool/artifacts.py +151 -0
- agentpool_cli-0.1.0/src/agentpool/cli.py +1199 -0
- agentpool_cli-0.1.0/src/agentpool/config.py +373 -0
- agentpool_cli-0.1.0/src/agentpool/event_detection.py +150 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/__init__.py +1 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/__init__.py +1 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_approval_agent.py +16 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_common.py +44 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_completed_agent.py +13 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_idle_agent.py +16 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_limit_agent.py +14 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_patch_agent.py +17 -0
- agentpool_cli-0.1.0/src/agentpool/fixtures/fake_agents/fake_question_agent.py +16 -0
- agentpool_cli-0.1.0/src/agentpool/git_worktree.py +144 -0
- agentpool_cli-0.1.0/src/agentpool/mcp/__init__.py +1 -0
- agentpool_cli-0.1.0/src/agentpool/mcp/resources.py +64 -0
- agentpool_cli-0.1.0/src/agentpool/mcp/tools.py +259 -0
- agentpool_cli-0.1.0/src/agentpool/mcp_server.py +487 -0
- agentpool_cli-0.1.0/src/agentpool/models.py +310 -0
- agentpool_cli-0.1.0/src/agentpool/onboarding.py +1279 -0
- agentpool_cli-0.1.0/src/agentpool/policy.py +63 -0
- agentpool_cli-0.1.0/src/agentpool/provider_model_catalog.json +997 -0
- agentpool_cli-0.1.0/src/agentpool/providers/__init__.py +3 -0
- agentpool_cli-0.1.0/src/agentpool/providers/base.py +411 -0
- agentpool_cli-0.1.0/src/agentpool/providers/registry.py +139 -0
- agentpool_cli-0.1.0/src/agentpool/redaction.py +30 -0
- agentpool_cli-0.1.0/src/agentpool/runtimes/__init__.py +3 -0
- agentpool_cli-0.1.0/src/agentpool/runtimes/base.py +36 -0
- agentpool_cli-0.1.0/src/agentpool/runtimes/tmux.py +133 -0
- agentpool_cli-0.1.0/src/agentpool/session_manager.py +1061 -0
- agentpool_cli-0.1.0/src/agentpool/stats/__init__.py +6 -0
- agentpool_cli-0.1.0/src/agentpool/stats/card.py +74 -0
- agentpool_cli-0.1.0/src/agentpool/stats/compute.py +496 -0
- agentpool_cli-0.1.0/src/agentpool/stats/queries.py +138 -0
- agentpool_cli-0.1.0/src/agentpool/stats/render.py +103 -0
- agentpool_cli-0.1.0/src/agentpool/stats/window.py +85 -0
- agentpool_cli-0.1.0/src/agentpool/store.py +478 -0
- agentpool_cli-0.1.0/src/agentpool/usage/__init__.py +1 -0
- agentpool_cli-0.1.0/src/agentpool/usage/_common.py +223 -0
- agentpool_cli-0.1.0/src/agentpool/usage/ccusage.py +130 -0
- agentpool_cli-0.1.0/src/agentpool/usage/claude.py +23 -0
- agentpool_cli-0.1.0/src/agentpool/usage/codex.py +210 -0
- agentpool_cli-0.1.0/src/agentpool/usage/codexbar.py +186 -0
- agentpool_cli-0.1.0/src/agentpool/usage/combine.py +71 -0
- agentpool_cli-0.1.0/src/agentpool/usage/copilot.py +146 -0
- agentpool_cli-0.1.0/src/agentpool/usage/devin.py +265 -0
- agentpool_cli-0.1.0/src/agentpool/usage/parsers.py +41 -0
- agentpool_cli-0.1.0/src/agentpool/usage/probes.py +52 -0
- agentpool_cli-0.1.0/src/agentpool/usage/provider_parsers.py +276 -0
- agentpool_cli-0.1.0/src/agentpool/usage/summary.py +166 -0
- agentpool_cli-0.1.0/src/agentpool/utils.py +59 -0
- agentpool_cli-0.1.0/tests/fixtures/provider_model_catalog_golden.json +84 -0
- agentpool_cli-0.1.0/tests/fixtures/stats_seed.py +218 -0
- agentpool_cli-0.1.0/tests/fixtures/usage/claude_usage.txt +10 -0
- agentpool_cli-0.1.0/tests/fixtures/usage/codex_rate_limits.json +19 -0
- agentpool_cli-0.1.0/tests/fixtures/usage/copilot_user.json +18 -0
- agentpool_cli-0.1.0/tests/fixtures/usage/devin_plan_status.json +15 -0
- agentpool_cli-0.1.0/tests/integration/test_fake_tmux_flow.py +153 -0
- agentpool_cli-0.1.0/tests/unit/test_agent_io.py +65 -0
- agentpool_cli-0.1.0/tests/unit/test_cli.py +244 -0
- agentpool_cli-0.1.0/tests/unit/test_event_policy.py +126 -0
- agentpool_cli-0.1.0/tests/unit/test_mcp_surface.py +328 -0
- agentpool_cli-0.1.0/tests/unit/test_mcp_tools.py +187 -0
- agentpool_cli-0.1.0/tests/unit/test_models_config_store.py +953 -0
- agentpool_cli-0.1.0/tests/unit/test_onboarding.py +381 -0
- agentpool_cli-0.1.0/tests/unit/test_redaction.py +87 -0
- agentpool_cli-0.1.0/tests/unit/test_stats_cli.py +149 -0
- agentpool_cli-0.1.0/tests/unit/test_stats_mcp.py +163 -0
- agentpool_cli-0.1.0/tests/unit/test_stats_window.py +326 -0
- agentpool_cli-0.1.0/tests/unit/test_usage_probes.py +346 -0
- agentpool_cli-0.1.0/tests/unit/test_usage_provider_parsers.py +136 -0
- agentpool_cli-0.1.0/tests/unit/test_usage_summary_enrichment.py +153 -0
- agentpool_cli-0.1.0/uv.lock +979 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @sidduHERE
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a reproducible AgentPool issue
|
|
4
|
+
title: ""
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
## Environment
|
|
12
|
+
|
|
13
|
+
- AgentPool version or commit:
|
|
14
|
+
- OS:
|
|
15
|
+
- Python version:
|
|
16
|
+
- tmux version:
|
|
17
|
+
- Provider id, if relevant:
|
|
18
|
+
|
|
19
|
+
## Command
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Expected
|
|
26
|
+
|
|
27
|
+
## Actual
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
Please redact provider tokens, account emails, session cookies, SQLite data, and
|
|
32
|
+
artifact excerpts that may contain private code or credentials.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Provider probe
|
|
3
|
+
about: Request or fix a provider usage probe
|
|
4
|
+
title: ""
|
|
5
|
+
labels: provider
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Provider
|
|
10
|
+
|
|
11
|
+
## CLI command and version
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage surface
|
|
18
|
+
|
|
19
|
+
What command, local file, or API exposes usage?
|
|
20
|
+
|
|
21
|
+
## Credential handling
|
|
22
|
+
|
|
23
|
+
Does it rely on existing CLI auth state, environment variables, browser cookies,
|
|
24
|
+
or a new login flow?
|
|
25
|
+
|
|
26
|
+
## Quota windows
|
|
27
|
+
|
|
28
|
+
List any daily, 5-hour, weekly, monthly, credit, on-demand, or session windows
|
|
29
|
+
the provider exposes.
|
|
30
|
+
|
|
31
|
+
## Notes
|
|
32
|
+
|
|
33
|
+
AgentPool does not accept browser scraping, credential storage, or provider
|
|
34
|
+
auto-routing as part of provider probes.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
test:
|
|
9
|
+
name: Python ${{ matrix.python-version }}
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.11", "3.12"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check out
|
|
18
|
+
uses: actions/checkout@v6
|
|
19
|
+
|
|
20
|
+
- name: Install tmux
|
|
21
|
+
run: sudo apt-get update && sudo apt-get install -y tmux
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v6
|
|
25
|
+
with:
|
|
26
|
+
python-version: ${{ matrix.python-version }}
|
|
27
|
+
|
|
28
|
+
- name: Install package
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
python -m pip install -e ".[dev]"
|
|
32
|
+
|
|
33
|
+
- name: Run tests
|
|
34
|
+
run: python -m pytest -q
|
|
35
|
+
|
|
36
|
+
- name: Validate embedded model catalog
|
|
37
|
+
run: agentpool models validate --path src/agentpool/provider_model_catalog.json --json
|
|
38
|
+
|
|
39
|
+
- name: Validate default config
|
|
40
|
+
run: agentpool config validate --json
|
|
41
|
+
|
|
42
|
+
- name: Run fake-provider smoke
|
|
43
|
+
run: agentpool smoke --provider fake-question --repo . --json
|
|
44
|
+
|
|
45
|
+
- name: Build wheel
|
|
46
|
+
run: |
|
|
47
|
+
python -m pip install build
|
|
48
|
+
python -m build
|
|
49
|
+
|
|
50
|
+
- name: Install wheel in clean venv
|
|
51
|
+
run: |
|
|
52
|
+
python -m venv /tmp/agentpool-wheel-venv
|
|
53
|
+
/tmp/agentpool-wheel-venv/bin/python -m pip install dist/*.whl
|
|
54
|
+
/tmp/agentpool-wheel-venv/bin/agentpool config validate --json
|
|
55
|
+
/tmp/agentpool-wheel-venv/bin/agentpool models validate --json
|
|
56
|
+
/tmp/agentpool-wheel-venv/bin/agentpool smoke --provider fake-question --repo . --json
|
|
57
|
+
/tmp/agentpool-wheel-venv/bin/python - <<'PY'
|
|
58
|
+
from agentpool.mcp.resources import read_resource
|
|
59
|
+
from agentpool.session_manager import SessionManager
|
|
60
|
+
|
|
61
|
+
manager = SessionManager()
|
|
62
|
+
for uri in ("agentpool://quickstart", "agentpool://skill.md", "agentpool://onboarding"):
|
|
63
|
+
text = read_resource(manager, uri)
|
|
64
|
+
assert text.startswith("# "), uri
|
|
65
|
+
PY
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check out
|
|
18
|
+
uses: actions/checkout@v6
|
|
19
|
+
|
|
20
|
+
- name: Install tmux
|
|
21
|
+
run: sudo apt-get update && sudo apt-get install -y tmux
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v6
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
|
|
28
|
+
- name: Install package
|
|
29
|
+
run: |
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
python -m pip install -e ".[dev]"
|
|
32
|
+
|
|
33
|
+
- name: Run release checks
|
|
34
|
+
run: |
|
|
35
|
+
python -m pytest -q
|
|
36
|
+
agentpool models validate --path src/agentpool/provider_model_catalog.json --json
|
|
37
|
+
agentpool config validate --json
|
|
38
|
+
agentpool smoke --provider fake-question --repo . --json
|
|
39
|
+
python -m json.tool server.json >/dev/null
|
|
40
|
+
|
|
41
|
+
- name: Build distributions
|
|
42
|
+
run: |
|
|
43
|
+
python -m pip install build
|
|
44
|
+
python -m build
|
|
45
|
+
|
|
46
|
+
- name: Verify wheel install
|
|
47
|
+
run: |
|
|
48
|
+
python -m venv /tmp/agentpool-wheel-venv
|
|
49
|
+
/tmp/agentpool-wheel-venv/bin/python -m pip install --upgrade pip
|
|
50
|
+
/tmp/agentpool-wheel-venv/bin/python -m pip install dist/*.whl
|
|
51
|
+
/tmp/agentpool-wheel-venv/bin/agentpool config validate --json
|
|
52
|
+
/tmp/agentpool-wheel-venv/bin/agentpool models validate --json
|
|
53
|
+
/tmp/agentpool-wheel-venv/bin/agentpool smoke --provider fake-question --repo . --json
|
|
54
|
+
/tmp/agentpool-wheel-venv/bin/python - <<'PY'
|
|
55
|
+
from agentpool.mcp.resources import read_resource
|
|
56
|
+
from agentpool.session_manager import SessionManager
|
|
57
|
+
|
|
58
|
+
manager = SessionManager()
|
|
59
|
+
for uri in ("agentpool://quickstart", "agentpool://skill.md", "agentpool://onboarding"):
|
|
60
|
+
text = read_resource(manager, uri)
|
|
61
|
+
assert text.startswith("# "), uri
|
|
62
|
+
PY
|
|
63
|
+
|
|
64
|
+
- name: Upload build artifact
|
|
65
|
+
uses: actions/upload-artifact@v7
|
|
66
|
+
with:
|
|
67
|
+
name: agentpool-dist
|
|
68
|
+
path: dist/*
|
|
69
|
+
|
|
70
|
+
- name: Create GitHub release
|
|
71
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
72
|
+
uses: softprops/action-gh-release@v3
|
|
73
|
+
with:
|
|
74
|
+
# Mark as prerelease only for a/b/rc tags (e.g. v0.1.0a9); v0.1.0 is a full release.
|
|
75
|
+
prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
|
|
76
|
+
files: |
|
|
77
|
+
dist/*
|
|
78
|
+
server.json
|
|
79
|
+
|
|
80
|
+
publish-pypi:
|
|
81
|
+
name: Publish to PyPI
|
|
82
|
+
needs: release
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
# Gated on the PUBLISH_TO_PYPI repo variable so tagging never publishes by accident.
|
|
85
|
+
# Requires a configured PyPI Trusted Publisher and a `pypi` environment.
|
|
86
|
+
if: startsWith(github.ref, 'refs/tags/') && vars.PUBLISH_TO_PYPI == 'true'
|
|
87
|
+
environment:
|
|
88
|
+
name: pypi
|
|
89
|
+
url: https://pypi.org/p/agentpool-cli
|
|
90
|
+
permissions:
|
|
91
|
+
id-token: write
|
|
92
|
+
|
|
93
|
+
steps:
|
|
94
|
+
- name: Download built distributions
|
|
95
|
+
uses: actions/download-artifact@v7
|
|
96
|
+
with:
|
|
97
|
+
name: agentpool-dist
|
|
98
|
+
path: dist
|
|
99
|
+
|
|
100
|
+
- name: Publish to PyPI (Trusted Publishing)
|
|
101
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Talk to the user as a fellow senior developer.
|
|
2
|
+
|
|
3
|
+
AgentPool is a control plane, not an auto-router. Keep provider/model judgment with the primary agent.
|
|
4
|
+
|
|
5
|
+
Project guardrails:
|
|
6
|
+
|
|
7
|
+
- Treat the committed docs as the public source of truth, especially `README.md`,
|
|
8
|
+
`docs/architecture.md`, `docs/onboarding.md`, `docs/mcp-tools.md`, and
|
|
9
|
+
`docs/usage-detection.md`.
|
|
10
|
+
- Use Python 3.11+.
|
|
11
|
+
- Use tmux as the first runtime.
|
|
12
|
+
- Preserve explicit provider selection. Do not add `provider=auto`.
|
|
13
|
+
- Do not implement browser scraping, credential storage, model ranking, silent overage, silent merge, or silent push behavior.
|
|
14
|
+
- Add fake-provider coverage before relying on real provider adapters.
|
|
15
|
+
- Prefer worktree isolation for mutating tasks.
|
|
16
|
+
- Use subprocess argument arrays; avoid shell strings for untrusted input.
|
|
17
|
+
- Store sessions, events, usage snapshots, artifacts, and file leases in SQLite.
|
|
18
|
+
- Keep artifacts outside the repo by default under `~/.agentpool/artifacts`.
|
|
19
|
+
|
|
20
|
+
When AgentPool tools are available:
|
|
21
|
+
|
|
22
|
+
1. Call inventory or usage before delegating.
|
|
23
|
+
2. Choose provider/model/harness explicitly.
|
|
24
|
+
3. Prefer `read_only` isolation for exploration and review.
|
|
25
|
+
4. Use `worktree` isolation for edits.
|
|
26
|
+
5. Spawn narrow tasks.
|
|
27
|
+
6. Observe, steer, interrupt, collect, and terminate deliberately.
|
|
28
|
+
7. Do not merge or push worker changes without user approval.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.1.0 - 2026-05-29
|
|
6
|
+
|
|
7
|
+
- First public release of AgentPool: local Python CLI, MCP server,
|
|
8
|
+
tmux-backed worker lifecycle, explicit provider/model selection, SQLite state,
|
|
9
|
+
packaged fake providers, conservative usage probes, agent-friendly CLI output,
|
|
10
|
+
lean MCP toolsets, redaction, session reconciliation, and worktree utilities.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
AgentPool is intentionally small and conservative. Please keep changes aligned
|
|
4
|
+
with the product boundary: local control plane, explicit provider selection,
|
|
5
|
+
truthful capacity data, no routing.
|
|
6
|
+
|
|
7
|
+
## Local Setup
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uv venv
|
|
11
|
+
uv pip install -e ".[dev]"
|
|
12
|
+
agentpool init
|
|
13
|
+
agentpool setup cursor
|
|
14
|
+
agentpool doctor --deep --privacy
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If you do not have real provider CLIs configured, use the packaged fake
|
|
18
|
+
providers:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
agentpool smoke --provider fake-question --repo . --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Before Opening A PR
|
|
25
|
+
|
|
26
|
+
Run:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
.venv/bin/python -m pytest -q
|
|
30
|
+
agentpool models validate --path src/agentpool/provider_model_catalog.json --json
|
|
31
|
+
agentpool config validate --json
|
|
32
|
+
agentpool smoke --provider fake-question --repo . --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Do not include provider credentials, SQLite databases, artifacts, tmux logs, or
|
|
36
|
+
screenshots containing account data.
|
|
37
|
+
|
|
38
|
+
## Branching
|
|
39
|
+
|
|
40
|
+
- `main` is the integration branch.
|
|
41
|
+
- Use short feature branches such as `codex/mcp-client-docs` or
|
|
42
|
+
`codex/usage-probe-fix`.
|
|
43
|
+
- Prefer pull requests for anything after the initial import.
|
|
44
|
+
- Keep releases tag-driven. Do not hand-edit generated distribution artifacts.
|
|
45
|
+
|
|
46
|
+
## Design Rules
|
|
47
|
+
|
|
48
|
+
- Do not add `provider=auto`, ranking, scoring, or provider picking.
|
|
49
|
+
- Do not add browser scraping or credential storage.
|
|
50
|
+
- Add fake-provider coverage before relying on real-provider behavior.
|
|
51
|
+
- Keep real-provider probes explicit and confidence-tagged.
|
|
52
|
+
- Prefer subprocess argument arrays.
|
|
53
|
+
- Keep worktree creation explicit; do not assume ownership of a user's repo
|
|
54
|
+
layout unless the user requested `--isolation worktree`.
|
|
55
|
+
- Document what a probe reads and stores.
|
|
56
|
+
|
|
57
|
+
## Provider Changes
|
|
58
|
+
|
|
59
|
+
For a provider adapter or usage probe, update:
|
|
60
|
+
|
|
61
|
+
- tests or fake-provider coverage;
|
|
62
|
+
- `docs/provider-adapters.md`;
|
|
63
|
+
- `docs/usage-detection.md`;
|
|
64
|
+
- `README.md` provider matrix when user-visible.
|
|
65
|
+
|
|
66
|
+
## Releases
|
|
67
|
+
|
|
68
|
+
Releases are created from tags. See [docs/release.md](docs/release.md) for the
|
|
69
|
+
full checklist, `server.json` alignment, and post-release MCP install smoke.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git tag v0.1.0a0
|
|
73
|
+
git push origin v0.1.0a0
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The release workflow runs tests, validates config/catalogs and `server.json`,
|
|
77
|
+
runs the packaged fake-provider smoke, builds wheel/sdist artifacts, attaches
|
|
78
|
+
`server.json` to the GitHub prerelease, and creates a GitHub prerelease. PyPI
|
|
79
|
+
publishing is disabled unless repository variable `PUBLISH_TO_PYPI` is set to
|
|
80
|
+
`true` and the PyPI trusted-publishing environment is configured.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AgentPool contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|