codee-agent 0.5.3__tar.gz → 0.5.5__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.
- {codee_agent-0.5.3 → codee_agent-0.5.5}/PKG-INFO +1 -1
- {codee_agent-0.5.3 → codee_agent-0.5.5}/pyproject.toml +1 -1
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/admin_service.py +3 -1
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_admin_service.py +38 -1
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_azure_devops/provider.py +4 -2
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_azure_devops/test.py +1 -1
- {codee_agent-0.5.3 → codee_agent-0.5.5}/LICENSE +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/README.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/.gitignore +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/admin.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/admin_api.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/admin_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/agent_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/coding_agents.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/executor.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/init_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/cron_describe.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/mcp_config.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/runs_db.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/test_mcp_config.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/test_runs_db.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/test_trigger_cron_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/test_trigger_issue_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/trigger_aws_sqs_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/trigger_cron_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/trigger_email_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/lib/trigger_issue_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/mail_server.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/setup_wizard.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/start_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/tasks_providers.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/AGENTS.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/CLAUDE.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-code-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-developer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-planner/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-planner/assets/readme-template.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-qa/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-security-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-code-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-developer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-qa/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-security-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_admin_api.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_admin_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_agent_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_executor.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_init_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_memory_index.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_setup_wizard.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/test_start_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/workflow_graph.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_admin/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_admin/codee_admin.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_abstract/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_abstract/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_claude_code/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_claude_code/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_claude_code/test.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_github_copilot/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_github_copilot/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_agent_github_copilot/test.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_database/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_database/database.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_database/oauth_tokens.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_main_context/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_main_context/context.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_main_context/logging.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_main_context/test_context.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_main_context/test_logging.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_abstract/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_abstract/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_azure_devops/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_azure_devops/oauth.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_jira/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_jira/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee_tasks_jira/test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codee-agent
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.5
|
|
4
4
|
Summary: A virtual co-worker that picks up Jira and Azure DevOps tasks and solves them with coding agents.
|
|
5
5
|
Keywords: ai,agent,jira,azure-devops,claude-code,github-copilot,automation
|
|
6
6
|
Author: Denis Kibalko
|
|
@@ -1397,7 +1397,9 @@ class AdminService:
|
|
|
1397
1397
|
"fill in every field above.")
|
|
1398
1398
|
try:
|
|
1399
1399
|
agent = self._build_coding_agent()
|
|
1400
|
-
response = agent.run(
|
|
1400
|
+
response = agent.run(
|
|
1401
|
+
_mcp_check_prompt(server_name, steps), session_id,
|
|
1402
|
+
agent.best_model())
|
|
1401
1403
|
except Exception as exc:
|
|
1402
1404
|
return _check(MCP_CHECK, False, f"The coding agent failed: {exc}")
|
|
1403
1405
|
return _mcp_check_result(server_name, response)
|
|
@@ -1436,6 +1436,7 @@ class VerifyTasksMcpCheckTest(unittest.TestCase):
|
|
|
1436
1436
|
"jira", self.JIRA_CREDENTIALS))
|
|
1437
1437
|
self.assertEqual([check["name"] for check in checks],
|
|
1438
1438
|
[TASKS_CHECK, MCP_CHECK])
|
|
1439
|
+
self.agent = agent
|
|
1439
1440
|
self.prompt = agent.run.call_args.args[0] if agent.run.called else ""
|
|
1440
1441
|
return checks[1]
|
|
1441
1442
|
|
|
@@ -1462,6 +1463,42 @@ class VerifyTasksMcpCheckTest(unittest.TestCase):
|
|
|
1462
1463
|
self.assertIn("CORE-42", check["message"])
|
|
1463
1464
|
self.assertIn("Done", check["message"])
|
|
1464
1465
|
|
|
1466
|
+
def test_azure_devops_mcp_check_uses_the_agents_best_model(self) -> None:
|
|
1467
|
+
class AzureProvider:
|
|
1468
|
+
MCP_SERVER_NAME = "ado"
|
|
1469
|
+
|
|
1470
|
+
def mcp_check_steps(self, summary: str) -> list[str]:
|
|
1471
|
+
return [f"Create {summary}"]
|
|
1472
|
+
|
|
1473
|
+
with tempfile.TemporaryDirectory() as temporary_directory:
|
|
1474
|
+
service = self._service(Path(temporary_directory))
|
|
1475
|
+
agent = Mock(**{
|
|
1476
|
+
"best_model.return_value": "claude-opus-5",
|
|
1477
|
+
"run.return_value": '{"ok": true, "task": "42"}',
|
|
1478
|
+
})
|
|
1479
|
+
|
|
1480
|
+
with patch.object(service, "tasks_mcp_configured",
|
|
1481
|
+
return_value=True), \
|
|
1482
|
+
patch.object(AdminService, "_build_coding_agent",
|
|
1483
|
+
return_value=agent):
|
|
1484
|
+
check = service._check_tasks_mcp(
|
|
1485
|
+
"azure_devops", AzureProvider(), blocked=False)
|
|
1486
|
+
|
|
1487
|
+
self.assertTrue(check["ok"], check["message"])
|
|
1488
|
+
agent.best_model.assert_called_once_with()
|
|
1489
|
+
self.assertEqual(agent.run.call_args.args[2], "claude-opus-5")
|
|
1490
|
+
|
|
1491
|
+
def test_jira_mcp_check_uses_the_agents_best_model(self) -> None:
|
|
1492
|
+
with tempfile.TemporaryDirectory() as temporary_directory:
|
|
1493
|
+
service = self._service(Path(temporary_directory))
|
|
1494
|
+
|
|
1495
|
+
self._run(service, '{"ok": true, "task": "CORE-1"}')
|
|
1496
|
+
|
|
1497
|
+
self.agent.best_model.assert_called_once_with()
|
|
1498
|
+
self.assertEqual(
|
|
1499
|
+
self.agent.run.call_args.args[2],
|
|
1500
|
+
self.agent.best_model.return_value)
|
|
1501
|
+
|
|
1465
1502
|
def test_the_prompt_forbids_every_route_other_than_mcp(self) -> None:
|
|
1466
1503
|
with tempfile.TemporaryDirectory() as temporary_directory:
|
|
1467
1504
|
service = self._service(Path(temporary_directory))
|
|
@@ -1682,7 +1719,7 @@ class SetupTasksMcpTest(unittest.TestCase):
|
|
|
1682
1719
|
config = self._config(root)
|
|
1683
1720
|
self.assertEqual(config["mcpServers"]["ado"], {
|
|
1684
1721
|
"command": "npx",
|
|
1685
|
-
"args": ["-y", "@azure-devops/mcp", "acme",
|
|
1722
|
+
"args": ["-y", "@azure-devops/mcp@2.8.0", "acme",
|
|
1686
1723
|
"--authentication", "azcli"],
|
|
1687
1724
|
})
|
|
1688
1725
|
self.assertEqual(config["servers"]["ado"]["type"], "stdio")
|
|
@@ -44,8 +44,10 @@ _FIELDS = [
|
|
|
44
44
|
_PRIORITY_NAMES = {1: "Highest", 2: "High", 3: "Medium", 4: "Low"}
|
|
45
45
|
|
|
46
46
|
# Microsoft's own Azure DevOps MCP server, run from npm through `npx` so
|
|
47
|
-
# nothing has to be installed alongside it.
|
|
48
|
-
|
|
47
|
+
# nothing has to be installed alongside it. Version 2.8.0 keeps work item
|
|
48
|
+
# creation compatible with coding agents that stringify the consolidated
|
|
49
|
+
# write tool's fields parameter introduced in 2.9.0.
|
|
50
|
+
MCP_SERVER_PACKAGE = "@azure-devops/mcp@2.8.0"
|
|
49
51
|
|
|
50
52
|
# Ceiling the WIQL query is capped at, matching the JIRA provider's page size.
|
|
51
53
|
_MAX_TASKS = 50
|
|
@@ -629,7 +629,7 @@ class AzureDevOpsMcpTest(unittest.TestCase):
|
|
|
629
629
|
|
|
630
630
|
self.assertEqual(server.name, "ado")
|
|
631
631
|
self.assertEqual(server.command, "npx")
|
|
632
|
-
self.assertEqual(server.args, ["-y", "@azure-devops/mcp", "acme",
|
|
632
|
+
self.assertEqual(server.args, ["-y", "@azure-devops/mcp@2.8.0", "acme",
|
|
633
633
|
"--authentication", "azcli"])
|
|
634
634
|
# It signs in through `az login`, so it carries no credentials of ours.
|
|
635
635
|
self.assertEqual(server.env, {})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-code-reviewer/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/story-security-reviewer/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-code-reviewer/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.5}/src/codee/templates/skills/task-security-reviewer/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|