task-agent 1.3.3__tar.gz → 1.3.8__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.
- task_agent-1.3.8/.github/workflows/ci.yml +54 -0
- task_agent-1.3.8/.github/workflows/publish.yml +62 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.gitignore +2 -0
- task_agent-1.3.8/PKG-INFO +96 -0
- task_agent-1.3.3/PKG-INFO → task_agent-1.3.8/README.md +63 -64
- {task_agent-1.3.3 → task_agent-1.3.8}/pyproject.toml +30 -5
- task_agent-1.3.8/sidecars/keet-bridge/README.md +51 -0
- task_agent-1.3.8/sidecars/keet-bridge/bridge.js +313 -0
- task_agent-1.3.8/sidecars/keet-bridge/package-lock.json +923 -0
- task_agent-1.3.8/sidecars/keet-bridge/package.json +17 -0
- task_agent-1.3.8/sidecars/keet-bridge/run.sh +17 -0
- task_agent-1.3.8/sidecars/keet-bridge/test-e2e.js +126 -0
- task_agent-1.3.8/sidecars/matrix-bridge/README.md +67 -0
- task_agent-1.3.8/sidecars/matrix-bridge/matrix_bridge.py +570 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/agent_registry.py +2 -2
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/chat/discovery.py +2 -2
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/chat/last_used.py +60 -5
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/cli.py +603 -8
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/manager.py +377 -10
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/mcp.py +96 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/store_registry.py +107 -11
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_chat_discovery.py +1 -1
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_chat_last_used.py +7 -2
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_cli.py +311 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_manager.py +21 -0
- task_agent-1.3.8/tests/test_manager_git.py +253 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_mcp.py +17 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_store_registry.py +9 -4
- task_agent-1.3.8/tests/test_yazi.py +48 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/uv.lock +22 -20
- task_agent-1.3.3/.env +0 -3
- task_agent-1.3.3/.github/workflows/ci.yml +0 -36
- task_agent-1.3.3/.github/workflows/publish.yml +0 -41
- task_agent-1.3.3/README.md +0 -42
- task_agent-1.3.3/tests/test_manager_git.py +0 -131
- {task_agent-1.3.3 → task_agent-1.3.8}/.agents/skills/next/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.gemini/settings.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.mise.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.pre-commit-config.yaml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.python-version +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/agents/agy-cli/meta.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/agents/antigravity/meta.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/agents/gh/meta.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/agents/minimal/meta.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/agents/uat-aws/meta.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta/worker +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/.ta-config.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/CLAUDE.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/GEMINI.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/Makefile +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/agent.env +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/STATION-MAP.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/architecture/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/chats/gemini-conversation-1773283034591.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/chats/project-init-to-v0.1.46.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/cli/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/development/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/task-agents.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/workflow/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/docs/workflow/trivial_worker_policy.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/opencode.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/.gemini-plugin/plugin.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/.mcp.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/hooks/hooks.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/hooks/session_start.sh +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/rules/task_agent.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/scripts/statusline.sh +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/next/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/antigravity/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/.claude-plugin/plugin.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/.mcp.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/hooks/hooks.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/hooks/session_start.sh +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/scripts/statusline.sh +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/claude-code/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/codex/.mcp.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/codex/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/copilot/.mcp.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/copilot/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/grok/.mcp.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/plugins/grok/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/scripts/clean_duplicates.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/scripts/migrate_tasks.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/scripts/recover_dates.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/.env.example +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/instructions/manager.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/instructions/validator.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/instructions/worker.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/profiles/default.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/pyproject.toml +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/uv.lock +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/sidecars/adk-worker/worker.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/README.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/agent-import/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/complete-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/mission-workflow/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/next/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/skills/next-task/SKILL.md +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/__init__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/__main__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/agent.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/audit.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/chat/__init__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/chat/config.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/config.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/discovery.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/importers/__init__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/importers/antigravity.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/importers/base.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/importers/claude_code.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/importers/generic.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/inbox.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/models/__init__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/models/issue.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/models/metric.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/perf.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/plugins/__init__.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/plugins/github.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/runner.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/templates.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/src/taskagent/theme.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/test-dir/opencode.json +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/conftest.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/e2e/test_agent_sandboxing.sh +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_agent.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_agent_registry.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_agy_cli_worker.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_atomic_mutations.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_auto_commit.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_chat_config.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_cli_windows.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_discovery.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_github_token.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_importers.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_inbox.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_inbox_watch.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_lease.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_metrics.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_migration.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_perf.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_plugin_antigravity.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_plugin_claude.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_project_host_root.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_rebind.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_remote_attach.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_remote_create.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_repo_resolve.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_runner.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_store_symlink.py +0 -0
- {task_agent-1.3.3 → task_agent-1.3.8}/tests/test_templates.py +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
|
|
11
|
+
env:
|
|
12
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
lint:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
# https://github.com/actions/checkout
|
|
19
|
+
- uses: actions/checkout@v6
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
|
|
23
|
+
# The committed .env carries this developer's local ejected-store
|
|
24
|
+
# path (see .env, and _handle_ejected_symlink in discovery.py). A
|
|
25
|
+
# legacy migration branch there reloads .env with override=True,
|
|
26
|
+
# so an env var can't reliably countermand it — remove the file
|
|
27
|
+
# itself so discover() falls back to its safe in-repo default.
|
|
28
|
+
- name: Remove developer-local .env
|
|
29
|
+
run: rm -f .env
|
|
30
|
+
|
|
31
|
+
# Several tests create real git repos (auto-commit, store migration)
|
|
32
|
+
# and need a committer identity; the runner has none by default.
|
|
33
|
+
- name: Configure git identity for tests
|
|
34
|
+
run: |
|
|
35
|
+
git config --global user.name "CI Runner"
|
|
36
|
+
git config --global user.email "ci@task-agent.invalid"
|
|
37
|
+
|
|
38
|
+
# https://github.com/astral-sh/setup-uv
|
|
39
|
+
- name: Install uv
|
|
40
|
+
uses: astral-sh/setup-uv@v7
|
|
41
|
+
with:
|
|
42
|
+
enable-cache: true
|
|
43
|
+
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
run: uv python install
|
|
46
|
+
|
|
47
|
+
- name: Run ruff
|
|
48
|
+
run: uv run ruff check .
|
|
49
|
+
|
|
50
|
+
- name: Run mypy
|
|
51
|
+
run: uv run mypy src
|
|
52
|
+
|
|
53
|
+
- name: Run pytest
|
|
54
|
+
run: uv run pytest
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
env:
|
|
9
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
publish:
|
|
13
|
+
name: Build and publish
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
id-token: write
|
|
17
|
+
contents: write
|
|
18
|
+
attestations: write
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
# https://github.com/actions/checkout
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
|
|
26
|
+
# The committed .env carries this developer's local ejected-store
|
|
27
|
+
# path (see .env, and _handle_ejected_symlink in discovery.py). A
|
|
28
|
+
# legacy migration branch there reloads .env with override=True,
|
|
29
|
+
# so an env var can't reliably countermand it — remove the file
|
|
30
|
+
# itself so discover() falls back to its safe in-repo default.
|
|
31
|
+
- name: Remove developer-local .env
|
|
32
|
+
run: rm -f .env
|
|
33
|
+
|
|
34
|
+
# Several tests create real git repos (auto-commit, store migration)
|
|
35
|
+
# and need a committer identity; the runner has none by default.
|
|
36
|
+
- name: Configure git identity for tests
|
|
37
|
+
run: |
|
|
38
|
+
git config --global user.name "CI Runner"
|
|
39
|
+
git config --global user.email "ci@task-agent.invalid"
|
|
40
|
+
|
|
41
|
+
# https://github.com/astral-sh/setup-uv
|
|
42
|
+
- name: Install uv
|
|
43
|
+
uses: astral-sh/setup-uv@v7
|
|
44
|
+
with:
|
|
45
|
+
enable-cache: true
|
|
46
|
+
|
|
47
|
+
- name: Set up Python
|
|
48
|
+
run: uv python install
|
|
49
|
+
|
|
50
|
+
- name: Install dependencies
|
|
51
|
+
run: uv sync
|
|
52
|
+
|
|
53
|
+
- name: Run test suite
|
|
54
|
+
run: uv run pytest
|
|
55
|
+
|
|
56
|
+
- name: Build package
|
|
57
|
+
run: uv build
|
|
58
|
+
|
|
59
|
+
- name: Publish to PyPI
|
|
60
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
61
|
+
with:
|
|
62
|
+
verbose: true
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: task-agent
|
|
3
|
+
Version: 1.3.8
|
|
4
|
+
Summary: A prioritized, file-based task queue for autonomous agentic workers
|
|
5
|
+
Project-URL: Homepage, https://github.com/InTEGr8or/task-agent
|
|
6
|
+
Project-URL: Repository, https://github.com/InTEGr8or/task-agent.git
|
|
7
|
+
Project-URL: Issues, https://github.com/InTEGr8or/task-agent/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/InTEGr8or/task-agent/blob/main/README.md
|
|
9
|
+
Author-email: Mark Stouffer <1802850+InTEGr8or@users.noreply.github.com>
|
|
10
|
+
License: MIT
|
|
11
|
+
Keywords: agentic-workflow,ai-agent,antigravity,claude-code,grok,matrix-bridge,mcp,model-context-protocol,multi-agent,opencode,task-agent
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
18
|
+
Requires-Python: >=3.12
|
|
19
|
+
Requires-Dist: boto3>=1.34.0
|
|
20
|
+
Requires-Dist: githubkit>=0.15.5
|
|
21
|
+
Requires-Dist: google-genai>=0.1.0
|
|
22
|
+
Requires-Dist: mcp<2.0.0,>=1.26.0
|
|
23
|
+
Requires-Dist: multi-agent-registry>=0.1.0
|
|
24
|
+
Requires-Dist: pydantic>=2.10.6
|
|
25
|
+
Requires-Dist: pyperclip>=1.9.0
|
|
26
|
+
Requires-Dist: python-dotenv>=1.2.2
|
|
27
|
+
Requires-Dist: pyyaml>=6.0
|
|
28
|
+
Requires-Dist: questionary>=2.1.1
|
|
29
|
+
Requires-Dist: rich>=13.9.4
|
|
30
|
+
Requires-Dist: transitions>=0.9.2
|
|
31
|
+
Requires-Dist: verkit>=0.1.4
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# Task Agent 🤖
|
|
35
|
+
|
|
36
|
+
A prioritized, file-based task queue for autonomous agentic workers. This system uses a "Mission Control" approach to manage multiple agents working on git-tracked improvements across various branches and worktrees.
|
|
37
|
+
|
|
38
|
+
## 📂 System Architecture
|
|
39
|
+
|
|
40
|
+
The project follows a specific folder structure to manage the lifecycle of an improvement:
|
|
41
|
+
|
|
42
|
+
- `docs/issues/`: The core queue.
|
|
43
|
+
- `mission.usv`: A prioritized list of issues using Unit Separator Value (`\x1f`) format. This serves as the source of truth for task priority.
|
|
44
|
+
- `datapackage.json`: Frictionless Data metadata for the `mission.usv` schema.
|
|
45
|
+
- `pending/`: New issues awaiting triage or assignment.
|
|
46
|
+
- `draft/`: Issues currently being refined or planned.
|
|
47
|
+
- `active/`: Issues actively being worked on by an agent.
|
|
48
|
+
- `completed/{year}/`: Successfully implemented and verified improvements.
|
|
49
|
+
- `.gwt/`: Git Worktree directory where active branches are checked out for isolated agent execution.
|
|
50
|
+
|
|
51
|
+
## 🛠️ Tooling: `ta` (Task Agent CLI)
|
|
52
|
+
|
|
53
|
+
The `ta` tool automates the transition of issues through the queue and manages the underlying git infrastructure.
|
|
54
|
+
|
|
55
|
+
### Commands
|
|
56
|
+
|
|
57
|
+
| Command | Action |
|
|
58
|
+
| :--- | :--- |
|
|
59
|
+
| `ta next` | Displays the top prioritized issue from `mission.usv`. |
|
|
60
|
+
| `ta new` | Creates a new issue file and adds it to the queue. |
|
|
61
|
+
| `ta done` | Moves issue to `completed/`, removes it from the queue, and auto-commits the result. |
|
|
62
|
+
| `ta start <slug>` | Moves issue to `active/`, creates a git branch, and sets up a `.gwt/` worktree. |
|
|
63
|
+
| `ta run <slug>` | Invokes the sidecar worker defined at `.ta/worker` to process an active issue. |
|
|
64
|
+
|
|
65
|
+
## 🚀 Workflow
|
|
66
|
+
|
|
67
|
+
1. **Prioritize**: Use `ta new -t "Title"` to add a task.
|
|
68
|
+
2. **Review**: Run `ta next` to see what is currently at the top of the queue.
|
|
69
|
+
3. **Dispatch**: (Planned) Run `ta start <slug>` to prepare the workspace.
|
|
70
|
+
4. **Execute**: (Planned) The agent (Gemini CLI) processes the task in its isolated worktree via `ta run <slug>`.
|
|
71
|
+
5. **Finalize**: Once verified, `ta done` moves the task to the finished state.
|
|
72
|
+
|
|
73
|
+
## 🤖 Multi-Agent CLI Portfolio (`multi-agent-registry`)
|
|
74
|
+
|
|
75
|
+
`task-agent` integrates with [`multi-agent-registry`](https://github.com/InTEGr8or/multi-agent-registry) (`multi_agent_registry`) to automatically detect, configure, and inspect AI agent CLIs across your developer workstation:
|
|
76
|
+
|
|
77
|
+
- **Supported Agent CLIs**: Claude Code (`claude`), Antigravity CLI (`agy`), OpenCode (`opencode`), Grok Build (`grok`), GitHub Copilot CLI (`copilot`), Cursor (`cursor`), Windsurf (`windsurf`), Aider (`aider`), Continue (`continue`), Cline (`cline`), Roo Code (`roo`).
|
|
78
|
+
- **Features**: Automatic CLI detection, MCP configuration generation (`ta init-mcp`), session discovery, recent agent activity tracking (`ta agent recent`), and plugin management.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 💬 Matrix Messaging Integration & Sidecar Daemon
|
|
83
|
+
|
|
84
|
+
`task-agent` includes a zero-dependency Matrix sidecar bridge daemon ([`sidecars/matrix-bridge/`](file:///home/mstouffer/repos/task-agent/sidecars/matrix-bridge/)) for real-time remote notification and task chat bridging:
|
|
85
|
+
|
|
86
|
+
- **Global Space & Store Binding**:
|
|
87
|
+
```bash
|
|
88
|
+
# Configure machine-wide Matrix Space link
|
|
89
|
+
ta store matrix space set 'https://matrix.to/#/!space_id:matrix.org'
|
|
90
|
+
|
|
91
|
+
# Configure secret token reference (1Password op://, Linux keyring secret-tool://, or pass://)
|
|
92
|
+
ta store matrix token set 'op://Private/6pcab3dt5sml3sslfh6xffqit4/Saved on account.matrix.org/access-token'
|
|
93
|
+
```
|
|
94
|
+
- **Automated Space & Child Room Provisioning**:
|
|
95
|
+
When launched, the sidecar daemon (`python3 sidecars/matrix-bridge/matrix_bridge.py`) auto-discovers or provisions unencrypted child rooms inside your Space for each repository store and delivers real-time inbox comments.
|
|
96
|
+
|
|
@@ -1,64 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
##
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
By utilizing the Gemini CLI's headless mode, this system can orchestrate multiple agents simultaneously without requiring manual terminal management, significantly improving portability and scalability between Windows and WSL environments.
|
|
1
|
+
# Task Agent 🤖
|
|
2
|
+
|
|
3
|
+
A prioritized, file-based task queue for autonomous agentic workers. This system uses a "Mission Control" approach to manage multiple agents working on git-tracked improvements across various branches and worktrees.
|
|
4
|
+
|
|
5
|
+
## 📂 System Architecture
|
|
6
|
+
|
|
7
|
+
The project follows a specific folder structure to manage the lifecycle of an improvement:
|
|
8
|
+
|
|
9
|
+
- `docs/issues/`: The core queue.
|
|
10
|
+
- `mission.usv`: A prioritized list of issues using Unit Separator Value (`\x1f`) format. This serves as the source of truth for task priority.
|
|
11
|
+
- `datapackage.json`: Frictionless Data metadata for the `mission.usv` schema.
|
|
12
|
+
- `pending/`: New issues awaiting triage or assignment.
|
|
13
|
+
- `draft/`: Issues currently being refined or planned.
|
|
14
|
+
- `active/`: Issues actively being worked on by an agent.
|
|
15
|
+
- `completed/{year}/`: Successfully implemented and verified improvements.
|
|
16
|
+
- `.gwt/`: Git Worktree directory where active branches are checked out for isolated agent execution.
|
|
17
|
+
|
|
18
|
+
## 🛠️ Tooling: `ta` (Task Agent CLI)
|
|
19
|
+
|
|
20
|
+
The `ta` tool automates the transition of issues through the queue and manages the underlying git infrastructure.
|
|
21
|
+
|
|
22
|
+
### Commands
|
|
23
|
+
|
|
24
|
+
| Command | Action |
|
|
25
|
+
| :--- | :--- |
|
|
26
|
+
| `ta next` | Displays the top prioritized issue from `mission.usv`. |
|
|
27
|
+
| `ta new` | Creates a new issue file and adds it to the queue. |
|
|
28
|
+
| `ta done` | Moves issue to `completed/`, removes it from the queue, and auto-commits the result. |
|
|
29
|
+
| `ta start <slug>` | Moves issue to `active/`, creates a git branch, and sets up a `.gwt/` worktree. |
|
|
30
|
+
| `ta run <slug>` | Invokes the sidecar worker defined at `.ta/worker` to process an active issue. |
|
|
31
|
+
|
|
32
|
+
## 🚀 Workflow
|
|
33
|
+
|
|
34
|
+
1. **Prioritize**: Use `ta new -t "Title"` to add a task.
|
|
35
|
+
2. **Review**: Run `ta next` to see what is currently at the top of the queue.
|
|
36
|
+
3. **Dispatch**: (Planned) Run `ta start <slug>` to prepare the workspace.
|
|
37
|
+
4. **Execute**: (Planned) The agent (Gemini CLI) processes the task in its isolated worktree via `ta run <slug>`.
|
|
38
|
+
5. **Finalize**: Once verified, `ta done` moves the task to the finished state.
|
|
39
|
+
|
|
40
|
+
## 🤖 Multi-Agent CLI Portfolio (`multi-agent-registry`)
|
|
41
|
+
|
|
42
|
+
`task-agent` integrates with [`multi-agent-registry`](https://github.com/InTEGr8or/multi-agent-registry) (`multi_agent_registry`) to automatically detect, configure, and inspect AI agent CLIs across your developer workstation:
|
|
43
|
+
|
|
44
|
+
- **Supported Agent CLIs**: Claude Code (`claude`), Antigravity CLI (`agy`), OpenCode (`opencode`), Grok Build (`grok`), GitHub Copilot CLI (`copilot`), Cursor (`cursor`), Windsurf (`windsurf`), Aider (`aider`), Continue (`continue`), Cline (`cline`), Roo Code (`roo`).
|
|
45
|
+
- **Features**: Automatic CLI detection, MCP configuration generation (`ta init-mcp`), session discovery, recent agent activity tracking (`ta agent recent`), and plugin management.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 💬 Matrix Messaging Integration & Sidecar Daemon
|
|
50
|
+
|
|
51
|
+
`task-agent` includes a zero-dependency Matrix sidecar bridge daemon ([`sidecars/matrix-bridge/`](file:///home/mstouffer/repos/task-agent/sidecars/matrix-bridge/)) for real-time remote notification and task chat bridging:
|
|
52
|
+
|
|
53
|
+
- **Global Space & Store Binding**:
|
|
54
|
+
```bash
|
|
55
|
+
# Configure machine-wide Matrix Space link
|
|
56
|
+
ta store matrix space set 'https://matrix.to/#/!space_id:matrix.org'
|
|
57
|
+
|
|
58
|
+
# Configure secret token reference (1Password op://, Linux keyring secret-tool://, or pass://)
|
|
59
|
+
ta store matrix token set 'op://Private/6pcab3dt5sml3sslfh6xffqit4/Saved on account.matrix.org/access-token'
|
|
60
|
+
```
|
|
61
|
+
- **Automated Space & Child Room Provisioning**:
|
|
62
|
+
When launched, the sidecar daemon (`python3 sidecars/matrix-bridge/matrix_bridge.py`) auto-discovers or provisions unencrypted child rooms inside your Space for each repository store and delivers real-time inbox comments.
|
|
63
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "task-agent"
|
|
3
|
-
version = "1.3.
|
|
3
|
+
version = "1.3.8"
|
|
4
4
|
description = "A prioritized, file-based task queue for autonomous agentic workers"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -8,6 +8,28 @@ authors = [
|
|
|
8
8
|
{ name = "Mark Stouffer", email = "1802850+InTEGr8or@users.noreply.github.com" }
|
|
9
9
|
]
|
|
10
10
|
license = { text = "MIT" }
|
|
11
|
+
keywords = [
|
|
12
|
+
"task-agent",
|
|
13
|
+
"ai-agent",
|
|
14
|
+
"multi-agent",
|
|
15
|
+
"mcp",
|
|
16
|
+
"model-context-protocol",
|
|
17
|
+
"agentic-workflow",
|
|
18
|
+
"claude-code",
|
|
19
|
+
"antigravity",
|
|
20
|
+
"opencode",
|
|
21
|
+
"grok",
|
|
22
|
+
"matrix-bridge",
|
|
23
|
+
]
|
|
24
|
+
classifiers = [
|
|
25
|
+
"Development Status :: 4 - Beta",
|
|
26
|
+
"Intended Audience :: Developers",
|
|
27
|
+
"License :: OSI Approved :: MIT License",
|
|
28
|
+
"Programming Language :: Python :: 3",
|
|
29
|
+
"Programming Language :: Python :: 3.12",
|
|
30
|
+
"Topic :: Software Development :: Build Tools",
|
|
31
|
+
]
|
|
32
|
+
|
|
11
33
|
dependencies = [
|
|
12
34
|
"mcp>=1.26.0,<2.0.0",
|
|
13
35
|
"pydantic>=2.10.6",
|
|
@@ -17,13 +39,19 @@ dependencies = [
|
|
|
17
39
|
"rich>=13.9.4",
|
|
18
40
|
"githubkit>=0.15.5",
|
|
19
41
|
"verkit>=0.1.4",
|
|
20
|
-
"agent-
|
|
42
|
+
"multi-agent-registry>=0.1.0",
|
|
21
43
|
"transitions>=0.9.2",
|
|
22
44
|
"boto3>=1.34.0",
|
|
23
45
|
"google-genai>=0.1.0",
|
|
24
46
|
"pyyaml>=6.0",
|
|
25
47
|
]
|
|
26
48
|
|
|
49
|
+
[project.urls]
|
|
50
|
+
Homepage = "https://github.com/InTEGr8or/task-agent"
|
|
51
|
+
Repository = "https://github.com/InTEGr8or/task-agent.git"
|
|
52
|
+
Issues = "https://github.com/InTEGr8or/task-agent/issues"
|
|
53
|
+
Documentation = "https://github.com/InTEGr8or/task-agent/blob/main/README.md"
|
|
54
|
+
|
|
27
55
|
|
|
28
56
|
[project.scripts]
|
|
29
57
|
ta = "taskagent.cli:main"
|
|
@@ -64,7 +92,4 @@ replace = "version = \"{new_version}\""
|
|
|
64
92
|
[tool.pytest.ini_options]
|
|
65
93
|
testpaths = ["tests"]
|
|
66
94
|
|
|
67
|
-
[tool.uv.sources]
|
|
68
|
-
verkit = { path = "/home/mstouffer/repos/verkit" }
|
|
69
|
-
|
|
70
95
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Task Agent <-> Keet Bridge Sidecar
|
|
2
|
+
|
|
3
|
+
This sidecar daemon bridges **Task Agent (`ta`)** store inbox messages (`.task-agent/inbox/unread/`) with **Keet** P2P chat rooms using the **Hyperswarm** DHT protocol.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
- **Outbound (Agent → Keet)**: Monitors `.task-agent/inbox/unread/` in real time. When an agent posts a question (`kind="question"` or `kind="ack-request"`), the bridge formats and broadcasts the payload to connected peers in the Keet room.
|
|
8
|
+
- **Inbound (Keet → Agent)**: Listens for incoming P2P chat responses from Keet room participants, writing them as `.msg.md` files into `.task-agent/inbox/unread/`. This immediately unblocks agents waiting on `watch_inbox_mcp` or `watch_inbox`.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
cd sidecars/keet-bridge
|
|
14
|
+
npm install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
Run the bridge daemon by pointing it to your Keet room invite URI and task-agent store root:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
node bridge.js --room "keet://chat/<your-room-secret-key>" --repo /path/to/repo
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Options
|
|
26
|
+
|
|
27
|
+
| Flag | Environment Variable | Default | Description |
|
|
28
|
+
|------|----------------------|---------|-------------|
|
|
29
|
+
| `--room` | `KEET_ROOM_URI` | *(required)* | Keet room URI (`keet://chat/...`) or topic key |
|
|
30
|
+
| `--repo` | `TA_STORE_PATH` | Current Directory (`.`) | Path to target task-agent store root |
|
|
31
|
+
| `--interval` | - | `1000` | Polling frequency in milliseconds for inbox changes |
|
|
32
|
+
| `--moniker` | `TA_STORE_MONIKER` | `keet-bridge` | Moniker identifier for this sidecar node |
|
|
33
|
+
|
|
34
|
+
## Testing
|
|
35
|
+
|
|
36
|
+
You can test the flow by running the bridge in one terminal window and using the `ta` CLI in another:
|
|
37
|
+
|
|
38
|
+
1. **Start the bridge**:
|
|
39
|
+
```bash
|
|
40
|
+
node sidecars/keet-bridge/bridge.js --room "keet://chat/gfouuoztj3z59..." --repo .
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. **Send a test question from an agent**:
|
|
44
|
+
```bash
|
|
45
|
+
ta inbox send --repo . --kind question --thread my-task --body "Should we proceed with Option A or B?"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
3. **Verify unread messages or response delivery**:
|
|
49
|
+
```bash
|
|
50
|
+
ta inbox list
|
|
51
|
+
```
|