codee-agent 0.5.3__tar.gz → 0.5.4__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.4}/PKG-INFO +1 -1
- {codee_agent-0.5.3 → codee_agent-0.5.4}/pyproject.toml +1 -1
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/admin_service.py +3 -1
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_admin_service.py +37 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/LICENSE +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/README.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/.gitignore +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/admin.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/admin_api.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/admin_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/agent_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/coding_agents.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/executor.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/init_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/cron_describe.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/mcp_config.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/runs_db.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/test_mcp_config.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/test_runs_db.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/test_trigger_cron_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/test_trigger_issue_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/trigger_aws_sqs_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/trigger_cron_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/trigger_email_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/lib/trigger_issue_skills.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/mail_server.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/setup_wizard.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/start_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/tasks_providers.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/AGENTS.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/CLAUDE.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-code-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-developer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-planner/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-planner/assets/readme-template.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-qa/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/story-security-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/task-code-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/task-developer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/task-qa/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/task-security-reviewer/SKILL.md +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_admin_api.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_admin_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_agent_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_executor.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_init_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_memory_index.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_setup_wizard.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/test_start_cli.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/workflow_graph.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_admin/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_admin/codee_admin.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_abstract/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_abstract/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_claude_code/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_claude_code/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_claude_code/test.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_github_copilot/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_github_copilot/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_agent_github_copilot/test.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_database/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_database/database.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_database/oauth_tokens.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_main_context/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_main_context/context.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_main_context/logging.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_main_context/test_context.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_main_context/test_logging.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_abstract/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_abstract/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_azure_devops/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_azure_devops/oauth.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_azure_devops/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_azure_devops/test.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_jira/__init__.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee_tasks_jira/provider.py +0 -0
- {codee_agent-0.5.3 → codee_agent-0.5.4}/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.4
|
|
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))
|
|
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.4}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.4}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.4}/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.4}/src/codee/templates/skills/story-security-reviewer/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.3 → codee_agent-0.5.4}/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.4}/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
|
|
File without changes
|
|
File without changes
|