task-agent 0.1.342__tar.gz → 0.1.490__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-0.1.490/.env +3 -0
- task_agent-0.1.490/.ta/agents/agy-cli/meta.toml +12 -0
- task_agent-0.1.490/.task-agent/tasks/.task-agent/datapackage.json +27 -0
- task_agent-0.1.490/.task-agent/tasks/.task-agent/logs/2026-06-10.jsonl +1 -0
- task_agent-0.1.490/.task-agent/tasks/.task-agent/logs/2026-06-11.jsonl +2 -0
- task_agent-0.1.490/.task-agent/tasks/.task-agent/mission.usv +12 -0
- task_agent-0.1.490/.task-agent/tasks/active/investigate-better-integration-with-antigravity-cli-of-claude-cli/README.md +11 -0
- task_agent-0.1.490/.task-agent/tasks/active/investigate-better-integration-with-antigravity-cli-of-claude-cli/investigation_integration.md +78 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-a-history-function/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-an-interactive-new/README.md +16 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-commit-and-push/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-configuration-file-support-for-github-plugin/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-date-created-to-ta-list-and-ta-prior/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-json-switch-to-output-to-json-for-integrations-such-as-nvim/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-post-setup-hook-to-ta-init-agent-for-per-repo-secrets/README.md +44 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-search-feature/README.md +20 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-ta-mr-list-and-ta-merge-commands/README.md +16 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-ta-path-command/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-triage-cli-sorting/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/add-view-and-edit-features-to-triage/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/agent-reports-mcp-access-issue/README.md +13 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/agent-sandboxing-via-linux-accounts/README.md +224 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/agents-report-commands-are-hanging/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/allow-dots-in-task-slugs-for-numeric-hierarchies/README.md +38 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/allow-editing-task-dependencies-in-task-agent-cli-and-mcp/README.md +22 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/allow-optional-role-property-of-the-issuetask/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/change-ejected-mission-repo-location/README.md +8 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/change-ejected-mission-repo-location-to-task-agenttasks/README.md +61 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/cli-observability-layer/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-a-copy-slug-feature-in-ta-prior/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-a-plan-feature/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-a-soft-delete-feature/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-adk-worker-readme/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-agy-cli-agent-workflow-template-with-validator-verification/README.md +17 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-done-process/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-make-next-script/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-model-configuration-schema/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/create-plugin-sidecar-strategy/README.md +62 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/define-task-metadata-standard/README.md +28 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/dependent-task/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/depends-on-above-feature-in-prior-links-to-the-bottom-leaf/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/directory-task/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/done-mcp-function-does-not-respond-with-a-message-that-agents-understand/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/done-should-require-explainaition-of-solution/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/dummy-task/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/enhance-ta-start-to-trigger-sidecar/README.md +16 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/enhanced-task-lifecycle-and-git-orchestration/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/fix-ta-done-pre-commit-hook-timeout-killing-process-before-commit-finishes/README.md +50 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/fix-uv-lock/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/history-feature-should-be-sorted-newest-at-the-top/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/history-should-allow-l-to-view/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/history-should-show-datetime-in-iso-with-local-timezone/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/i-can-only-see-20-items-in-the-hsitory-view/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-adk-sidecar-worker-with-multi-agent-architecture/README.md +20 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-merge-request-queue/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-op-1password-secret-resolution-for-template-dotfiles/README.md +38 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-plugin-based-secret-manager/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-strict-worktree-lifecycle/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/implement-ta-done-git-primitive-integration/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/improve-subtasking-mcpcli-discoverability/README.md +15 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/init-mcp-doesnt-work-for-opencode/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/initial-setup/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/integrate-gh-cli-alt-accounts/README.md +99 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/integreate-with-github-issues/README.md +20 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/make-copy-slug-available-from-the-history-list/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/make-nvim-the-default-editor/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/make-sure-x1e-is-not-used-as-a-record-separator-anywhere/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/make-ta-version-show-the-latest-pypiorg-version-of-task-agent/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/mcp-init-breaks-in-powershell/README.md +18 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/migrate-docsissues-to-docstasks/README.md +48 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/migrate-from-markdown-files-to-folders-with-readmemd/README.md +22 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/migrate-to-tasks-directory/README.md +28 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/nest-dependent-tasks-under-their-parent-in-list-view/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/new-issue-feature-in-mcp-should-require-completion-criteria/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/phase-2-agent-templates/README.md +67 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/phase-3-per-task-isolation/README.md +42 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/provide-a-set-active-feature-in-the-prior/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/refactor-models/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/remove-from-usv-writer-end-of-line/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/remove-test-issues-from-the-data/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/rename-triage/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/restyle-to-not-use-borders/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/search-is-not-working/README.md +58 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/search-should-include-completed-items-in-the-resultes/README.md +16 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/secure-secret-management-and-config-abstraction/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/shortcuts-in-prior-are-not-highlighted/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/sub-agent-observability-and-transparency/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/ta-list-should-use-the-same-style-template-as-ta-prior/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/task-agent-should-not-create-read-only-access-on-each-task-markdown/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/test-per-task-e2e/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/test-phase-3/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/test-plan/README.md +12 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/test-task/README.md +8 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/the-border-around-triage-is-dark-blue-on-black/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/triage-should-provide-an-add-feature/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/update-adk-worker-to-post-mr/README.md +16 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/update-development-standards-to-use-ta-done/README.md +10 -0
- task_agent-0.1.490/.task-agent/tasks/completed/2026/upgrade-to-tasks-should-handle-existing-issues-and-tasks/README.md +14 -0
- task_agent-0.1.490/.task-agent/tasks/deleted/deleted.usv +1 -0
- task_agent-0.1.490/.task-agent/tasks/deleted/test-soft-delete/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/draft/add-dependency-model-with-required-reason-for-dependency-declarations/README.md +72 -0
- task_agent-0.1.490/.task-agent/tasks/draft/new-task/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/draft/slug-identified-tasks-with-symlinked-state-folders/README.md +286 -0
- task_agent-0.1.490/.task-agent/tasks/draft/test-interactive-task/README.md +15 -0
- task_agent-0.1.490/.task-agent/tasks/draft/test-issue/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/pending/add-secondary-documents-to-the-task-view/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/pending/allow-create-task-in-other-repo/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/pending/auto-clean-code-signaturesjson-after-no-verify-commits/README.md +51 -0
- task_agent-0.1.490/.task-agent/tasks/pending/create-decompose-feature-to-decompose-a-task/README.md +13 -0
- task_agent-0.1.490/.task-agent/tasks/pending/remove-dependency-on-gh-cli-by-adding-api/README.md +7 -0
- task_agent-0.1.490/.task-agent/tasks/pending/shard-completed-tasks-by-month-and-index-history/README.md +15 -0
- task_agent-0.1.490/.task-agent/tasks/plan.md +9 -0
- task_agent-0.1.490/.task-agent/tasks/strategy/.meta.json +3 -0
- task_agent-0.1.490/.task-agent/tasks/strategy/README.md +21 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/PKG-INFO +1 -1
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/task-agents.md +24 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/pyproject.toml +2 -2
- task_agent-0.1.490/scripts/clean_duplicates.py +38 -0
- task_agent-0.1.490/scripts/migrate_tasks.py +58 -0
- task_agent-0.1.490/scripts/recover_dates.py +115 -0
- task_agent-0.1.490/sidecars/adk-worker/uv.lock +1090 -0
- task_agent-0.1.490/sidecars/adk-worker/worker.py +460 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/agent.py +4 -1
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/cli.py +490 -37
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/discovery.py +40 -7
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/manager.py +90 -20
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/mcp.py +15 -8
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/templates.py +58 -1
- task_agent-0.1.490/tests/test_agy_cli_worker.py +224 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_cli.py +149 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_manager_git.py +41 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_mcp.py +7 -4
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_templates.py +85 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/uv.lock +1 -1
- task_agent-0.1.342/.env +0 -2
- task_agent-0.1.342/sidecars/adk-worker/worker.py +0 -256
- {task_agent-0.1.342 → task_agent-0.1.490}/.gemini/settings.json +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.github/workflows/ci.yml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.github/workflows/publish.yml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.gitignore +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.mise.toml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.pre-commit-config.yaml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.python-version +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.ta/agents/gh/meta.toml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.ta/agents/minimal/meta.toml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.ta/agents/uat-aws/meta.toml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.ta/worker +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/.task-agent/worktree-config.json +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/CLAUDE.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/GEMINI.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/Makefile +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/agent.env +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/architecture/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/chats/gemini-conversation-1773283034591.json +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/chats/project-init-to-v0.1.46.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/cli/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/development/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/docs/workflow/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/.env.example +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/README.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/instructions/manager.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/instructions/validator.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/instructions/worker.md +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/profiles/default.json +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/sidecars/adk-worker/pyproject.toml +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/__init__.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/__main__.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/audit.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/config.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/models/__init__.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/models/issue.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/models/metric.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/plugins/__init__.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/src/taskagent/plugins/github.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/test-dir/opencode.json +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/conftest.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/e2e/test_agent_sandboxing.sh +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_agent.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_cli_windows.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_discovery.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_manager.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_metrics.py +0 -0
- {task_agent-0.1.342 → task_agent-0.1.490}/tests/test_migration.py +0 -0
task_agent-0.1.490/.env
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
name = "agy-cli"
|
|
2
|
+
description = "AGY CLI agent workflow template running agy, claude, or opencode non-interactively"
|
|
3
|
+
|
|
4
|
+
[dotfiles]
|
|
5
|
+
".gitconfig" = { source = "inline", content = """
|
|
6
|
+
[user]
|
|
7
|
+
name = Agent
|
|
8
|
+
email = agent@localhost
|
|
9
|
+
[safe]
|
|
10
|
+
directory = *
|
|
11
|
+
""" }
|
|
12
|
+
".ssh/id_ed25519" = { source = "generate" }
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mission-control",
|
|
3
|
+
"resources": [
|
|
4
|
+
{
|
|
5
|
+
"name": "mission",
|
|
6
|
+
"path": "mission.usv",
|
|
7
|
+
"format": "csv",
|
|
8
|
+
"delimiter": "\u001f",
|
|
9
|
+
"schema": {
|
|
10
|
+
"fields": [
|
|
11
|
+
{
|
|
12
|
+
"name": "name",
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "slug",
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "dependencies",
|
|
21
|
+
"type": "string"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"detail": {"branch": "issue/allow-dots-in-task-slugs-for-numeric-hierarchies", "path": ".gwt/allow-dots-in-task-slugs-for-numeric-hierarchies"}, "e": "worktree.created", "slug": "allow-dots-in-task-slugs-for-numeric-hierarchies", "t": "2026-06-10T17:58:38.341215+00:00", "user": ""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Investigate better integration with Antigravity CLI of Claude CLIinvestigate-better-integration-with-antigravity-cli-of-claude-cli
|
|
2
|
+
Auto-clean .code_signatures.json after no-verify commitsauto-clean-code-signaturesjson-after-no-verify-commits
|
|
3
|
+
Remove dependency on GH CLI by adding APIremove-dependency-on-gh-cli-by-adding-api
|
|
4
|
+
Allow create task in other repoallow-create-task-in-other-repo
|
|
5
|
+
Add secondary documents to the task viewadd-secondary-documents-to-the-task-view
|
|
6
|
+
shard-completed-tasks-by-month-and-index-historyshard-completed-tasks-by-month-and-index-history
|
|
7
|
+
Create decompose feature to decompose a taskcreate-decompose-feature-to-decompose-a-task
|
|
8
|
+
Test Issuetest-issue
|
|
9
|
+
New Tasknew-tasktest-issue
|
|
10
|
+
Add Dependency model with required reason for dependency declarationsadd-dependency-model-with-required-reason-for-dependency-declarations
|
|
11
|
+
pyproject.toml (sketch)slug-identified-tasks-with-symlinked-state-folders
|
|
12
|
+
Test Interactive Tasktest-interactive-task## Description
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-18T22:01:50.644632-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Investigate better integration with Antigravity CLI of Claude CLI
|
|
6
|
+
|
|
7
|
+
Can we improve integration with agent CLIs?
|
|
8
|
+
|
|
9
|
+
agy has Gems and other tools integrations. Is there a tool model or interface that would give us even better integration with these CLIs, like maybe that would display status in the CLI interface or something like that?
|
|
10
|
+
|
|
11
|
+
Is there any way for us to encourage the tools to use task-agent as their default task manager? It is already working well, but should we be doing anything to make it even more integrated? Maybe by using the inter-agent protocol, or by using a locally running small version of Gemma to prioritize tasks and select the next task?
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Investigation: Enhancing Task Agent Integration with Agent CLIs
|
|
2
|
+
|
|
3
|
+
This report investigates improvements to the integration between **Task Agent** (`ta`) and developer agent CLIs such as **Antigravity CLI** (`agy`), **Claude Code** (`claude`), and **OpenCode** (`opencode`).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Overview of the Integration Architecture
|
|
8
|
+
|
|
9
|
+
Task Agent acts as a structured, prioritized task database (`mission.usv`). Developer CLIs interface with it using the **Model Context Protocol (MCP)**, granting LLMs tool-level access to query, update, and complete tasks.
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
graph TD
|
|
13
|
+
subgraph CLIs ["Agent CLIs"]
|
|
14
|
+
agy["Antigravity CLI (agy)"]
|
|
15
|
+
claude["Claude Code"]
|
|
16
|
+
opencode["OpenCode"]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
subgraph MCP ["Task Agent MCP Server"]
|
|
20
|
+
fastmcp["FastMCP Router"]
|
|
21
|
+
core["TaskAgent Core API"]
|
|
22
|
+
db[("mission.usv (Task DB)")]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
subgraph AI ["AI Prioritizer (Proposed)"]
|
|
26
|
+
gemma["Local Gemma 2B/9B (Ollama)"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
CLIs -- "Model Context Protocol" --> fastmcp
|
|
30
|
+
fastmcp --> core
|
|
31
|
+
core --> db
|
|
32
|
+
gemma -- "Analyze & Prioritize" --> db
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 2. Key Areas for Improvement & Proposals
|
|
38
|
+
|
|
39
|
+
### 💡 Proposal A: Shell Prompt Integration (`ta-prompt`)
|
|
40
|
+
Currently, developers must manually run `ta active` or `ta list` to see what task is active.
|
|
41
|
+
* **Concept**: Implement a shell integration (similar to git prompt builders like Starship) that displays the currently active task slug and priority directly in the terminal prompt.
|
|
42
|
+
* **Implementation**: Add a lightweight command:
|
|
43
|
+
```bash
|
|
44
|
+
ta prompt
|
|
45
|
+
# Outputs: [ta:create-agy-cli (p1)]
|
|
46
|
+
```
|
|
47
|
+
This can be sourced in `.bashrc` / `.zshrc` to keep the active task always visible to the developer.
|
|
48
|
+
|
|
49
|
+
### 🔌 Proposal B: Auto-configure Antigravity CLI (`agy`)
|
|
50
|
+
We already support auto-registering the task-agent MCP server with `claude` and `opencode` via `ta init-mcp`.
|
|
51
|
+
* **Concept**: Add support for registering with `agy`.
|
|
52
|
+
* **Implementation**: Extend `ta init-mcp` to support the `--agy` flag, which adds the task-agent MCP server configuration to `~/.gemini/antigravity-cli/mcp_config.json` automatically:
|
|
53
|
+
```bash
|
|
54
|
+
ta init-mcp --agy
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 🧠 Proposal C: Local Gemma-based Task Prioritization
|
|
58
|
+
Instead of manual priority adjustments, we can utilize a small, locally-running LLM (like Gemma 2B or 9B via Ollama) to prioritize the queue.
|
|
59
|
+
* **Concept**: Run a local Gemma model to analyze the dependencies, description complexity, and codebase context to auto-sort tasks.
|
|
60
|
+
* **Implementation Flow**:
|
|
61
|
+
1. Read all tasks from `mission.usv` (including titles, descriptions, and criteria).
|
|
62
|
+
2. Extract file references and recent commit histories to build context.
|
|
63
|
+
3. Call the local Gemma model (via `http://localhost:11434/api/generate`) with a structured prompt asking it to order the tasks by dependency and logical progression.
|
|
64
|
+
4. Write back the optimized ordering to `mission.usv`.
|
|
65
|
+
|
|
66
|
+
### 🤝 Proposal D: Inter-Agent Protocol (IAP) Coordination
|
|
67
|
+
For workspaces where multiple agents are running in parallel:
|
|
68
|
+
* **Concept**: Establish a protocol where agents notify each other about task state transitions.
|
|
69
|
+
* **Implementation**: Task Agent can write state transitions to a shared workspace channel (or lightweight SQLite lockfile) so that concurrent agents do not pick up the same active tasks or attempt conflicting merges.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 3. Recommended Next Steps
|
|
74
|
+
|
|
75
|
+
> [!IMPORTANT]
|
|
76
|
+
> 1. **Extend `ta init-mcp`**: Implement the `agy` target to facilitate zero-configuration MCP setups.
|
|
77
|
+
> 2. **Build `ta prompt`**: Create a fast, sub-millisecond command suitable for shell prompts to display the active task.
|
|
78
|
+
> 3. **Draft Gemma script**: Write a prototype Python script under `scripts/prioritize_gemma.py` that interfaces with Ollama to sort USV tasks.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-04-06T11:06:56-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add an interactive new
|
|
6
|
+
|
|
7
|
+
Allow users to add a new item by opening a new task template for the body.
|
|
8
|
+
|
|
9
|
+
Have them enter the name at the CLI, and fill that into the new document, along with the date.
|
|
10
|
+
|
|
11
|
+
Then, but the cursor in the body part.
|
|
12
|
+
|
|
13
|
+
When they save and close, it should ingest the task, and return back to the terminal.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
**Completed in commit:** `2a13572`
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-05-15T09:34:12-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add configuration file support for GitHub plugin
|
|
6
|
+
|
|
7
|
+
Allow storing GitHub token and repo in .ta-config.json or worktree-config.json. Add validation for required fields.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
**Completed in commit:** `a825289`
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-18T18:25:56-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add date created to `ta list` and `ta prior`
|
|
6
|
+
|
|
7
|
+
Add the date to the list. Put it between priorty and status. Make it the same color as "DRAFT".
|
|
8
|
+
|
|
9
|
+
## Solution
|
|
10
|
+
|
|
11
|
+
Added Created date column to ta list and ta prior (cmd_triage) tables between Priority/Pos and Status, styled as dim (same as DRAFT).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
**Completed in commit:** `773b2b1`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-14T10:03:52-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add --post-setup hook to ta init-agent for per-repo secrets
|
|
6
|
+
|
|
7
|
+
Add a --post-setup <script> flag to ta init-agent that runs an arbitrary script or command after the agent user is fully created (useradd, sudoers, SSH key, template dotfiles). This enables injecting per-repo secrets (GPG keys, npm tokens, custom SSH configs) that aren't in the template.
|
|
8
|
+
|
|
9
|
+
Context:
|
|
10
|
+
Currently agent setup creates a Linux user, generates SSH keys, materializes template dotfiles, and configures sudoers. But there's no hook for post-creation customization. Teams need a way to inject repo-specific secrets that shouldn't live in the shared template.
|
|
11
|
+
|
|
12
|
+
Requirements:
|
|
13
|
+
1. Add --post-setup <script> argument to ta init-agent subparser
|
|
14
|
+
2. After agent.init_agent() succeeds, execute the script via subprocess
|
|
15
|
+
3. The script receives the agent username as the first argument (or via AGENT_USER env var)
|
|
16
|
+
4. The script is invoked as the agent user (sudo -u agent_user <script>) so it has access to the agent's home directory
|
|
17
|
+
5. Report stdout/stderr from the script for transparency
|
|
18
|
+
6. If the script exits non-zero, print a warning but don't crash the init
|
|
19
|
+
7. Also add --post-setup to ta start for per-task agents (runs after init_per_task_agent)
|
|
20
|
+
8. Document in docs/task-agents.md with examples
|
|
21
|
+
|
|
22
|
+
Examples of post-setup scripts:
|
|
23
|
+
- op read "op://team/gpg/private-key" | gpg --import
|
|
24
|
+
- echo "//npm.pkg.github.com/:_authToken=TOKEN" > ~/.npmrc
|
|
25
|
+
- curl -s https://internal-ca.example.com/ca.crt > ~/.local/share/ca-certificates/internal.crt
|
|
26
|
+
|
|
27
|
+
Implementation notes:
|
|
28
|
+
- For shared agents (ta init-agent): run from cmd_init_agent in cli.py
|
|
29
|
+
- For per-task agents (ta start --agent): run from cmd_start in cli.py after init_per_task_agent
|
|
30
|
+
- Use sudo -u <user> -E to preserve selected env vars if needed
|
|
31
|
+
- The script path can be absolute or relative to cwd
|
|
32
|
+
|
|
33
|
+
Completion Criteria:
|
|
34
|
+
- --post-setup arg on ta init-agent subparser
|
|
35
|
+
- Script executes as agent user after full setup
|
|
36
|
+
- Script receives AGENT_USER env var
|
|
37
|
+
- Non-zero exit warns but doesn't crash
|
|
38
|
+
- --post-setup also works with ta start --agent
|
|
39
|
+
- Unit tests mocking subprocess.run for post-setup success/failure
|
|
40
|
+
- Documentation with examples in docs/task-agents.md
|
|
41
|
+
- All existing tests pass
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
**Completed in commit:** `<pending-commit-id>`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-04-05T11:07:46-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add search feature
|
|
6
|
+
|
|
7
|
+
The user should be able to search for a task
|
|
8
|
+
|
|
9
|
+
task-agent should search by slug.
|
|
10
|
+
|
|
11
|
+
It should match by the begining of the slug, so pattern match with a wildcard end.
|
|
12
|
+
|
|
13
|
+
If one task is found, task-agent should present that task in view mode and allow edit mode from the view.
|
|
14
|
+
|
|
15
|
+
If multiple match, present a navigable list and use `l` to select one for viewing, and `h` to go back to the list.
|
|
16
|
+
|
|
17
|
+
`q` to exit.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
**Completed in commit:** `2f481c0`
|
task_agent-0.1.490/.task-agent/tasks/completed/2026/add-ta-mr-list-and-ta-merge-commands/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-03-22T13:51:44-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Add ta mr list and ta merge commands
|
|
6
|
+
|
|
7
|
+
**Depends on:** implement-merge-request-queue
|
|
8
|
+
|
|
9
|
+
Implement 'ta mr list' to view pending completion notifications and 'ta merge <slug>' to finalize a task (performing the 'ta done' logic of archiving and auto-committing).
|
|
10
|
+
|
|
11
|
+
## Solution
|
|
12
|
+
|
|
13
|
+
Implemented 'ta mr list' and 'ta merge <slug>' for reviewable autonomous workflows.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
**Completed in commit:** `9dc7634`
|
task_agent-0.1.490/.task-agent/tasks/completed/2026/agent-sandboxing-via-linux-accounts/README.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-14T10:03:52-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
### Task spec: agent-sandboxing-via-linux-accounts
|
|
6
|
+
|
|
7
|
+
**Replaces:** `integrate-gh-cli-alt-accounts`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
#### 1. Problem
|
|
12
|
+
|
|
13
|
+
Agents launched via `ta run` inherit the human's shell environment — `direnv`,
|
|
14
|
+
`mise`, and cached credentials loaded in the human's session. This means an
|
|
15
|
+
agent can accidentally deploy to PROD if PROD credentials happen to be loaded
|
|
16
|
+
or cached.
|
|
17
|
+
|
|
18
|
+
The current `GH_CONFIG_DIR` approach isolates GitHub CLI tokens only. It
|
|
19
|
+
doesn't address AWS, Azure, GCP, Kubernetes, or any other PROD credentials.
|
|
20
|
+
A proper solution must make the agent **PROD-incompetent by construction**.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
#### 2. Solution
|
|
25
|
+
|
|
26
|
+
Run agent processes as a dedicated Linux user. The agent user has its own home
|
|
27
|
+
directory with only UAT/non-PROD credentials configured. It physically lacks
|
|
28
|
+
the SSH keys, cloud profiles, and tokens needed to access PROD.
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
+--------------------+ +----------------------------+
|
|
32
|
+
| Human (mark) | | Agent (agent-{template}) |
|
|
33
|
+
| | | |
|
|
34
|
+
| ~/.ssh/id_ed25519 | | ~/.ssh/agent_ed25519 |
|
|
35
|
+
| ~/.config/gh/human | | ~/.config/gh/agent |
|
|
36
|
+
| ~/.aws/prod | | ~/.aws/uat |
|
|
37
|
+
| PROD credentials | | UAT-only credentials |
|
|
38
|
+
+--------------------+ +----------------------------+
|
|
39
|
+
\ /
|
|
40
|
+
\ /
|
|
41
|
+
git push to bare remote /
|
|
42
|
+
\ /
|
|
43
|
+
\ /
|
|
44
|
+
+---------------------------+
|
|
45
|
+
| /srv/git/repo.git |
|
|
46
|
+
| (common bare remote) |
|
|
47
|
+
+---------------------------+
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Key invariant:** The agent Linux user's home directory contains only
|
|
51
|
+
non-PROD credentials. There is no way for the agent to accidentally deploy to
|
|
52
|
+
PROD — it simply doesn't have the keys.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
#### 3. Phase 1 — Core isolation
|
|
57
|
+
|
|
58
|
+
**`ta init-agent <name>`** — New command that:
|
|
59
|
+
|
|
60
|
+
1. Creates a Linux user (`sudo adduser --system agent-<name>`)
|
|
61
|
+
2. Generates an SSH key for the agent user
|
|
62
|
+
3. Configures `~agent-<name>/.gitconfig` with agent identity
|
|
63
|
+
4. Sets up `~agent-<name>/.config/gh/` (optional, prompted)
|
|
64
|
+
5. Installs a sudoers drop-in: `human ALL=(agent-<name>) NOPASSWD: /path/to/ta`
|
|
65
|
+
6. Outputs a summary of what was created
|
|
66
|
+
|
|
67
|
+
**`ta run` changes:**
|
|
68
|
+
|
|
69
|
+
Worker is launched via `sudo -u agent-<name>` rather than directly.
|
|
70
|
+
Environment variables (`TA_SLUG`, `TA_FILE`, `TA_ROOT`) are passed explicitly
|
|
71
|
+
via `env` on the sudo command line. Working directory is set to the worktree
|
|
72
|
+
path via `--chdir`.
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
# Current
|
|
76
|
+
subprocess.run([str(worker)], env=env)
|
|
77
|
+
|
|
78
|
+
# New
|
|
79
|
+
subprocess.run([
|
|
80
|
+
"sudo", "-u", agent_user,
|
|
81
|
+
"--chdir", str(worktree_path),
|
|
82
|
+
"env", f"TA_SLUG={slug}", f"TA_FILE={file}", f"TA_ROOT={root}",
|
|
83
|
+
str(worker)
|
|
84
|
+
])
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**`ta start` changes:**
|
|
88
|
+
|
|
89
|
+
- After creating the worktree at `.gwt/{slug}/`, sets group permissions:
|
|
90
|
+
- `chown -R :agent-<name> .gwt/{slug}/`
|
|
91
|
+
- `chmod -R g+rwX .gwt/{slug}/`
|
|
92
|
+
- If the agent user needs to create the worktree, uses
|
|
93
|
+
`sudo -u agent-<name> git worktree add`
|
|
94
|
+
|
|
95
|
+
**`~agent-<name>/.gitconfig`:**
|
|
96
|
+
|
|
97
|
+
```ini
|
|
98
|
+
[user]
|
|
99
|
+
name = Agent Name
|
|
100
|
+
email = agent@domain.com
|
|
101
|
+
[safe]
|
|
102
|
+
directory = /home/mark/repo/.gwt/*
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The `safe.directory` entry prevents Git from refusing to operate in the
|
|
106
|
+
worktree (owned by human).
|
|
107
|
+
|
|
108
|
+
**Worktree filesystem layout:**
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
.gwt/{slug}/ # owned by human
|
|
112
|
+
group: agent-<name> # agent group can read/write
|
|
113
|
+
permissions: 2775 # setgid bit so new files inherit group
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**`~agent-<name>/.local/bin/uv`:** On init, `uv` is symlinked into the agent
|
|
117
|
+
user's `~/.local/bin/` so the agent can run `uv`-based worker scripts without
|
|
118
|
+
requiring the human's PATH.
|
|
119
|
+
|
|
120
|
+
**`~agent-<name>/.profile`:** Created with a PATH entry that adds
|
|
121
|
+
`~/.local/bin`, so login shells (`bash -l`) resolve `uv` and future tooling.
|
|
122
|
+
|
|
123
|
+
**`ta run --agent` invocation:** Uses `bash -l -c` instead of `sh -c` so the
|
|
124
|
+
agent's `.profile` is sourced before running the worker:
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
subprocess.run([
|
|
128
|
+
"sudo", "-u", agent_user,
|
|
129
|
+
"bash", "-l", "-c",
|
|
130
|
+
"cd <worktree> && exec env TA_SLUG=... TA_FILE=... TA_ROOT=... <worker>"
|
|
131
|
+
])
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
**Subtasks:**
|
|
137
|
+
|
|
138
|
+
- Phase 2 — Agent templates (`docs/tasks/draft/phase-2-agent-templates/`)
|
|
139
|
+
- **Depends on:** this task
|
|
140
|
+
- Template system for `ta init-agent --template <name>`
|
|
141
|
+
- Phase 3 — Per-task isolation (`docs/tasks/draft/phase-3-per-task-isolation/`)
|
|
142
|
+
- **Depends on:** this task, phase-2-agent-templates
|
|
143
|
+
- `ta start --agent <template>` creates a dedicated agent per task
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
#### 6. Design decisions
|
|
148
|
+
|
|
149
|
+
| Decision | Choice | Rationale |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| User creation method | `sudo adduser --system` | Consistent, scriptable, no interactive prompts |
|
|
152
|
+
| Agent invocation | `sudo -u agent-<name> bash -l -c "cd <worktree> && exec env ... <worker>"` | Login shell sources profile for PATH; `exec env` passes task env vars explicitly |
|
|
153
|
+
| Worktree ownership | Human + group agent | Human can read/write, agent can read/write via group |
|
|
154
|
+
| Credential provisioning | `op://` at init time, static files at runtime | No 1Password dependency during agent execution |
|
|
155
|
+
| Template storage | `.ta/agents/<name>/` in project repo | Version-controlled, shareable across team |
|
|
156
|
+
| Tool discovery | Symlink `uv` into `~agent/.local/bin/` at init time | Agent finds tools without inheriting human PATH |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
#### 7. Open questions
|
|
161
|
+
|
|
162
|
+
1. **Default agent.** Should `ta run` (without `--agent`) use a default agent
|
|
163
|
+
user? If so, how is it configured?
|
|
164
|
+
2. **Cleanup.** Should there be a `ta destroy-agent <name>` that removes the
|
|
165
|
+
Linux user and cleans up?
|
|
166
|
+
3. **Non-Linux.** macOS has no `adduser --system`. Should we skip, or
|
|
167
|
+
implement via `sysadminctl`?
|
|
168
|
+
4. **Worktree creation.** Should `ta start` create the worktree as the human
|
|
169
|
+
or the agent? Human is simpler for the initial implementation.
|
|
170
|
+
5. **Multiple agents.** Can a single worktree be used by multiple agent users
|
|
171
|
+
simultaneously? (Probably no — single agent per worktree.)
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
#### 8. Files affected
|
|
176
|
+
|
|
177
|
+
| File | Change |
|
|
178
|
+
|---|---|
|
|
179
|
+
| `src/taskagent/agent.py` | New module — `init_agent()`, `destroy_agent()`, user management, worktree permissions, profile/tool provisioning |
|
|
180
|
+
| `src/taskagent/cli.py` | Add `cmd_init_agent()`, modify `cmd_run()` (sudo + bash -l -c) and `cmd_start()` (chgrp) |
|
|
181
|
+
| `src/taskagent/mcp.py` | `run_task`, `complete_task` tools need agent user context (minor) |
|
|
182
|
+
| `tests/test_agent.py` | Unit tests for agent module |
|
|
183
|
+
| `docs/tasks/active/agent-sandboxing-via-linux-accounts/README.md` | This spec |
|
|
184
|
+
| `tests/e2e/test_agent_sandboxing.sh` | End-to-end test script |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
#### 9. Completion Criteria
|
|
189
|
+
|
|
190
|
+
**Phase 1 — Core isolation:**
|
|
191
|
+
|
|
192
|
+
1. `ta init-agent <name>` creates a Linux user with:
|
|
193
|
+
- SSH key in `~agent-<name>/.ssh/`
|
|
194
|
+
- Git config in `~agent-<name>/.gitconfig`
|
|
195
|
+
- `~agent-<name>/.profile` adding `~/.local/bin` to PATH
|
|
196
|
+
- `uv` symlinked into `~agent-<name>/.local/bin/uv`
|
|
197
|
+
- Sudoers drop-in for passwordless ta/worker execution
|
|
198
|
+
- Summary output of what was created
|
|
199
|
+
- Graceful error if sudo is unavailable
|
|
200
|
+
|
|
201
|
+
2. `ta start --agent <name>` sets worktree permissions (group + ACL) so the
|
|
202
|
+
agent user can read and write the worktree.
|
|
203
|
+
|
|
204
|
+
3. `ta run` for an active (or pending/draft) task executes the worker via
|
|
205
|
+
`sudo -u <agent>` with environment variables (`TA_SLUG`, `TA_FILE`,
|
|
206
|
+
`TA_ROOT`) passed explicitly on the command line, not inherited.
|
|
207
|
+
|
|
208
|
+
4. All existing tests continue to pass.
|
|
209
|
+
|
|
210
|
+
5. New unit tests cover:
|
|
211
|
+
- Sudo invocation arguments and working directory
|
|
212
|
+
- `adduser`/`useradd` invocation arguments
|
|
213
|
+
- Graceful failure when sudo is unavailable
|
|
214
|
+
- Graceful failure when agent user doesn't exist
|
|
215
|
+
- Worktree permission setup
|
|
216
|
+
|
|
217
|
+
6. New e2e test at `tests/e2e/test_agent_sandboxing.sh` covers:
|
|
218
|
+
- Full lifecycle: `init-agent` → `ta new` → `ta start --agent` →
|
|
219
|
+
`ta run` → verify agent user context → `destroy-agent`
|
|
220
|
+
- E2e test runs in CI on Ubuntu (container or VM)
|
|
221
|
+
- E2e test must pass before the task is accepted
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
**Completed in commit:** `<pending-commit-id>`
|
task_agent-0.1.490/.task-agent/tasks/completed/2026/agents-report-commands-are-hanging/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-19T11:10:33.219725-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Agents report commands are hanging
|
|
6
|
+
|
|
7
|
+
I am getting reports like this:
|
|
8
|
+
|
|
9
|
+
> It looks like the tool use was rejected rather than hanging. This is similar to the earlier issue we had where task-agent's auto-commit failed because the working tree was already clean (we had committed manually).
|
|
10
|
+
|
|
11
|
+
How can we improve the reliability of the command that might involve git commits on repos that might have commit hooks?
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
**Completed in commit:** `380e073`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
created_at: 2026-06-14T10:03:52-07:00
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Allow dots in task slugs for numeric hierarchies
|
|
6
|
+
|
|
7
|
+
The `slugify` method in `manager.py` uses the regex `[^\w\s-]` which strips dots from task titles. This prevents agents from using numeric hierarchy notation like `1.1`, `1.2`, `2.1` etc. in task titles, which some agents natively produce when decomposing work.
|
|
8
|
+
|
|
9
|
+
**Problem:**
|
|
10
|
+
- `slugify()` at `manager.py:224` removes all non-word characters including `.`
|
|
11
|
+
- `slugify('1.1 Setup CI')` → `1-1-setup-ci` instead of `1.1-setup-ci`
|
|
12
|
+
- This breaks round-trip fidelity when an agent generates a numbered task breakdown and the slugs lose their structural hierarchy
|
|
13
|
+
|
|
14
|
+
**Solution:**
|
|
15
|
+
- Add `.` to the allowed character set in `slugify()`, e.g. `[^\w\s.-]`
|
|
16
|
+
- Audit all downstream consumers of slugs to ensure dots don't break:
|
|
17
|
+
- `find_issue_file()` — uses file globs and path joins; dots in directory names are valid on all OS
|
|
18
|
+
- `mission.usv` parser — uses USV (`\x1f`) delimiter, not dot-separated
|
|
19
|
+
- `move_to_active()` / worktree paths — dots in branch/worktree names are valid in git
|
|
20
|
+
- `complete_issue()` — stores in `completed/` directories; dots are valid
|
|
21
|
+
- `soft_delete_issue()` — stores in `deleted/`; dots are valid
|
|
22
|
+
- Add unit tests for slugify with dot-containing titles
|
|
23
|
+
- Add an integration test: create a task titled `1.1 Test Task`, verify slug is `1.1-test-task`, verify file operations succeed
|
|
24
|
+
|
|
25
|
+
**Risk:**
|
|
26
|
+
- Existing slugs won't change (they have no dots).
|
|
27
|
+
- `find_issue_file()` uses `glob(f\"{slug}.*\")` which could match multiple entries if other files contain the slug as a prefix with dot. But this is the same risk as any existing slug (e.g. `foo` matching `foo.md` vs `foo-bar.md`). No regression.
|
|
28
|
+
|
|
29
|
+
**Completion Criteria:**
|
|
30
|
+
- [ ] `slugify()` updated to preserve `.` characters
|
|
31
|
+
- [ ] All downstream slug consumers verified for dot-compatibility
|
|
32
|
+
- [ ] Existing test suite passes (no regressions from dot-allowing)
|
|
33
|
+
- [ ] New unit tests for dot-slug variants
|
|
34
|
+
- [ ] Manual test: `ta new '1.1 Test Task' && ta list` shows slug `1.1-test-task`
|
|
35
|
+
- [ ] Manual test: worktree creation with a dot-containing slug works
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
**Completed in commit:** `<pending-commit-id>`
|