agentic-devtools 0.2.0__py3-none-any.whl
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.
- agdt_ai_helpers/__init__.py +34 -0
- agentic_devtools/__init__.py +8 -0
- agentic_devtools/background_tasks.py +598 -0
- agentic_devtools/cli/__init__.py +1 -0
- agentic_devtools/cli/azure_devops/__init__.py +222 -0
- agentic_devtools/cli/azure_devops/async_commands.py +1218 -0
- agentic_devtools/cli/azure_devops/auth.py +34 -0
- agentic_devtools/cli/azure_devops/commands.py +728 -0
- agentic_devtools/cli/azure_devops/config.py +49 -0
- agentic_devtools/cli/azure_devops/file_review_commands.py +1038 -0
- agentic_devtools/cli/azure_devops/helpers.py +561 -0
- agentic_devtools/cli/azure_devops/mark_reviewed.py +756 -0
- agentic_devtools/cli/azure_devops/pipeline_commands.py +724 -0
- agentic_devtools/cli/azure_devops/pr_summary_commands.py +579 -0
- agentic_devtools/cli/azure_devops/pull_request_details_commands.py +596 -0
- agentic_devtools/cli/azure_devops/review_commands.py +700 -0
- agentic_devtools/cli/azure_devops/review_helpers.py +191 -0
- agentic_devtools/cli/azure_devops/review_jira.py +308 -0
- agentic_devtools/cli/azure_devops/review_prompts.py +263 -0
- agentic_devtools/cli/azure_devops/run_details_commands.py +935 -0
- agentic_devtools/cli/azure_devops/vpn_toggle.py +1220 -0
- agentic_devtools/cli/git/__init__.py +91 -0
- agentic_devtools/cli/git/async_commands.py +294 -0
- agentic_devtools/cli/git/commands.py +399 -0
- agentic_devtools/cli/git/core.py +152 -0
- agentic_devtools/cli/git/diff.py +210 -0
- agentic_devtools/cli/git/operations.py +737 -0
- agentic_devtools/cli/jira/__init__.py +114 -0
- agentic_devtools/cli/jira/adf.py +105 -0
- agentic_devtools/cli/jira/async_commands.py +439 -0
- agentic_devtools/cli/jira/async_status.py +27 -0
- agentic_devtools/cli/jira/commands.py +28 -0
- agentic_devtools/cli/jira/comment_commands.py +141 -0
- agentic_devtools/cli/jira/config.py +69 -0
- agentic_devtools/cli/jira/create_commands.py +293 -0
- agentic_devtools/cli/jira/formatting.py +131 -0
- agentic_devtools/cli/jira/get_commands.py +287 -0
- agentic_devtools/cli/jira/helpers.py +278 -0
- agentic_devtools/cli/jira/parse_error_report.py +352 -0
- agentic_devtools/cli/jira/role_commands.py +560 -0
- agentic_devtools/cli/jira/state_helpers.py +39 -0
- agentic_devtools/cli/jira/update_commands.py +222 -0
- agentic_devtools/cli/jira/vpn_wrapper.py +58 -0
- agentic_devtools/cli/release/__init__.py +5 -0
- agentic_devtools/cli/release/commands.py +113 -0
- agentic_devtools/cli/release/helpers.py +113 -0
- agentic_devtools/cli/runner.py +318 -0
- agentic_devtools/cli/state.py +174 -0
- agentic_devtools/cli/subprocess_utils.py +109 -0
- agentic_devtools/cli/tasks/__init__.py +28 -0
- agentic_devtools/cli/tasks/commands.py +851 -0
- agentic_devtools/cli/testing.py +442 -0
- agentic_devtools/cli/workflows/__init__.py +80 -0
- agentic_devtools/cli/workflows/advancement.py +204 -0
- agentic_devtools/cli/workflows/base.py +240 -0
- agentic_devtools/cli/workflows/checklist.py +278 -0
- agentic_devtools/cli/workflows/commands.py +1610 -0
- agentic_devtools/cli/workflows/manager.py +802 -0
- agentic_devtools/cli/workflows/preflight.py +323 -0
- agentic_devtools/cli/workflows/worktree_setup.py +1110 -0
- agentic_devtools/dispatcher.py +704 -0
- agentic_devtools/file_locking.py +203 -0
- agentic_devtools/prompts/__init__.py +38 -0
- agentic_devtools/prompts/apply-pull-request-review-suggestions/default-initiate-prompt.md +82 -0
- agentic_devtools/prompts/create-jira-epic/default-initiate-prompt.md +63 -0
- agentic_devtools/prompts/create-jira-issue/default-initiate-prompt.md +306 -0
- agentic_devtools/prompts/create-jira-subtask/default-initiate-prompt.md +57 -0
- agentic_devtools/prompts/loader.py +377 -0
- agentic_devtools/prompts/pull-request-review/default-completion-prompt.md +45 -0
- agentic_devtools/prompts/pull-request-review/default-decision-prompt.md +63 -0
- agentic_devtools/prompts/pull-request-review/default-file-review-prompt.md +69 -0
- agentic_devtools/prompts/pull-request-review/default-initiate-prompt.md +50 -0
- agentic_devtools/prompts/pull-request-review/default-summary-prompt.md +40 -0
- agentic_devtools/prompts/update-jira-issue/default-initiate-prompt.md +78 -0
- agentic_devtools/prompts/work-on-jira-issue/default-checklist-creation-prompt.md +58 -0
- agentic_devtools/prompts/work-on-jira-issue/default-commit-prompt.md +47 -0
- agentic_devtools/prompts/work-on-jira-issue/default-completion-prompt.md +65 -0
- agentic_devtools/prompts/work-on-jira-issue/default-implementation-prompt.md +66 -0
- agentic_devtools/prompts/work-on-jira-issue/default-implementation-review-prompt.md +60 -0
- agentic_devtools/prompts/work-on-jira-issue/default-initiate-prompt.md +67 -0
- agentic_devtools/prompts/work-on-jira-issue/default-planning-prompt.md +50 -0
- agentic_devtools/prompts/work-on-jira-issue/default-pull-request-prompt.md +56 -0
- agentic_devtools/prompts/work-on-jira-issue/default-retrieve-prompt.md +29 -0
- agentic_devtools/prompts/work-on-jira-issue/default-setup-prompt.md +19 -0
- agentic_devtools/prompts/work-on-jira-issue/default-verification-prompt.md +73 -0
- agentic_devtools/state.py +754 -0
- agentic_devtools/task_state.py +902 -0
- agentic_devtools-0.2.0.dist-info/METADATA +544 -0
- agentic_devtools-0.2.0.dist-info/RECORD +92 -0
- agentic_devtools-0.2.0.dist-info/WHEEL +4 -0
- agentic_devtools-0.2.0.dist-info/entry_points.txt +79 -0
- agentic_devtools-0.2.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,704 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Smart dispatcher for agentic-devtools that detects repo-local installations.
|
|
3
|
+
|
|
4
|
+
This module provides entry point wrappers that:
|
|
5
|
+
1. Detect the current git repository root
|
|
6
|
+
2. Check if that repo has a local .agdt-venv with agentic-devtools installed
|
|
7
|
+
3. If yes, delegate to that installation (re-exec with the local Python)
|
|
8
|
+
4. If no, run the command locally using the global installation
|
|
9
|
+
|
|
10
|
+
This enables multi-worktree development where each worktree can have its own
|
|
11
|
+
version of agentic-devtools while keeping the simple `agdt-*` command interface.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import subprocess
|
|
15
|
+
import sys
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
|
|
18
|
+
# Name of the local venv directory
|
|
19
|
+
AGDT_VENV_NAME = ".agdt-venv"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def get_repo_root() -> Path | None:
|
|
23
|
+
"""
|
|
24
|
+
Get the git repository root for the current working directory.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
Path to the repo root, or None if not in a git repo.
|
|
28
|
+
"""
|
|
29
|
+
try:
|
|
30
|
+
result = subprocess.run(
|
|
31
|
+
["git", "rev-parse", "--show-toplevel"],
|
|
32
|
+
capture_output=True,
|
|
33
|
+
text=True,
|
|
34
|
+
check=False,
|
|
35
|
+
)
|
|
36
|
+
if result.returncode == 0 and result.stdout.strip():
|
|
37
|
+
return Path(result.stdout.strip())
|
|
38
|
+
except (FileNotFoundError, OSError):
|
|
39
|
+
pass
|
|
40
|
+
return None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_local_venv_python() -> Path | None:
|
|
44
|
+
"""
|
|
45
|
+
Find the Python executable in the current repo's local venv.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
Path to the venv's Python executable, or None if not found.
|
|
49
|
+
"""
|
|
50
|
+
repo_root = get_repo_root()
|
|
51
|
+
if not repo_root:
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
venv_path = repo_root / AGDT_VENV_NAME
|
|
55
|
+
|
|
56
|
+
if not venv_path.exists():
|
|
57
|
+
return None
|
|
58
|
+
|
|
59
|
+
# Check for Python in the venv (Windows vs Unix paths)
|
|
60
|
+
if sys.platform == "win32":
|
|
61
|
+
python_exe = venv_path / "Scripts" / "python.exe"
|
|
62
|
+
else:
|
|
63
|
+
python_exe = venv_path / "bin" / "python"
|
|
64
|
+
|
|
65
|
+
if python_exe.exists():
|
|
66
|
+
return python_exe
|
|
67
|
+
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def is_running_from_local_venv() -> bool:
|
|
72
|
+
"""
|
|
73
|
+
Check if we're already running from a repo-local .agdt-venv.
|
|
74
|
+
|
|
75
|
+
This prevents infinite recursion when the local venv dispatches to itself.
|
|
76
|
+
"""
|
|
77
|
+
current_exe = Path(sys.executable).resolve()
|
|
78
|
+
repo_root = get_repo_root()
|
|
79
|
+
|
|
80
|
+
if not repo_root:
|
|
81
|
+
return False
|
|
82
|
+
|
|
83
|
+
venv_path = (repo_root / AGDT_VENV_NAME).resolve()
|
|
84
|
+
|
|
85
|
+
# Check if current Python is inside the local venv
|
|
86
|
+
try:
|
|
87
|
+
current_exe.relative_to(venv_path)
|
|
88
|
+
return True
|
|
89
|
+
except ValueError:
|
|
90
|
+
return False
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def dispatch_to_local_venv(command_name: str) -> bool:
|
|
94
|
+
"""
|
|
95
|
+
Attempt to dispatch the command to a repo-local venv installation.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
command_name: The agdt-* command name (e.g., 'agdt-set', 'agdt-get')
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
True if dispatched (and this process should exit), False to run locally.
|
|
102
|
+
"""
|
|
103
|
+
# Don't dispatch if we're already in the local venv
|
|
104
|
+
if is_running_from_local_venv():
|
|
105
|
+
return False
|
|
106
|
+
|
|
107
|
+
local_python = get_local_venv_python()
|
|
108
|
+
if not local_python:
|
|
109
|
+
return False
|
|
110
|
+
|
|
111
|
+
# Re-exec the command using the local venv's Python
|
|
112
|
+
# Use the runner module to dispatch to the right entry point
|
|
113
|
+
try:
|
|
114
|
+
result = subprocess.run(
|
|
115
|
+
[
|
|
116
|
+
str(local_python),
|
|
117
|
+
"-m",
|
|
118
|
+
"agentic_devtools.cli.runner",
|
|
119
|
+
command_name,
|
|
120
|
+
]
|
|
121
|
+
+ sys.argv[1:],
|
|
122
|
+
check=False,
|
|
123
|
+
)
|
|
124
|
+
sys.exit(result.returncode)
|
|
125
|
+
except (FileNotFoundError, OSError):
|
|
126
|
+
# If dispatch fails, fall back to local execution
|
|
127
|
+
return False
|
|
128
|
+
|
|
129
|
+
return True
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def create_dispatcher(command_name: str, module_name: str, func_name: str):
|
|
133
|
+
"""
|
|
134
|
+
Create a dispatcher function for a agdt-* command.
|
|
135
|
+
|
|
136
|
+
The dispatcher will:
|
|
137
|
+
1. Try to delegate to a repo-local venv if one exists
|
|
138
|
+
2. Fall back to running the command locally
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
command_name: The agdt-* command name (e.g., 'agdt-set')
|
|
142
|
+
module_name: The module containing the actual implementation
|
|
143
|
+
func_name: The function name to call
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
A callable that can be used as an entry point.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
def dispatcher():
|
|
150
|
+
try:
|
|
151
|
+
# Try to dispatch to local venv first
|
|
152
|
+
if dispatch_to_local_venv(command_name):
|
|
153
|
+
return # Won't reach here - dispatch_to_local_venv exits
|
|
154
|
+
|
|
155
|
+
# Run locally - import and call the actual function
|
|
156
|
+
import importlib
|
|
157
|
+
|
|
158
|
+
module = importlib.import_module(module_name)
|
|
159
|
+
func = getattr(module, func_name)
|
|
160
|
+
func()
|
|
161
|
+
except KeyboardInterrupt:
|
|
162
|
+
print("\nOperation cancelled.")
|
|
163
|
+
sys.exit(130) # Standard exit code for SIGINT
|
|
164
|
+
|
|
165
|
+
return dispatcher
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
# =============================================================================
|
|
169
|
+
# Entry point dispatchers
|
|
170
|
+
# =============================================================================
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
# State management
|
|
174
|
+
def set_cmd():
|
|
175
|
+
create_dispatcher("agdt-set", "agentic_devtools.cli.state", "set_cmd")()
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def get_cmd():
|
|
179
|
+
create_dispatcher("agdt-get", "agentic_devtools.cli.state", "get_cmd")()
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def delete_cmd():
|
|
183
|
+
create_dispatcher("agdt-delete", "agentic_devtools.cli.state", "delete_cmd")()
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def clear_cmd():
|
|
187
|
+
create_dispatcher("agdt-clear", "agentic_devtools.cli.state", "clear_cmd")()
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def show_cmd():
|
|
191
|
+
create_dispatcher("agdt-show", "agentic_devtools.cli.state", "show_cmd")()
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def get_workflow_cmd():
|
|
195
|
+
create_dispatcher(
|
|
196
|
+
"agdt-get-workflow", "agentic_devtools.cli.state", "get_workflow_cmd"
|
|
197
|
+
)()
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def clear_workflow_cmd():
|
|
201
|
+
create_dispatcher(
|
|
202
|
+
"agdt-clear-workflow", "agentic_devtools.cli.state", "clear_workflow_cmd"
|
|
203
|
+
)()
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
# Azure DevOps
|
|
207
|
+
def add_pull_request_comment_async():
|
|
208
|
+
create_dispatcher(
|
|
209
|
+
"agdt-add-pull-request-comment",
|
|
210
|
+
"agentic_devtools.cli.azure_devops",
|
|
211
|
+
"add_pull_request_comment_async",
|
|
212
|
+
)()
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def approve_pull_request_async():
|
|
216
|
+
create_dispatcher(
|
|
217
|
+
"agdt-approve-pull-request",
|
|
218
|
+
"agentic_devtools.cli.azure_devops",
|
|
219
|
+
"approve_pull_request_async",
|
|
220
|
+
)()
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def create_pull_request_async_cli():
|
|
224
|
+
create_dispatcher(
|
|
225
|
+
"agdt-create-pull-request",
|
|
226
|
+
"agentic_devtools.cli.azure_devops",
|
|
227
|
+
"create_pull_request_async_cli",
|
|
228
|
+
)()
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def get_pull_request_threads_async():
|
|
232
|
+
create_dispatcher(
|
|
233
|
+
"agdt-get-pull-request-threads",
|
|
234
|
+
"agentic_devtools.cli.azure_devops",
|
|
235
|
+
"get_pull_request_threads_async",
|
|
236
|
+
)()
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def reply_to_pull_request_thread_async():
|
|
240
|
+
create_dispatcher(
|
|
241
|
+
"agdt-reply-to-pull-request-thread",
|
|
242
|
+
"agentic_devtools.cli.azure_devops",
|
|
243
|
+
"reply_to_pull_request_thread_async",
|
|
244
|
+
)()
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def resolve_thread_async():
|
|
248
|
+
create_dispatcher(
|
|
249
|
+
"agdt-resolve-thread",
|
|
250
|
+
"agentic_devtools.cli.azure_devops",
|
|
251
|
+
"resolve_thread_async",
|
|
252
|
+
)()
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def mark_pull_request_draft_async():
|
|
256
|
+
create_dispatcher(
|
|
257
|
+
"agdt-mark-pull-request-draft",
|
|
258
|
+
"agentic_devtools.cli.azure_devops",
|
|
259
|
+
"mark_pull_request_draft_async",
|
|
260
|
+
)()
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
def publish_pull_request_async():
|
|
264
|
+
create_dispatcher(
|
|
265
|
+
"agdt-publish-pull-request",
|
|
266
|
+
"agentic_devtools.cli.azure_devops",
|
|
267
|
+
"publish_pull_request_async",
|
|
268
|
+
)()
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def run_e2e_tests_synapse_async():
|
|
272
|
+
create_dispatcher(
|
|
273
|
+
"agdt-run-e2e-tests-synapse",
|
|
274
|
+
"agentic_devtools.cli.azure_devops",
|
|
275
|
+
"run_e2e_tests_synapse_async",
|
|
276
|
+
)()
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def run_e2e_tests_fabric_async():
|
|
280
|
+
create_dispatcher(
|
|
281
|
+
"agdt-run-e2e-tests-fabric",
|
|
282
|
+
"agentic_devtools.cli.azure_devops",
|
|
283
|
+
"run_e2e_tests_fabric_async",
|
|
284
|
+
)()
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def run_wb_patch_async():
|
|
288
|
+
create_dispatcher(
|
|
289
|
+
"agdt-run-wb-patch",
|
|
290
|
+
"agentic_devtools.cli.azure_devops",
|
|
291
|
+
"run_wb_patch_async",
|
|
292
|
+
)()
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def get_run_details_async():
|
|
296
|
+
create_dispatcher(
|
|
297
|
+
"agdt-get-run-details",
|
|
298
|
+
"agentic_devtools.cli.azure_devops",
|
|
299
|
+
"get_run_details_async",
|
|
300
|
+
)()
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
def wait_for_run_async():
|
|
304
|
+
create_dispatcher(
|
|
305
|
+
"agdt-wait-for-run",
|
|
306
|
+
"agentic_devtools.cli.azure_devops",
|
|
307
|
+
"wait_for_run_async",
|
|
308
|
+
)()
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
def list_pipelines_async():
|
|
312
|
+
create_dispatcher(
|
|
313
|
+
"agdt-list-pipelines",
|
|
314
|
+
"agentic_devtools.cli.azure_devops",
|
|
315
|
+
"list_pipelines_async",
|
|
316
|
+
)()
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
def get_pipeline_id_async():
|
|
320
|
+
create_dispatcher(
|
|
321
|
+
"agdt-get-pipeline-id",
|
|
322
|
+
"agentic_devtools.cli.azure_devops",
|
|
323
|
+
"get_pipeline_id_async",
|
|
324
|
+
)()
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
def create_pipeline_async():
|
|
328
|
+
create_dispatcher(
|
|
329
|
+
"agdt-create-pipeline",
|
|
330
|
+
"agentic_devtools.cli.azure_devops",
|
|
331
|
+
"create_pipeline_async",
|
|
332
|
+
)()
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
def update_pipeline_async():
|
|
336
|
+
create_dispatcher(
|
|
337
|
+
"agdt-update-pipeline",
|
|
338
|
+
"agentic_devtools.cli.azure_devops",
|
|
339
|
+
"update_pipeline_async",
|
|
340
|
+
)()
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def get_pull_request_details_async():
|
|
344
|
+
create_dispatcher(
|
|
345
|
+
"agdt-get-pull-request-details",
|
|
346
|
+
"agentic_devtools.cli.azure_devops",
|
|
347
|
+
"get_pull_request_details_async",
|
|
348
|
+
)()
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
def approve_file_async_cli():
|
|
352
|
+
create_dispatcher(
|
|
353
|
+
"agdt-approve-file",
|
|
354
|
+
"agentic_devtools.cli.azure_devops",
|
|
355
|
+
"approve_file_async_cli",
|
|
356
|
+
)()
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def submit_file_review_async():
|
|
360
|
+
create_dispatcher(
|
|
361
|
+
"agdt-submit-file-review",
|
|
362
|
+
"agentic_devtools.cli.azure_devops",
|
|
363
|
+
"submit_file_review_async",
|
|
364
|
+
)()
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def request_changes_async_cli():
|
|
368
|
+
create_dispatcher(
|
|
369
|
+
"agdt-request-changes",
|
|
370
|
+
"agentic_devtools.cli.azure_devops",
|
|
371
|
+
"request_changes_async_cli",
|
|
372
|
+
)()
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
def request_changes_with_suggestion_async_cli():
|
|
376
|
+
create_dispatcher(
|
|
377
|
+
"agdt-request-changes-with-suggestion",
|
|
378
|
+
"agentic_devtools.cli.azure_devops",
|
|
379
|
+
"request_changes_with_suggestion_async_cli",
|
|
380
|
+
)()
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def mark_file_reviewed_async():
|
|
384
|
+
create_dispatcher(
|
|
385
|
+
"agdt-mark-file-reviewed",
|
|
386
|
+
"agentic_devtools.cli.azure_devops",
|
|
387
|
+
"mark_file_reviewed_async",
|
|
388
|
+
)()
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def generate_pr_summary_async():
|
|
392
|
+
create_dispatcher(
|
|
393
|
+
"agdt-generate-pr-summary",
|
|
394
|
+
"agentic_devtools.cli.azure_devops",
|
|
395
|
+
"generate_pr_summary_async",
|
|
396
|
+
)()
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
# Jira
|
|
400
|
+
def create_epic_async():
|
|
401
|
+
create_dispatcher(
|
|
402
|
+
"agdt-create-epic", "agentic_devtools.cli.jira", "create_epic_async"
|
|
403
|
+
)()
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
def create_issue_async():
|
|
407
|
+
create_dispatcher(
|
|
408
|
+
"agdt-create-issue", "agentic_devtools.cli.jira", "create_issue_async"
|
|
409
|
+
)()
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def create_subtask_async():
|
|
413
|
+
create_dispatcher(
|
|
414
|
+
"agdt-create-subtask", "agentic_devtools.cli.jira", "create_subtask_async"
|
|
415
|
+
)()
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def add_comment_async_cli():
|
|
419
|
+
create_dispatcher(
|
|
420
|
+
"agdt-add-jira-comment", "agentic_devtools.cli.jira", "add_comment_async_cli"
|
|
421
|
+
)()
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
def get_issue_async():
|
|
425
|
+
create_dispatcher(
|
|
426
|
+
"agdt-get-jira-issue", "agentic_devtools.cli.jira", "get_issue_async"
|
|
427
|
+
)()
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
def update_issue_async():
|
|
431
|
+
create_dispatcher(
|
|
432
|
+
"agdt-update-jira-issue", "agentic_devtools.cli.jira", "update_issue_async"
|
|
433
|
+
)()
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
def list_project_roles_async():
|
|
437
|
+
create_dispatcher(
|
|
438
|
+
"agdt-list-project-roles",
|
|
439
|
+
"agentic_devtools.cli.jira",
|
|
440
|
+
"list_project_roles_async",
|
|
441
|
+
)()
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
def get_project_role_details_async():
|
|
445
|
+
create_dispatcher(
|
|
446
|
+
"agdt-get-project-role-details",
|
|
447
|
+
"agentic_devtools.cli.jira",
|
|
448
|
+
"get_project_role_details_async",
|
|
449
|
+
)()
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
def add_users_to_project_role_async():
|
|
453
|
+
create_dispatcher(
|
|
454
|
+
"agdt-add-users-to-project-role",
|
|
455
|
+
"agentic_devtools.cli.jira",
|
|
456
|
+
"add_users_to_project_role_async",
|
|
457
|
+
)()
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
def add_users_to_project_role_batch_async():
|
|
461
|
+
create_dispatcher(
|
|
462
|
+
"agdt-add-users-to-project-role-batch",
|
|
463
|
+
"agentic_devtools.cli.jira",
|
|
464
|
+
"add_users_to_project_role_batch_async",
|
|
465
|
+
)()
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
def find_role_id_by_name_async():
|
|
469
|
+
create_dispatcher(
|
|
470
|
+
"agdt-find-role-id-by-name",
|
|
471
|
+
"agentic_devtools.cli.jira",
|
|
472
|
+
"find_role_id_by_name_async",
|
|
473
|
+
)()
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def check_user_exists_async():
|
|
477
|
+
create_dispatcher(
|
|
478
|
+
"agdt-check-user-exists", "agentic_devtools.cli.jira", "check_user_exists_async"
|
|
479
|
+
)()
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
def check_users_exist_async():
|
|
483
|
+
create_dispatcher(
|
|
484
|
+
"agdt-check-users-exist", "agentic_devtools.cli.jira", "check_users_exist_async"
|
|
485
|
+
)()
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
def parse_jira_error_report():
|
|
489
|
+
create_dispatcher(
|
|
490
|
+
"agdt-parse-jira-error-report",
|
|
491
|
+
"agentic_devtools.cli.jira",
|
|
492
|
+
"parse_jira_error_report",
|
|
493
|
+
)()
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
# Git
|
|
497
|
+
def commit_async():
|
|
498
|
+
create_dispatcher(
|
|
499
|
+
"agdt-git-save-work", "agentic_devtools.cli.git", "commit_async"
|
|
500
|
+
)()
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
def sync_async():
|
|
504
|
+
create_dispatcher("agdt-git-sync", "agentic_devtools.cli.git", "sync_async")()
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
def stage_async():
|
|
508
|
+
create_dispatcher("agdt-git-stage", "agentic_devtools.cli.git", "stage_async")()
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
def push_async():
|
|
512
|
+
create_dispatcher("agdt-git-push", "agentic_devtools.cli.git", "push_async")()
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
def force_push_async():
|
|
516
|
+
create_dispatcher(
|
|
517
|
+
"agdt-git-force-push", "agentic_devtools.cli.git", "force_push_async"
|
|
518
|
+
)()
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
def publish_async():
|
|
522
|
+
create_dispatcher("agdt-git-publish", "agentic_devtools.cli.git", "publish_async")()
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
# Testing
|
|
526
|
+
def run_tests():
|
|
527
|
+
create_dispatcher("agdt-test", "agentic_devtools.cli.testing", "run_tests")()
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
def run_tests_quick():
|
|
531
|
+
create_dispatcher(
|
|
532
|
+
"agdt-test-quick", "agentic_devtools.cli.testing", "run_tests_quick"
|
|
533
|
+
)()
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
def run_tests_file():
|
|
537
|
+
create_dispatcher(
|
|
538
|
+
"agdt-test-file", "agentic_devtools.cli.testing", "run_tests_file"
|
|
539
|
+
)()
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
def run_tests_pattern():
|
|
543
|
+
create_dispatcher(
|
|
544
|
+
"agdt-test-pattern", "agentic_devtools.cli.testing", "run_tests_pattern"
|
|
545
|
+
)()
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
# Tasks
|
|
549
|
+
def list_tasks():
|
|
550
|
+
create_dispatcher("agdt-tasks", "agentic_devtools.cli.tasks", "list_tasks")()
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
def task_status():
|
|
554
|
+
create_dispatcher("agdt-task-status", "agentic_devtools.cli.tasks", "task_status")()
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
def task_log():
|
|
558
|
+
create_dispatcher("agdt-task-log", "agentic_devtools.cli.tasks", "task_log")()
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
def task_wait():
|
|
562
|
+
create_dispatcher("agdt-task-wait", "agentic_devtools.cli.tasks", "task_wait")()
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
def tasks_clean():
|
|
566
|
+
create_dispatcher("agdt-tasks-clean", "agentic_devtools.cli.tasks", "tasks_clean")()
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
def show_other_incomplete_tasks():
|
|
570
|
+
create_dispatcher(
|
|
571
|
+
"agdt-show-other-incomplete-tasks",
|
|
572
|
+
"agentic_devtools.cli.tasks",
|
|
573
|
+
"show_other_incomplete_tasks",
|
|
574
|
+
)()
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
# Workflows
|
|
578
|
+
def initiate_pull_request_review_workflow():
|
|
579
|
+
create_dispatcher(
|
|
580
|
+
"agdt-initiate-pull-request-review-workflow",
|
|
581
|
+
"agentic_devtools.cli.workflows",
|
|
582
|
+
"initiate_pull_request_review_workflow",
|
|
583
|
+
)()
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
def initiate_work_on_jira_issue_workflow():
|
|
587
|
+
create_dispatcher(
|
|
588
|
+
"agdt-initiate-work-on-jira-issue-workflow",
|
|
589
|
+
"agentic_devtools.cli.workflows",
|
|
590
|
+
"initiate_work_on_jira_issue_workflow",
|
|
591
|
+
)()
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
def initiate_create_jira_issue_workflow():
|
|
595
|
+
create_dispatcher(
|
|
596
|
+
"agdt-initiate-create-jira-issue-workflow",
|
|
597
|
+
"agentic_devtools.cli.workflows",
|
|
598
|
+
"initiate_create_jira_issue_workflow",
|
|
599
|
+
)()
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
def initiate_create_jira_epic_workflow():
|
|
603
|
+
create_dispatcher(
|
|
604
|
+
"agdt-initiate-create-jira-epic-workflow",
|
|
605
|
+
"agentic_devtools.cli.workflows",
|
|
606
|
+
"initiate_create_jira_epic_workflow",
|
|
607
|
+
)()
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
def initiate_create_jira_subtask_workflow():
|
|
611
|
+
create_dispatcher(
|
|
612
|
+
"agdt-initiate-create-jira-subtask-workflow",
|
|
613
|
+
"agentic_devtools.cli.workflows",
|
|
614
|
+
"initiate_create_jira_subtask_workflow",
|
|
615
|
+
)()
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
def initiate_update_jira_issue_workflow():
|
|
619
|
+
create_dispatcher(
|
|
620
|
+
"agdt-initiate-update-jira-issue-workflow",
|
|
621
|
+
"agentic_devtools.cli.workflows",
|
|
622
|
+
"initiate_update_jira_issue_workflow",
|
|
623
|
+
)()
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
def initiate_apply_pull_request_review_suggestions_workflow():
|
|
627
|
+
create_dispatcher(
|
|
628
|
+
"agdt-initiate-apply-pr-suggestions-workflow",
|
|
629
|
+
"agentic_devtools.cli.workflows",
|
|
630
|
+
"initiate_apply_pull_request_review_suggestions_workflow",
|
|
631
|
+
)()
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
def setup_worktree_background_cmd():
|
|
635
|
+
create_dispatcher(
|
|
636
|
+
"agdt-setup-worktree-background",
|
|
637
|
+
"agentic_devtools.cli.workflows",
|
|
638
|
+
"setup_worktree_background_cmd",
|
|
639
|
+
)()
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
def advance_workflow_cmd():
|
|
643
|
+
create_dispatcher(
|
|
644
|
+
"agdt-advance-workflow",
|
|
645
|
+
"agentic_devtools.cli.workflows",
|
|
646
|
+
"advance_workflow_cmd",
|
|
647
|
+
)()
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
def get_next_workflow_prompt_cmd():
|
|
651
|
+
create_dispatcher(
|
|
652
|
+
"agdt-get-next-workflow-prompt",
|
|
653
|
+
"agentic_devtools.cli.workflows",
|
|
654
|
+
"get_next_workflow_prompt_cmd",
|
|
655
|
+
)()
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
def create_checklist_cmd():
|
|
659
|
+
create_dispatcher(
|
|
660
|
+
"agdt-create-checklist",
|
|
661
|
+
"agentic_devtools.cli.workflows",
|
|
662
|
+
"create_checklist_cmd",
|
|
663
|
+
)()
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
def update_checklist_cmd():
|
|
667
|
+
create_dispatcher(
|
|
668
|
+
"agdt-update-checklist",
|
|
669
|
+
"agentic_devtools.cli.workflows",
|
|
670
|
+
"update_checklist_cmd",
|
|
671
|
+
)()
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
def show_checklist_cmd():
|
|
675
|
+
create_dispatcher(
|
|
676
|
+
"agdt-show-checklist", "agentic_devtools.cli.workflows", "show_checklist_cmd"
|
|
677
|
+
)()
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
# VPN toggle commands (all run in background)
|
|
681
|
+
def vpn_on_cmd():
|
|
682
|
+
create_dispatcher(
|
|
683
|
+
"agdt-vpn-on", "agentic_devtools.cli.azure_devops.vpn_toggle", "vpn_on_async"
|
|
684
|
+
)()
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
def vpn_off_cmd():
|
|
688
|
+
create_dispatcher(
|
|
689
|
+
"agdt-vpn-off", "agentic_devtools.cli.azure_devops.vpn_toggle", "vpn_off_async"
|
|
690
|
+
)()
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
def vpn_status_cmd():
|
|
694
|
+
create_dispatcher(
|
|
695
|
+
"agdt-vpn-status",
|
|
696
|
+
"agentic_devtools.cli.azure_devops.vpn_toggle",
|
|
697
|
+
"vpn_status_async",
|
|
698
|
+
)()
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
def release_pypi_async():
|
|
702
|
+
create_dispatcher(
|
|
703
|
+
"agdt-release-pypi", "agentic_devtools.cli.release", "release_pypi_async"
|
|
704
|
+
)()
|