agr-opentui 0.2.0__tar.gz → 0.2.2__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.
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/.github/renovate.json5 +7 -0
- agr_opentui-0.2.2/.github/workflows/bump-version.yml +140 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/.github/workflows/publish-pypi.yml +38 -1
- agr_opentui-0.2.2/PKG-INFO +203 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/README.md +38 -2
- agr_opentui-0.2.2/pyproject.toml +34 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/uv.lock +2 -16
- agr_opentui-0.2.0/PKG-INFO +0 -6
- agr_opentui-0.2.0/pyproject.toml +0 -12
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/.github/workflows/build-bin.yml +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/.github/workflows/ci.yml +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/.gitignore +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/Makefile +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/agr_opentui/__init__.py +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/agr_opentui/bridge.py +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/bun.lock +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/bunfig.toml +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/package.json +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/skills.json +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/app.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/app_logic.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/commands.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/deps.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/main.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/runtime/doctor.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/runtime/handlers.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/runtime/modal_input_handler.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/add_flow.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/agr.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/agr_actions.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/clipboard.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/data.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/discover_filter.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/discover_labels.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/feedback.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/handle_match.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/input_mode.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/navigation.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/preview.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_actions.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_all.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_details.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_footer.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_help.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_list.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_missing_config.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_preview.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_run_modal.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_run_options.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_tabs.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_update_confirm.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/render_verify.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/runtime_ops.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/selection.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/skills_file.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/skills_source.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/ui_feedback.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/update.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/verify.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/verify_coordinator.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/services/visible_items.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/state.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/ui/controller.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/ui/layout.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/ui/render.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/ui/rows_render.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/src/ui.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/add_flow_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/agr_actions.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/agr_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/app_logic.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/clipboard_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/commands_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/data_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/discover_filter_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/discover_labels.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/feedback_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/handle_match_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/input_mode_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/navigation_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/preview_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_actions_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_all_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_details_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_footer_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_help_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_list_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_missing_config_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_preview_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_run_modal_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_run_options_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_tabs_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_update_confirm_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/render_verify_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/rows_render.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/runtime_doctor.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/runtime_handlers.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/runtime_ops_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/selection_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/skills_file_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/skills_source.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/ui_controller.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/ui_feedback_adapter.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/update_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/verify_coordinator_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/verify_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/test/visible_items_service.test.ts +0 -0
- {agr_opentui-0.2.0 → agr_opentui-0.2.2}/tsconfig.json +0 -0
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
labels: ["dependencies"],
|
|
11
11
|
rangeStrategy: "bump",
|
|
12
12
|
packageRules: [
|
|
13
|
+
{
|
|
14
|
+
matchCategories: ["python"],
|
|
15
|
+
groupName: "all python dependencies",
|
|
16
|
+
groupSlug: "all-python-dependencies",
|
|
17
|
+
separateMajorMinor: false,
|
|
18
|
+
separateMinorPatch: false
|
|
19
|
+
},
|
|
13
20
|
{
|
|
14
21
|
matchManagers: ["npm"],
|
|
15
22
|
matchUpdateTypes: ["major"],
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
name: bump-version
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: "New version (example: 0.3.0)"
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
branch:
|
|
11
|
+
description: "Branch to update"
|
|
12
|
+
required: true
|
|
13
|
+
default: "master"
|
|
14
|
+
type: string
|
|
15
|
+
create_tag:
|
|
16
|
+
description: "Create and push git tag v<version> after bump"
|
|
17
|
+
required: true
|
|
18
|
+
default: true
|
|
19
|
+
type: boolean
|
|
20
|
+
create_release:
|
|
21
|
+
description: "Create a GitHub release after tagging"
|
|
22
|
+
required: false
|
|
23
|
+
default: true
|
|
24
|
+
type: boolean
|
|
25
|
+
workflow_call:
|
|
26
|
+
inputs:
|
|
27
|
+
version:
|
|
28
|
+
description: "New version (example: 0.3.0)"
|
|
29
|
+
required: true
|
|
30
|
+
type: string
|
|
31
|
+
branch:
|
|
32
|
+
description: "Branch to update"
|
|
33
|
+
required: true
|
|
34
|
+
type: string
|
|
35
|
+
create_tag:
|
|
36
|
+
description: "Create and push git tag v<version> after bump"
|
|
37
|
+
required: true
|
|
38
|
+
type: boolean
|
|
39
|
+
create_release:
|
|
40
|
+
description: "Create a GitHub release after tagging"
|
|
41
|
+
required: false
|
|
42
|
+
default: true
|
|
43
|
+
type: boolean
|
|
44
|
+
|
|
45
|
+
permissions:
|
|
46
|
+
contents: write
|
|
47
|
+
|
|
48
|
+
jobs:
|
|
49
|
+
bump:
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- name: Checkout target branch
|
|
53
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
54
|
+
with:
|
|
55
|
+
ref: ${{ inputs.branch }}
|
|
56
|
+
fetch-depth: 0
|
|
57
|
+
|
|
58
|
+
- name: Setup Python
|
|
59
|
+
uses: actions/setup-python@v6
|
|
60
|
+
with:
|
|
61
|
+
python-version: "3.14.3"
|
|
62
|
+
|
|
63
|
+
- name: Setup uv
|
|
64
|
+
uses: astral-sh/setup-uv@v6
|
|
65
|
+
|
|
66
|
+
- name: Validate and apply version bump
|
|
67
|
+
env:
|
|
68
|
+
NEW_VERSION: ${{ inputs.version }}
|
|
69
|
+
run: |
|
|
70
|
+
python - <<'PY'
|
|
71
|
+
import os
|
|
72
|
+
import pathlib
|
|
73
|
+
import re
|
|
74
|
+
|
|
75
|
+
new_version = os.environ["NEW_VERSION"].strip()
|
|
76
|
+
if not re.fullmatch(r"[0-9]+\.[0-9]+\.[0-9]+(?:[-+][0-9A-Za-z.-]+)?", new_version):
|
|
77
|
+
raise SystemExit(
|
|
78
|
+
f"Invalid version '{new_version}'. Expected SemVer-like format, e.g. 0.3.0 or 0.3.0-rc.1"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
pyproject_path = pathlib.Path("pyproject.toml")
|
|
82
|
+
content = pyproject_path.read_text(encoding="utf-8")
|
|
83
|
+
updated, count = re.subn(
|
|
84
|
+
r'(?m)^version = ".*"$',
|
|
85
|
+
f'version = "{new_version}"',
|
|
86
|
+
content,
|
|
87
|
+
count=1,
|
|
88
|
+
)
|
|
89
|
+
if count != 1:
|
|
90
|
+
raise SystemExit("Could not update [project].version in pyproject.toml")
|
|
91
|
+
pyproject_path.write_text(updated, encoding="utf-8")
|
|
92
|
+
PY
|
|
93
|
+
|
|
94
|
+
- name: Regenerate uv.lock
|
|
95
|
+
run: uv lock
|
|
96
|
+
|
|
97
|
+
- name: Commit and push
|
|
98
|
+
env:
|
|
99
|
+
NEW_VERSION: ${{ inputs.version }}
|
|
100
|
+
TARGET_BRANCH: ${{ inputs.branch }}
|
|
101
|
+
run: |
|
|
102
|
+
git config user.name "github-actions[bot]"
|
|
103
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
104
|
+
|
|
105
|
+
if git diff --quiet -- pyproject.toml uv.lock; then
|
|
106
|
+
echo "No changes to commit."
|
|
107
|
+
exit 0
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
git add pyproject.toml uv.lock
|
|
111
|
+
git commit -m "chore: bump version to ${NEW_VERSION}"
|
|
112
|
+
git push origin "HEAD:${TARGET_BRANCH}"
|
|
113
|
+
|
|
114
|
+
- name: Create and push version tag
|
|
115
|
+
if: inputs.create_tag
|
|
116
|
+
env:
|
|
117
|
+
NEW_VERSION: ${{ inputs.version }}
|
|
118
|
+
run: |
|
|
119
|
+
TAG="v${NEW_VERSION}"
|
|
120
|
+
if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then
|
|
121
|
+
echo "Tag ${TAG} already exists locally."
|
|
122
|
+
exit 1
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
if git ls-remote --exit-code --tags origin "refs/tags/${TAG}" >/dev/null; then
|
|
126
|
+
echo "Tag ${TAG} already exists on origin."
|
|
127
|
+
exit 1
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
git tag -a "${TAG}" -m "Release ${TAG}"
|
|
131
|
+
git push origin "${TAG}"
|
|
132
|
+
|
|
133
|
+
- name: Create GitHub release
|
|
134
|
+
if: inputs.create_tag && inputs.create_release
|
|
135
|
+
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0
|
|
136
|
+
with:
|
|
137
|
+
tag_name: v${{ inputs.version }}
|
|
138
|
+
name: v${{ inputs.version }}
|
|
139
|
+
generate_release_notes: true
|
|
140
|
+
prerelease: ${{ contains(inputs.version, '-') }}
|
|
@@ -5,6 +5,20 @@ on:
|
|
|
5
5
|
types: [published]
|
|
6
6
|
workflow_dispatch:
|
|
7
7
|
inputs:
|
|
8
|
+
bump_version:
|
|
9
|
+
description: "Run bump-version before building and publishing"
|
|
10
|
+
required: true
|
|
11
|
+
type: boolean
|
|
12
|
+
default: false
|
|
13
|
+
version:
|
|
14
|
+
description: "New version to use when bump_version is enabled (example: 0.3.0)"
|
|
15
|
+
required: false
|
|
16
|
+
type: string
|
|
17
|
+
branch:
|
|
18
|
+
description: "Branch to build from (and bump when enabled)"
|
|
19
|
+
required: true
|
|
20
|
+
type: string
|
|
21
|
+
default: master
|
|
8
22
|
target:
|
|
9
23
|
description: "Where to publish the package"
|
|
10
24
|
required: true
|
|
@@ -14,11 +28,34 @@ on:
|
|
|
14
28
|
- testpypi
|
|
15
29
|
default: pypi
|
|
16
30
|
|
|
31
|
+
permissions:
|
|
32
|
+
contents: write
|
|
33
|
+
|
|
17
34
|
jobs:
|
|
35
|
+
bump-version:
|
|
36
|
+
if: github.event_name == 'workflow_dispatch' && inputs.bump_version
|
|
37
|
+
uses: ./.github/workflows/bump-version.yml
|
|
38
|
+
with:
|
|
39
|
+
version: ${{ inputs.version }}
|
|
40
|
+
branch: ${{ inputs.branch }}
|
|
41
|
+
create_tag: true
|
|
42
|
+
create_release: false
|
|
43
|
+
secrets: inherit
|
|
44
|
+
|
|
18
45
|
build:
|
|
46
|
+
needs: bump-version
|
|
47
|
+
if: ${{ always() && (needs.bump-version.result == 'success' || needs.bump-version.result == 'skipped') }}
|
|
19
48
|
runs-on: ubuntu-latest
|
|
20
49
|
steps:
|
|
21
|
-
- name: Checkout
|
|
50
|
+
- name: Checkout (workflow_dispatch branch)
|
|
51
|
+
if: github.event_name == 'workflow_dispatch'
|
|
52
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
53
|
+
with:
|
|
54
|
+
ref: ${{ inputs.branch }}
|
|
55
|
+
fetch-depth: 0
|
|
56
|
+
|
|
57
|
+
- name: Checkout (release ref)
|
|
58
|
+
if: github.event_name == 'release'
|
|
22
59
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
23
60
|
|
|
24
61
|
- name: Setup Python
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agr-opentui
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: OpenTUI frontend for agr
|
|
5
|
+
Project-URL: Homepage, https://github.com/RelativeSure/agr-opentui
|
|
6
|
+
Project-URL: Repository, https://github.com/RelativeSure/agr-opentui
|
|
7
|
+
Project-URL: Issues, https://github.com/RelativeSure/agr-opentui/issues
|
|
8
|
+
Author: Rasmus
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
Keywords: agr,cli,opentui,skills,tui
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
+
Classifier: Topic :: Utilities
|
|
20
|
+
Requires-Python: >=3.14
|
|
21
|
+
Requires-Dist: agr>=0.7.4
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# OpenTUI for agr
|
|
25
|
+
|
|
26
|
+
OpenTUI front-end for managing `agr` skills: browse `agr.toml`, install/remove skills, preview `SKILL.md`, and run skills via `agrx`. Skill discovery is based on `https://github.com/kasperjunge/agent-resources`.
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
Tabs:
|
|
31
|
+
- `Skills`: shows dependencies from `agr.toml` and install state.
|
|
32
|
+
- `Discover`: shows skills from `skills.json` (optional).
|
|
33
|
+
|
|
34
|
+
Common keys:
|
|
35
|
+
- `Tab` / `Shift+Tab`: switch tabs
|
|
36
|
+
- Arrow keys: move selection
|
|
37
|
+
- `space`: toggle select
|
|
38
|
+
- `H`: help
|
|
39
|
+
- `q`: quit
|
|
40
|
+
|
|
41
|
+
Skills tab keys:
|
|
42
|
+
- `a`: add skill (handle or `owner/repo/path`)
|
|
43
|
+
- `i`: install selected (bulk)
|
|
44
|
+
- `r`: remove selected (bulk)
|
|
45
|
+
- `v`: preview `SKILL.md`
|
|
46
|
+
- `g`: run with default options (`agrx`)
|
|
47
|
+
- `G`: open run options (tool, interactive, prompt, extra args)
|
|
48
|
+
- `u`: check discover list updates
|
|
49
|
+
- `U`: apply update (no confirm)
|
|
50
|
+
- `s`: apply update (confirm)
|
|
51
|
+
- `S`: apply update + sync (no confirm)
|
|
52
|
+
- `c`: reload config
|
|
53
|
+
|
|
54
|
+
Discover tab keys:
|
|
55
|
+
- `i`: add selected
|
|
56
|
+
- `y`: copy handle/repo to clipboard
|
|
57
|
+
- `a`: add skill
|
|
58
|
+
- `c`: reload config
|
|
59
|
+
|
|
60
|
+
Run options keys (when the modal is open):
|
|
61
|
+
- `t`: cycle tool
|
|
62
|
+
- `u`: toggle `--interactive`
|
|
63
|
+
- `p`: edit `--prompt`
|
|
64
|
+
- `e`: edit extra args
|
|
65
|
+
- `Enter`: run
|
|
66
|
+
- `Esc`: close
|
|
67
|
+
|
|
68
|
+
## Quick Cheat Sheet
|
|
69
|
+
|
|
70
|
+
Primary flow:
|
|
71
|
+
- `Tab` to `Skills`
|
|
72
|
+
- Arrow keys to select
|
|
73
|
+
- `g` to run, `G` for run options
|
|
74
|
+
|
|
75
|
+
Bulk actions:
|
|
76
|
+
- `space` to multi-select
|
|
77
|
+
- `i` install or `r` remove (Skills tab)
|
|
78
|
+
|
|
79
|
+
Discover flow:
|
|
80
|
+
- `Tab` to `Discover`
|
|
81
|
+
- Arrow keys to select
|
|
82
|
+
- `i` to add, `y` to copy handle
|
|
83
|
+
|
|
84
|
+
## Requirements
|
|
85
|
+
|
|
86
|
+
Runtime (using `agr-tui`):
|
|
87
|
+
- Python 3.10+
|
|
88
|
+
- `uv`
|
|
89
|
+
- `agr` + `agrx` on your `PATH`
|
|
90
|
+
|
|
91
|
+
Build/Development (working on this repo):
|
|
92
|
+
- Bun 1.3.8+
|
|
93
|
+
- Zig (required by OpenTUI build tooling)
|
|
94
|
+
|
|
95
|
+
## Install
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
bun install
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Run
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
bun run src/main.ts
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Run it from the repo you want to manage (the current working directory is the target repo).
|
|
108
|
+
`agr.toml` is expected in that target repo for `agr add/remove/sync` operations.
|
|
109
|
+
|
|
110
|
+
### Run From Target Repo
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
cd /path/to/your/project
|
|
114
|
+
agr-tui
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`agr-opentui` itself does not need to contain your target repo's `agr.toml`.
|
|
118
|
+
|
|
119
|
+
## Build
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
bun run build
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
This creates `bin/agr-tui`.
|
|
126
|
+
|
|
127
|
+
## Publish to PyPI
|
|
128
|
+
|
|
129
|
+
One-time setup:
|
|
130
|
+
- Create a `pypi` environment in this GitHub repo.
|
|
131
|
+
- In your PyPI project settings, add this repo/workflow as a Trusted Publisher for `.github/workflows/publish-pypi.yml`.
|
|
132
|
+
- Optional: add `testpypi` environment and TestPyPI Trusted Publisher too.
|
|
133
|
+
|
|
134
|
+
Publish via GitHub Actions:
|
|
135
|
+
- Release publish: creating a GitHub release triggers publish to PyPI.
|
|
136
|
+
- Manual: run `publish-pypi` workflow and choose `pypi` or `testpypi`.
|
|
137
|
+
|
|
138
|
+
Publish from local machine:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
python -m pip install --upgrade build twine
|
|
142
|
+
make py-publish # Upload to PyPI
|
|
143
|
+
make py-publish-test # Upload to TestPyPI
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Bump Version
|
|
147
|
+
|
|
148
|
+
Update package version before creating a release:
|
|
149
|
+
|
|
150
|
+
1. Edit `pyproject.toml` and bump `[project].version`.
|
|
151
|
+
2. Regenerate `uv.lock` so the local package entry matches:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
uv lock
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
3. Run checks:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
make check
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
4. Commit the version bump:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
git add pyproject.toml uv.lock
|
|
167
|
+
git commit -m "chore: bump version to X.Y.Z"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
5. Create a GitHub release for `vX.Y.Z` (or manually run `publish-pypi` workflow).
|
|
171
|
+
|
|
172
|
+
`publish-pypi.yml` runs automatically when a release is published.
|
|
173
|
+
|
|
174
|
+
Alternative: use `.github/workflows/bump-version.yml` via **Actions → bump-version → Run workflow** and provide:
|
|
175
|
+
- `version` (required): target version like `0.3.0`
|
|
176
|
+
- `branch` (required): target branch to update (default `master`)
|
|
177
|
+
- `create_tag` (required, default enabled): creates/pushes tag `v<version>` and creates a GitHub Release
|
|
178
|
+
|
|
179
|
+
## Discover List (`skills.json`)
|
|
180
|
+
|
|
181
|
+
If `skills.json` exists, the `Discover` tab will list its entries. It supports:
|
|
182
|
+
|
|
183
|
+
- An array of strings or objects (`{ "label": "...", "handle": "...", "repo": "owner/repo" }`).
|
|
184
|
+
- An object with `source` metadata and `skills` array (see `skills.json` in this repo).
|
|
185
|
+
|
|
186
|
+
When a `source` is configured, the app checks the remote list periodically (about every 6 hours) and can update `skills.json` using the `u`/`U`/`s`/`S` controls.
|
|
187
|
+
|
|
188
|
+
## Troubleshooting
|
|
189
|
+
|
|
190
|
+
- `Missing agr.toml`: run the app from a repo that has `agr.toml`, or create one.
|
|
191
|
+
- `uv not found`: install `uv` and ensure it’s on `PATH`.
|
|
192
|
+
- `agr/agrx not found`: install `agr` and ensure it’s on `PATH`.
|
|
193
|
+
- `python not found`: install Python 3.
|
|
194
|
+
- `skills.json not found` or parse errors: fix the file format (array or `{ "source": ..., "skills": [...] }`).
|
|
195
|
+
- Discover list not updating: check the `source` URL/repo/branch/path and network access.
|
|
196
|
+
- `SKILL.md` preview says “not found”: the skill may not ship a `SKILL.md` or the path is nonstandard.
|
|
197
|
+
- Copy to clipboard doesn’t work: install `pbcopy` (macOS), `wl-copy` (Wayland), or `xclip` (X11).
|
|
198
|
+
|
|
199
|
+
## Notes
|
|
200
|
+
|
|
201
|
+
- All actions run through `uv` (`uv run agr`, `uv run agrx`, and `uv run python -m agr_opentui.bridge`).
|
|
202
|
+
- If `agr.toml` is missing in the current directory, install/remove/sync commands are blocked and a warning is shown.
|
|
203
|
+
- Logs are written to `/tmp/agr-opentui.log`.
|
|
@@ -60,12 +60,15 @@ Discover flow:
|
|
|
60
60
|
|
|
61
61
|
## Requirements
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
- Zig (required by OpenTUI build tooling)
|
|
63
|
+
Runtime (using `agr-tui`):
|
|
65
64
|
- Python 3.10+
|
|
66
65
|
- `uv`
|
|
67
66
|
- `agr` + `agrx` on your `PATH`
|
|
68
67
|
|
|
68
|
+
Build/Development (working on this repo):
|
|
69
|
+
- Bun 1.3.8+
|
|
70
|
+
- Zig (required by OpenTUI build tooling)
|
|
71
|
+
|
|
69
72
|
## Install
|
|
70
73
|
|
|
71
74
|
```bash
|
|
@@ -117,6 +120,39 @@ make py-publish # Upload to PyPI
|
|
|
117
120
|
make py-publish-test # Upload to TestPyPI
|
|
118
121
|
```
|
|
119
122
|
|
|
123
|
+
## Bump Version
|
|
124
|
+
|
|
125
|
+
Update package version before creating a release:
|
|
126
|
+
|
|
127
|
+
1. Edit `pyproject.toml` and bump `[project].version`.
|
|
128
|
+
2. Regenerate `uv.lock` so the local package entry matches:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
uv lock
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
3. Run checks:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
make check
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
4. Commit the version bump:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
git add pyproject.toml uv.lock
|
|
144
|
+
git commit -m "chore: bump version to X.Y.Z"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
5. Create a GitHub release for `vX.Y.Z` (or manually run `publish-pypi` workflow).
|
|
148
|
+
|
|
149
|
+
`publish-pypi.yml` runs automatically when a release is published.
|
|
150
|
+
|
|
151
|
+
Alternative: use `.github/workflows/bump-version.yml` via **Actions → bump-version → Run workflow** and provide:
|
|
152
|
+
- `version` (required): target version like `0.3.0`
|
|
153
|
+
- `branch` (required): target branch to update (default `master`)
|
|
154
|
+
- `create_tag` (required, default enabled): creates/pushes tag `v<version>` and creates a GitHub Release
|
|
155
|
+
|
|
120
156
|
## Discover List (`skills.json`)
|
|
121
157
|
|
|
122
158
|
If `skills.json` exists, the `Discover` tab will list its entries. It supports:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "agr-opentui"
|
|
3
|
+
version = "0.2.2"
|
|
4
|
+
description = "OpenTUI frontend for agr"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
authors = [
|
|
8
|
+
{ name = "Rasmus" },
|
|
9
|
+
]
|
|
10
|
+
keywords = ["agr", "tui", "cli", "skills", "opentui"]
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 4 - Beta",
|
|
13
|
+
"Environment :: Console",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.14",
|
|
19
|
+
"Topic :: Software Development :: Build Tools",
|
|
20
|
+
"Topic :: Utilities",
|
|
21
|
+
]
|
|
22
|
+
requires-python = ">=3.14"
|
|
23
|
+
dependencies = [
|
|
24
|
+
"agr>=0.7.4",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://github.com/RelativeSure/agr-opentui"
|
|
29
|
+
Repository = "https://github.com/RelativeSure/agr-opentui"
|
|
30
|
+
Issues = "https://github.com/RelativeSure/agr-opentui/issues"
|
|
31
|
+
|
|
32
|
+
[build-system]
|
|
33
|
+
requires = ["hatchling"]
|
|
34
|
+
build-backend = "hatchling.build"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
version = 1
|
|
2
2
|
revision = 3
|
|
3
|
-
requires-python = ">=3.
|
|
3
|
+
requires-python = ">=3.14"
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "agr"
|
|
@@ -19,7 +19,7 @@ wheels = [
|
|
|
19
19
|
|
|
20
20
|
[[package]]
|
|
21
21
|
name = "agr-opentui"
|
|
22
|
-
version = "0.2.
|
|
22
|
+
version = "0.2.2"
|
|
23
23
|
source = { editable = "." }
|
|
24
24
|
dependencies = [
|
|
25
25
|
{ name = "agr" },
|
|
@@ -33,9 +33,7 @@ name = "anyio"
|
|
|
33
33
|
version = "4.12.1"
|
|
34
34
|
source = { registry = "https://pypi.org/simple" }
|
|
35
35
|
dependencies = [
|
|
36
|
-
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
37
36
|
{ name = "idna" },
|
|
38
|
-
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
39
37
|
]
|
|
40
38
|
sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" }
|
|
41
39
|
wheels = [
|
|
@@ -72,18 +70,6 @@ wheels = [
|
|
|
72
70
|
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
73
71
|
]
|
|
74
72
|
|
|
75
|
-
[[package]]
|
|
76
|
-
name = "exceptiongroup"
|
|
77
|
-
version = "1.3.1"
|
|
78
|
-
source = { registry = "https://pypi.org/simple" }
|
|
79
|
-
dependencies = [
|
|
80
|
-
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
81
|
-
]
|
|
82
|
-
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
|
|
83
|
-
wheels = [
|
|
84
|
-
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
|
|
85
|
-
]
|
|
86
|
-
|
|
87
73
|
[[package]]
|
|
88
74
|
name = "h11"
|
|
89
75
|
version = "0.16.0"
|
agr_opentui-0.2.0/PKG-INFO
DELETED
agr_opentui-0.2.0/pyproject.toml
DELETED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|