devin-cli 1.1.5__tar.gz → 1.1.6__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.
- {devin_cli-1.1.5 → devin_cli-1.1.6}/.github/workflows/pypi-publish.yml +13 -19
- {devin_cli-1.1.5 → devin_cli-1.1.6}/CHANGELOG.md +5 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/PKG-INFO +1 -1
- {devin_cli-1.1.5 → devin_cli-1.1.6}/pyproject.toml +1 -1
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/cli.py +12 -5
- {devin_cli-1.1.5 → devin_cli-1.1.6}/.gitignore +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/LICENSE +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/README.md +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/assets/logo.png +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/generate_facades.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/setup.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/__init__.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/__init__.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/attachments.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/client.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/consumption.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/knowledge.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/members.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/organizations.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/playbooks.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/repositories.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/schedules.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/secrets.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/sessions.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/__init__.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/attachments.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/knowledge.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/playbooks.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/secrets.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v1/sessions.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/__init__.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/attachments.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/consumption.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/knowledge.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/members.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/organizations.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/playbooks.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/repositories.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/schedules.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/secrets.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/api/v3/sessions.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/src/devin_cli/config.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/__init__.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/conftest.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_attachments.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_knowledge.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_playbooks.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_repositories.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_schedules.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_secrets.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_api/test_sessions.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_cli.py +0 -0
- {devin_cli-1.1.5 → devin_cli-1.1.6}/tests/test_config.py +0 -0
|
@@ -43,31 +43,24 @@ jobs:
|
|
|
43
43
|
- name: Checkout
|
|
44
44
|
uses: actions/checkout@v4
|
|
45
45
|
|
|
46
|
-
- name:
|
|
47
|
-
uses: actions/setup-python@v5
|
|
48
|
-
with:
|
|
49
|
-
python-version: '3.12'
|
|
50
|
-
|
|
51
|
-
- name: Get Version and Hash
|
|
46
|
+
- name: Resolve version and URL
|
|
52
47
|
run: |
|
|
53
48
|
VERSION=${GITHUB_REF_NAME#v}
|
|
54
49
|
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
55
|
-
VERSION
|
|
50
|
+
VERSION="${{ github.event.inputs.tag_name }}"
|
|
56
51
|
VERSION=${VERSION#v}
|
|
57
52
|
fi
|
|
58
53
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
echo "
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
HASH=$(sha256sum devin_cli.tar.gz | awk '{print $1}')
|
|
70
|
-
echo "HASH=$HASH" >> $GITHUB_ENV
|
|
54
|
+
echo "URL=https://files.pythonhosted.org/packages/source/d/devin-cli/devin_cli-${VERSION}.tar.gz" >> $GITHUB_ENV
|
|
55
|
+
|
|
56
|
+
- name: Wait for PyPI CDN propagation
|
|
57
|
+
run: |
|
|
58
|
+
echo "Waiting 90 seconds for PyPI CDN to propagate..."
|
|
59
|
+
sleep 90
|
|
60
|
+
echo "Verifying tarball is accessible..."
|
|
61
|
+
curl --fail --silent --head "$URL" && echo "Tarball is available." || (echo "ERROR: Tarball not yet available at $URL" && exit 1)
|
|
62
|
+
env:
|
|
63
|
+
URL: ${{ env.URL }}
|
|
71
64
|
|
|
72
65
|
- name: Update Homebrew Formula
|
|
73
66
|
uses: mislav/bump-homebrew-formula-action@v3
|
|
@@ -79,3 +72,4 @@ jobs:
|
|
|
79
72
|
commit-message: "Update devin-cli to ${{ env.VERSION }}"
|
|
80
73
|
env:
|
|
81
74
|
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
75
|
+
|
|
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.1.6] - 2026-03-11
|
|
9
|
+
### Fixed
|
|
10
|
+
- `repos list` now correctly reads `repo_path` (the actual v3beta1 API key) and resolves indexed state from `indexing_status.indexing_enabled`.
|
|
11
|
+
- `sessions cost` now reads `acus_consumed` (the real v3 field name) with a fallback to `acu_used` for v1.
|
|
12
|
+
|
|
8
13
|
## [1.1.5] - 2026-03-11
|
|
9
14
|
### Fixed
|
|
10
15
|
- `repos list` table now correctly resolves repository paths by handling direct list API responses and trying `repository_path`, `full_name`, `path`, and `name` keys in sequence.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devin-cli
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.6
|
|
4
4
|
Summary: Unofficial CLI for Devin AI - The first AI Software Engineer
|
|
5
5
|
Project-URL: Homepage, https://github.com/revanthpobala/devin-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/revanthpobala/devin-cli.git
|
|
@@ -268,14 +268,14 @@ def session_cost_cmd(
|
|
|
268
268
|
if org: config.temporary_org_id = org
|
|
269
269
|
if session_id:
|
|
270
270
|
resp = sessions.get_session(session_id)
|
|
271
|
-
|
|
271
|
+
acus = resp.get("acus_consumed") or resp.get("acu_used")
|
|
272
272
|
cost_data = {
|
|
273
273
|
"session_id": resp.get("session_id"),
|
|
274
274
|
"status": resp.get("status_enum"),
|
|
275
|
-
"
|
|
275
|
+
"acus_consumed": acus,
|
|
276
276
|
}
|
|
277
277
|
console.print(Panel(json.dumps(cost_data, indent=2), title=f"Session Cost: {session_id}"))
|
|
278
|
-
if
|
|
278
|
+
if acus is None:
|
|
279
279
|
console.print("[yellow]ACU data unavailable — this may be a v1 API session or a service token without cost visibility.[/yellow]")
|
|
280
280
|
else:
|
|
281
281
|
resp = consumption.get_daily_consumption_breakdown()
|
|
@@ -535,13 +535,20 @@ def list_repos_cmd(
|
|
|
535
535
|
table.add_column("Indexed", style="green")
|
|
536
536
|
for item in items:
|
|
537
537
|
path = (
|
|
538
|
-
item.get("
|
|
538
|
+
item.get("repo_path")
|
|
539
|
+
or item.get("repository_path")
|
|
540
|
+
or item.get("repo_name")
|
|
539
541
|
or item.get("full_name")
|
|
540
542
|
or item.get("path")
|
|
541
543
|
or item.get("name")
|
|
542
544
|
or ""
|
|
543
545
|
)
|
|
544
|
-
|
|
546
|
+
indexing_status = item.get("indexing_status") or {}
|
|
547
|
+
indexed = (
|
|
548
|
+
indexing_status.get("indexing_enabled")
|
|
549
|
+
or item.get("is_indexed")
|
|
550
|
+
or item.get("indexed")
|
|
551
|
+
)
|
|
545
552
|
table.add_row(path, "Yes" if indexed else "No")
|
|
546
553
|
console.print(table)
|
|
547
554
|
|
|
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
|
|
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
|
|
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
|
|
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
|