Skip to content

Commit a7f04df

Browse files
authored
Merge branch 'main' into fix/353-agentcore-supported-azs
2 parents 392b55e + 22705e8 commit a7f04df

42 files changed

Lines changed: 3228 additions & 198 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

agent/pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = "0.1.0"
44
description = "Background coding agent — runs tasks in isolated cloud environments and produces pull requests"
55
requires-python = ">=3.13"
66
dependencies = [
7-
"boto3==1.43.38", #https://pypi.org/project/boto3/
7+
"boto3==1.43.40", #https://pypi.org/project/boto3/
88
# Vestigial from the parked AgentCore Identity flow (Phase 2.0a).
99
# Phase 2.0b reads per-workspace Linear OAuth tokens directly from
1010
# Secrets Manager because AgentCore Identity's USER_FEDERATION
@@ -15,11 +15,11 @@ dependencies = [
1515
# try/except (ImportError, AttributeError), so removing this dep
1616
# would degrade gracefully — but for now we keep the dep to
1717
# preserve the clean code path.
18-
"bedrock-agentcore==1.16.0", #https://pypi.org/project/bedrock-agentcore/
18+
"bedrock-agentcore==1.17.0", #https://pypi.org/project/bedrock-agentcore/
1919
"claude-agent-sdk==0.2.110", #https://github.com/anthropics/claude-agent-sdk-python/releases/tag/v0.2.110 (bundles claude CLI 2.1.191; kept in lockstep with the npm CLI pin in the Dockerfile, #215)
2020
"requests==2.34.2", #https://pypi.org/project/requests/
2121
"fastapi==0.139.0", #https://pypi.org/project/fastapi/
22-
"uvicorn==0.49.0", #https://pypi.org/project/uvicorn/
22+
"uvicorn==0.50.0", #https://pypi.org/project/uvicorn/
2323
"aws-opentelemetry-distro==0.18.0", #https://pypi.org/project/aws-opentelemetry-distro/
2424
"mcp==1.28.1", #https://pypi.org/project/mcp/
2525
# CEDAR ENGINE PARITY — DO NOT BUMP IN ISOLATION.

agent/src/jira_reactions.py

Lines changed: 407 additions & 46 deletions
Large diffs are not rendered by default.

agent/src/pipeline.py

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@
2323
resolve_linear_api_token,
2424
)
2525
from context import assemble_prompt, fetch_github_issue
26-
from jira_reactions import comment_task_finished, comment_task_started
26+
from jira_reactions import (
27+
comment_task_started,
28+
transition_pr_opened,
29+
transition_task_started,
30+
)
2731
from linear_reactions import react_task_finished, react_task_started
2832
from models import AgentResult, HydratedContext, RepoSetup, TaskConfig, TaskResult
2933
from observability import current_otel_trace_id, task_span
@@ -862,6 +866,14 @@ def _on_trace_truncated(max_bytes: int, first_dropped: int) -> None:
862866
config.channel_metadata,
863867
)
864868

869+
# Move the Jira card To Do → In Progress so the board reflects that
870+
# work has started (issue #572). No-op for non-Jira tasks.
871+
# Best-effort; failures are logged and never block the pipeline.
872+
transition_task_started(
873+
config.channel_source,
874+
config.channel_metadata,
875+
)
876+
865877
# Download attachments from S3 (version-pinned, integrity-verified)
866878
prepared_attachments: list = []
867879
if config.attachments:
@@ -1057,6 +1069,14 @@ def _on_trace_truncated(max_bytes: int, first_dropped: int) -> None:
10571069
post_span.set_attribute("pr.url", pr_url or "")
10581070
if pr_url:
10591071
progress.write_agent_milestone("pr_created", pr_url)
1072+
# Move the Jira card In Progress → In Review now that a PR is
1073+
# open (issue #572). Only fires when a PR was actually opened —
1074+
# failed / no-PR tasks leave the card where humans can see the
1075+
# failure comment. No-op for non-Jira tasks; best-effort.
1076+
transition_pr_opened(
1077+
config.channel_source,
1078+
config.channel_metadata,
1079+
)
10601080

10611081
# Memory write — capture task episode and repo learnings
10621082
memory_written = False
@@ -1106,14 +1126,14 @@ def _on_trace_truncated(max_bytes: int, first_dropped: int) -> None:
11061126
started_reaction_id=linear_eyes_reaction_id,
11071127
)
11081128

1109-
# Terminal status comment on the Jira issue (REST shim, with the
1110-
# PR link when one was opened). No-op for non-Jira tasks.
1111-
comment_task_finished(
1112-
config.channel_source,
1113-
config.channel_metadata,
1114-
success=(overall_status == "success"),
1115-
pr_url=pr_url,
1116-
)
1129+
# NOTE: the terminal status comment on the Jira issue is NOT posted
1130+
# here. Since issue #573 the deterministic fan-out plane
1131+
# (``cdk/src/handlers/fanout-task-events.ts`` ``dispatchToJira``)
1132+
# owns the Jira final-status comment — it carries cost/turns/
1133+
# duration and, crucially, fires even if this agent crashes before
1134+
# reaching this point (max-turns, OOM). Posting here too would
1135+
# double-comment. The agent still posts the *start* comment
1136+
# (``comment_task_started`` above) for in-flight progress.
11171137

11181138
# --trace trajectory S3 upload (design §10.1). Runs AFTER
11191139
# post-hooks but BEFORE ``write_terminal`` so the resulting
@@ -1244,14 +1264,11 @@ def _on_trace_truncated(max_bytes: int, first_dropped: int) -> None:
12441264
success=False,
12451265
started_reaction_id=linear_eyes_reaction_id,
12461266
)
1247-
# Best-effort failure comment on the Jira issue. No-op for
1248-
# non-Jira tasks; network failures are swallowed.
1249-
comment_task_finished(
1250-
config.channel_source,
1251-
config.channel_metadata,
1252-
success=False,
1253-
pr_url=None,
1254-
)
1267+
# NOTE: no Jira failure comment here — the fan-out plane's
1268+
# ``dispatchToJira`` (issue #573) owns the Jira terminal comment
1269+
# and fires on the platform side even when this crash path runs,
1270+
# so posting here would double-comment. (Contrast the Linear ❌
1271+
# reaction above, which the fan-out plane does not replicate.)
12551272
raise
12561273

12571274

0 commit comments

Comments
 (0)