@prism-d1/cli 1.0.91 → 1.0.92
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.
- package/dist/assets/coding-agent/README.md +2 -2
- package/dist/assets/coding-agent/agent.py +23 -1
- package/dist/assets/coding-agent/config.py +1 -1
- package/dist/assets/coding-agent/deploy/create_harness.py +175 -10
- package/dist/assets/coding-agent/deploy/deploy-harness.sh +18 -5
- package/dist/assets/coding-agent/deploy/prism-coding-agent.yml +18 -0
- package/dist/assets/coding-agent/deploy/run.py +14 -4
- package/dist/assets/infra/lib/lambda/otel-receiver.ts +27 -12
- package/dist/src/commands/bootstrapper/setup-github-oidc.d.ts.map +1 -1
- package/dist/src/commands/bootstrapper/setup-github-oidc.js +4 -0
- package/dist/src/commands/bootstrapper/setup-github-oidc.js.map +1 -1
- package/package.json +1 -1
|
@@ -192,7 +192,7 @@ Three details, each of which cost a failed deployment to learn:
|
|
|
192
192
|
The image is a single mise-based base (~750 MB, 37% of the 2 GB cap) that includes
|
|
193
193
|
the Strands agent SDK, boto3, and the full orchestrator (`run.py` + `agent.py`). It
|
|
194
194
|
ships a version *manager* and installs whatever a repository pins in `.tool-versions`
|
|
195
|
-
at session start. Default model: `us.anthropic.claude-sonnet-5`.
|
|
195
|
+
at session start. Default model: `us.anthropic.claude-sonnet-4-5-20250929-v1:0`.
|
|
196
196
|
|
|
197
197
|
Because the agent code is in the image, updating it requires an image rebuild
|
|
198
198
|
(`deploy-harness.sh --tag v2`). This is a trade-off for simplicity: the workflow has
|
|
@@ -812,7 +812,7 @@ Deployed, through the harness (v13, Claude Sonnet 5):
|
|
|
812
812
|
```
|
|
813
813
|
outcome patched
|
|
814
814
|
verified True npm test passes in the microVM
|
|
815
|
-
model us.anthropic.claude-sonnet-5
|
|
815
|
+
model us.anthropic.claude-sonnet-4-5-20250929-v1:0
|
|
816
816
|
tokens ~95K in / ~4.5K out
|
|
817
817
|
cost ~$0.35 per issue fix
|
|
818
818
|
files src/routes/tasks.ts + tests/tasks.test.ts
|
|
@@ -26,13 +26,35 @@ from config import ConfigError, load_config
|
|
|
26
26
|
from system_prompt import build_system_prompt, build_task_prompt
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
def _unwrap_issue(payload: dict) -> dict:
|
|
30
|
+
"""Return the issue object, whether or not it is nested under an `issue` key.
|
|
31
|
+
|
|
32
|
+
Two producers feed `--issue` and they disagree on shape:
|
|
33
|
+
|
|
34
|
+
* eval fixtures (`.coding-agent/fixtures/*.json`) are flat --
|
|
35
|
+
`{"number": 1, "title": ..., "body": ...}`
|
|
36
|
+
* the CI workflow wraps, because `gh issue view --json ... | jq '{issue: .}'`
|
|
37
|
+
produces `{"issue": {"number": 9, ...}}`
|
|
38
|
+
|
|
39
|
+
Reading `.get("title")` off the wrapper returns None, so the agent was handed
|
|
40
|
+
`Fix issue #?: (no title)` with `(no description provided)` as its entire task.
|
|
41
|
+
It then did the only thing it could -- went looking for something to fix --
|
|
42
|
+
and produced a correct patch for a bug nobody asked about. The scope-discipline
|
|
43
|
+
constraints in the system prompt cannot help here: there was no scope to stay
|
|
44
|
+
inside. That is why this normalises instead of trusting either caller.
|
|
45
|
+
"""
|
|
46
|
+
if isinstance(payload, dict) and "issue" in payload and isinstance(payload["issue"], dict):
|
|
47
|
+
return payload["issue"]
|
|
48
|
+
return payload
|
|
49
|
+
|
|
50
|
+
|
|
29
51
|
def _load_issue(args: argparse.Namespace) -> dict:
|
|
30
52
|
"""Resolve the issue from a fixture file, a GitHub event payload, or flags."""
|
|
31
53
|
if args.issue:
|
|
32
54
|
path = Path(args.issue)
|
|
33
55
|
if not path.exists():
|
|
34
56
|
raise SystemExit(f"Issue file not found: {path}")
|
|
35
|
-
return json.loads(path.read_text())
|
|
57
|
+
return _unwrap_issue(json.loads(path.read_text()))
|
|
36
58
|
|
|
37
59
|
if args.github_event:
|
|
38
60
|
path = Path(args.github_event)
|
|
@@ -104,7 +104,7 @@ class AgentConfig:
|
|
|
104
104
|
agent_email: str = "prism-agent@example.com"
|
|
105
105
|
agent_name: str = "PRISM Coding Agent"
|
|
106
106
|
max_attempts: int = 3
|
|
107
|
-
model_id: str = "
|
|
107
|
+
model_id: str = "" # Set by --model-id; no default — deploy-harness.sh owns the model choice
|
|
108
108
|
region: str = "us-west-2"
|
|
109
109
|
project_type: str = "unknown"
|
|
110
110
|
source: str = "detected" # "config" | "detected" | "none"
|
|
@@ -54,6 +54,121 @@ def find_existing(client, name: str) -> str | None:
|
|
|
54
54
|
return None
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
ROLE_PROPAGATION_TIMEOUT_SECONDS = 180
|
|
58
|
+
ROLE_PROPAGATION_POLL_SECONDS = 5
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _is_role_not_yet_visible(exc: ClientError) -> bool:
|
|
62
|
+
"""True when a ValidationException is the IAM propagation race, not a bad role.
|
|
63
|
+
|
|
64
|
+
AgentCore validates that it can assume the execution role, and a role created
|
|
65
|
+
seconds earlier is not yet visible to it:
|
|
66
|
+
|
|
67
|
+
ValidationException: Role validation failed for '...'. Please verify that
|
|
68
|
+
the role exists and its trust policy allows assumption by this service
|
|
69
|
+
|
|
70
|
+
The message is identical whether the role is genuinely misconfigured or merely
|
|
71
|
+
too new, so this matches on the text and lets the timeout below decide. A
|
|
72
|
+
permanently broken trust policy simply exhausts the retries and reports the
|
|
73
|
+
original error.
|
|
74
|
+
"""
|
|
75
|
+
err = exc.response.get("Error", {})
|
|
76
|
+
if err.get("Code") != "ValidationException":
|
|
77
|
+
return False
|
|
78
|
+
message = err.get("Message", "").lower()
|
|
79
|
+
return "role validation failed" in message or "trust policy" in message
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _call_with_role_propagation_retry(label: str, fn):
|
|
83
|
+
"""Run fn(), retrying while AgentCore still cannot see a freshly created role.
|
|
84
|
+
|
|
85
|
+
deploy-harness.sh creates the execution role and then immediately creates the
|
|
86
|
+
harness. On an account where the role already exists that gap is irrelevant, so
|
|
87
|
+
every re-run succeeds and this race stays invisible -- which is why it first
|
|
88
|
+
surfaced during workshop provisioning into a brand new account. Measured
|
|
89
|
+
evidence: a 55-second gap succeeded, a 6-second gap failed.
|
|
90
|
+
"""
|
|
91
|
+
deadline = time.monotonic() + ROLE_PROPAGATION_TIMEOUT_SECONDS
|
|
92
|
+
announced = False
|
|
93
|
+
while True:
|
|
94
|
+
try:
|
|
95
|
+
return fn()
|
|
96
|
+
except ClientError as exc:
|
|
97
|
+
if not _is_role_not_yet_visible(exc) or time.monotonic() >= deadline:
|
|
98
|
+
raise
|
|
99
|
+
if not announced:
|
|
100
|
+
print(f" {label}: execution role not visible to AgentCore yet, "
|
|
101
|
+
f"retrying for up to {ROLE_PROPAGATION_TIMEOUT_SECONDS}s",
|
|
102
|
+
file=sys.stderr)
|
|
103
|
+
announced = True
|
|
104
|
+
time.sleep(ROLE_PROPAGATION_POLL_SECONDS)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def for_update(client, spec: dict) -> dict:
|
|
108
|
+
"""Adapt a CreateHarness spec to the shape UpdateHarness expects.
|
|
109
|
+
|
|
110
|
+
The two operations do not take the same input. Several members that
|
|
111
|
+
CreateHarness accepts directly are wrapped in an `optionalValue` envelope on
|
|
112
|
+
UpdateHarness, so that clearing a field can be distinguished from omitting
|
|
113
|
+
it. At the time of writing that applies to `environmentArtifact`,
|
|
114
|
+
`authorizerConfiguration` and `memory` -- passing the create shape fails
|
|
115
|
+
validation client-side with:
|
|
116
|
+
|
|
117
|
+
Unknown parameter in environmentArtifact: "containerConfiguration",
|
|
118
|
+
must be one of: optionalValue
|
|
119
|
+
|
|
120
|
+
The set of wrapped members is read off the service model rather than
|
|
121
|
+
hardcoded, so adding one of the other wrapped fields to `spec` later cannot
|
|
122
|
+
silently reintroduce this failure.
|
|
123
|
+
"""
|
|
124
|
+
members = client.meta.service_model.operation_model(
|
|
125
|
+
"UpdateHarness"
|
|
126
|
+
).input_shape.members
|
|
127
|
+
wrapped = {
|
|
128
|
+
name
|
|
129
|
+
for name, shape in members.items()
|
|
130
|
+
if "optionalValue" in getattr(shape, "members", {})
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
key: {"optionalValue": value} if key in wrapped else value
|
|
134
|
+
for key, value in spec.items()
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def unwrap_harness(response: dict) -> dict:
|
|
139
|
+
"""Return the harness object from any single-harness response envelope.
|
|
140
|
+
|
|
141
|
+
CreateHarness, UpdateHarness and GetHarness all nest the object under a
|
|
142
|
+
`harness` key -- they share one `Harness` output shape. Only ListHarnesses
|
|
143
|
+
differs, returning flat objects in `harnesses`.
|
|
144
|
+
|
|
145
|
+
This is a function rather than an inline `.get("harness")` because the same
|
|
146
|
+
envelope has now been missed twice. First on the read path, where reading
|
|
147
|
+
`status` off the top level of a get_harness response yielded None forever, so
|
|
148
|
+
the wait below span its full timeout and reported failure on a harness that
|
|
149
|
+
had been READY the whole time. Then on the create path, where
|
|
150
|
+
`created["harnessId"]` raised KeyError: 'harnessId' -- invisible until a
|
|
151
|
+
provisioning run actually created a harness through this script rather than
|
|
152
|
+
updating one that already existed.
|
|
153
|
+
"""
|
|
154
|
+
return response.get("harness", {})
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def harness_id_from(response: dict, operation: str) -> str:
|
|
158
|
+
"""Pull harnessId out of a create/update response, or say what came back.
|
|
159
|
+
|
|
160
|
+
A bare KeyError names the missing key but not the envelope it was missing
|
|
161
|
+
from, which is a poor trade when the call costs a full provisioning run.
|
|
162
|
+
"""
|
|
163
|
+
harness = unwrap_harness(response)
|
|
164
|
+
harness_id = harness.get("harnessId")
|
|
165
|
+
if not harness_id:
|
|
166
|
+
sys.exit(f"{operation} returned no harnessId.\n"
|
|
167
|
+
f" envelope keys: {sorted(response)}\n"
|
|
168
|
+
f" harness keys: {sorted(harness) or '(harness key absent)'}")
|
|
169
|
+
return harness_id
|
|
170
|
+
|
|
171
|
+
|
|
57
172
|
def describe(client, harness_id: str) -> dict:
|
|
58
173
|
"""Fetch one harness, unwrapping the response envelope.
|
|
59
174
|
|
|
@@ -64,24 +179,53 @@ def describe(client, harness_id: str) -> dict:
|
|
|
64
179
|
been READY the whole time. The same mistake also made `maxIterations` look
|
|
65
180
|
unset on a harness that had it set to 40.
|
|
66
181
|
"""
|
|
67
|
-
return client.get_harness(harnessId=harness_id)
|
|
182
|
+
return unwrap_harness(client.get_harness(harnessId=harness_id))
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def _report_failure(harness_id: str, harness: dict, headline: str):
|
|
186
|
+
"""Exit with everything the harness already told us about why it failed.
|
|
187
|
+
|
|
188
|
+
`failureReason` is a member of the Harness shape and is the only field that
|
|
189
|
+
says *why* provisioning failed. Reporting the status alone -- which is what
|
|
190
|
+
this did -- costs a whole provisioning run to learn the word "CREATE_FAILED",
|
|
191
|
+
and the harness then has to be queried by hand to find out anything useful.
|
|
192
|
+
The image URI and execution role are echoed too because they are the two
|
|
193
|
+
inputs that most often break a container harness after the control-plane call
|
|
194
|
+
has already succeeded.
|
|
195
|
+
"""
|
|
196
|
+
reason = harness.get("failureReason") or "(no failureReason reported)"
|
|
197
|
+
image = (harness.get("environmentArtifact", {})
|
|
198
|
+
.get("containerConfiguration", {})
|
|
199
|
+
.get("containerUri", "(none)"))
|
|
200
|
+
sys.exit(f"{headline}\n"
|
|
201
|
+
f" reason: {reason}\n"
|
|
202
|
+
f" image: {image}\n"
|
|
203
|
+
f" role: {harness.get('executionRoleArn', '(none)')}\n"
|
|
204
|
+
f" status: {harness.get('status', 'unknown')}\n"
|
|
205
|
+
f" full detail:\n"
|
|
206
|
+
f" aws bedrock-agentcore-control get-harness \\\n"
|
|
207
|
+
f" --harness-id {harness_id} --query harness")
|
|
68
208
|
|
|
69
209
|
|
|
70
210
|
def wait_ready(client, harness_id: str) -> None:
|
|
71
211
|
deadline = time.monotonic() + READY_TIMEOUT_SECONDS
|
|
72
212
|
last = ""
|
|
213
|
+
harness: dict = {}
|
|
73
214
|
while time.monotonic() < deadline:
|
|
74
|
-
|
|
215
|
+
harness = describe(client, harness_id)
|
|
216
|
+
status = harness.get("status", "")
|
|
75
217
|
if status == "READY":
|
|
76
218
|
return
|
|
77
219
|
if status in {"CREATE_FAILED", "UPDATE_FAILED", "FAILED"}:
|
|
78
|
-
|
|
220
|
+
_report_failure(harness_id, harness,
|
|
221
|
+
f"harness {harness_id} reached {status}")
|
|
79
222
|
if status != last:
|
|
80
223
|
print(f" status {status or 'unknown'}", file=sys.stderr)
|
|
81
224
|
last = status
|
|
82
225
|
time.sleep(POLL_SECONDS)
|
|
83
|
-
|
|
84
|
-
|
|
226
|
+
_report_failure(harness_id, harness,
|
|
227
|
+
f"harness {harness_id} did not reach READY within "
|
|
228
|
+
f"{READY_TIMEOUT_SECONDS}s (last status {last or 'unknown'})")
|
|
85
229
|
|
|
86
230
|
|
|
87
231
|
def main() -> int:
|
|
@@ -115,19 +259,40 @@ def main() -> int:
|
|
|
115
259
|
try:
|
|
116
260
|
if existing:
|
|
117
261
|
print(f" updating {existing}", file=sys.stderr)
|
|
118
|
-
|
|
262
|
+
_call_with_role_propagation_retry(
|
|
263
|
+
"update", lambda: client.update_harness(harnessId=existing, **for_update(client, spec)))
|
|
119
264
|
harness_id = existing
|
|
120
265
|
else:
|
|
121
266
|
print(f" creating {name}", file=sys.stderr)
|
|
122
|
-
created =
|
|
123
|
-
|
|
267
|
+
created = _call_with_role_propagation_retry(
|
|
268
|
+
"create", lambda: client.create_harness(harnessName=name, **spec))
|
|
269
|
+
harness_id = harness_id_from(created, "create_harness")
|
|
124
270
|
except ClientError as exc:
|
|
125
271
|
code = exc.response.get("Error", {}).get("Code", "")
|
|
126
272
|
message = exc.response.get("Error", {}).get("Message", str(exc))
|
|
127
273
|
if code == "AccessDeniedException":
|
|
274
|
+
# The hint names both halves on purpose. The SDK calls CreateHarness /
|
|
275
|
+
# UpdateHarness / GetHarness / ListHarnesses, but IAM evaluates the
|
|
276
|
+
# AgentRuntime action underneath each one, so a policy granting only the
|
|
277
|
+
# *Harness names is denied on *AgentRuntime -- which is what the earlier
|
|
278
|
+
# version of this message sent people chasing.
|
|
279
|
+
sys.exit(f"{code}: {message}\n"
|
|
280
|
+
f" The calling identity needs both halves of each Harness call:\n"
|
|
281
|
+
f" bedrock-agentcore:CreateHarness + :CreateAgentRuntime\n"
|
|
282
|
+
f" bedrock-agentcore:UpdateHarness + :UpdateAgentRuntime\n"
|
|
283
|
+
f" bedrock-agentcore:GetHarness + :GetAgentRuntime\n"
|
|
284
|
+
f" bedrock-agentcore:ListHarnesses + :ListAgentRuntimes\n"
|
|
285
|
+
f" and iam:PassRole for {role}.\n"
|
|
286
|
+
f" IAM authorizes the AgentRuntime action, not the Harness one --\n"
|
|
287
|
+
f" read the action name in the message above, not this list.")
|
|
288
|
+
if code == "ValidationException" and "role" in message.lower():
|
|
128
289
|
sys.exit(f"{code}: {message}\n"
|
|
129
|
-
f"
|
|
130
|
-
f"
|
|
290
|
+
f" {role} was still not assumable by AgentCore after "
|
|
291
|
+
f"{ROLE_PROPAGATION_TIMEOUT_SECONDS}s, so this is not the usual\n"
|
|
292
|
+
f" propagation delay. Check the trust policy actually allows\n"
|
|
293
|
+
f" bedrock-agentcore.amazonaws.com to sts:AssumeRole:\n"
|
|
294
|
+
f" aws iam get-role --role-name {role.rsplit('/', 1)[-1]} \\\n"
|
|
295
|
+
f" --query Role.AssumeRolePolicyDocument")
|
|
131
296
|
sys.exit(f"{code}: {message}")
|
|
132
297
|
|
|
133
298
|
wait_ready(client, harness_id)
|
|
@@ -31,7 +31,7 @@ TAG="v1"
|
|
|
31
31
|
NAME="PrismCodingAgent"
|
|
32
32
|
ECR_REPO="prism/coding-agent-harness"
|
|
33
33
|
ROLE_NAME="PrismCodingAgentHarnessRole"
|
|
34
|
-
MODEL_ID="us.anthropic.claude-sonnet-
|
|
34
|
+
MODEL_ID="us.anthropic.claude-sonnet-5"
|
|
35
35
|
# Matches agentcore.contract.MAX_ITERATIONS. The client passes maxIterations on
|
|
36
36
|
# every InvokeHarness call, so this is only the fallback for callers that do not.
|
|
37
37
|
MAX_ITERATIONS=100
|
|
@@ -102,7 +102,7 @@ docker buildx build \
|
|
|
102
102
|
--tag "${IMAGE}" \
|
|
103
103
|
--file "${HERE}/Dockerfile" \
|
|
104
104
|
--push \
|
|
105
|
-
"${
|
|
105
|
+
"${AGENT_DIR}"
|
|
106
106
|
echo " pushed ${IMAGE}"
|
|
107
107
|
|
|
108
108
|
# ---- 3. Execution role -------------------------------------------------------
|
|
@@ -135,7 +135,13 @@ POLICY=$(cat <<JSON
|
|
|
135
135
|
"bedrock-agentcore:RetrieveMemoryRecords","bedrock-agentcore:ListMemoryRecords",
|
|
136
136
|
"bedrock-agentcore:GetMemoryRecord","bedrock-agentcore:GetMemory",
|
|
137
137
|
"bedrock-agentcore:CreateMemory","bedrock-agentcore:ListMemories"],
|
|
138
|
-
"Resource":"*"}
|
|
138
|
+
"Resource":"*"},
|
|
139
|
+
{"Sid":"SsmTelemetryConfig","Effect":"Allow","Action":[
|
|
140
|
+
"ssm:GetParameter","ssm:GetParameters"],
|
|
141
|
+
"Resource":"arn:aws:ssm:${REGION}:${ACCOUNT}:parameter/prism/d1/*"},
|
|
142
|
+
{"Sid":"SecretsManagerAgentCreds","Effect":"Allow","Action":[
|
|
143
|
+
"secretsmanager:GetSecretValue"],
|
|
144
|
+
"Resource":"arn:aws:secretsmanager:${REGION}:${ACCOUNT}:secret:prism-d1-*"}
|
|
139
145
|
]}
|
|
140
146
|
JSON
|
|
141
147
|
)
|
|
@@ -167,8 +173,8 @@ HARNESS_ARN=$(
|
|
|
167
173
|
)
|
|
168
174
|
echo " ${HARNESS_ARN}"
|
|
169
175
|
|
|
170
|
-
# ---- 5. Write the ARN to SSM so
|
|
171
|
-
echo "==> SSM
|
|
176
|
+
# ---- 5. Write the ARN and model to SSM so they are discoverable without manual copying ----
|
|
177
|
+
echo "==> SSM parameters"
|
|
172
178
|
aws ssm put-parameter \
|
|
173
179
|
--name /prism/d1/harness-arn \
|
|
174
180
|
--value "${HARNESS_ARN}" \
|
|
@@ -176,6 +182,13 @@ aws ssm put-parameter \
|
|
|
176
182
|
--overwrite \
|
|
177
183
|
--description "AgentCore harness ARN — written by deploy-harness.sh" >/dev/null
|
|
178
184
|
echo " /prism/d1/harness-arn = ${HARNESS_ARN}"
|
|
185
|
+
aws ssm put-parameter \
|
|
186
|
+
--name /prism/d1/harness-model \
|
|
187
|
+
--value "${MODEL_ID}" \
|
|
188
|
+
--type String \
|
|
189
|
+
--overwrite \
|
|
190
|
+
--description "Model ID used by the coding agent — written by deploy-harness.sh" >/dev/null
|
|
191
|
+
echo " /prism/d1/harness-model = ${MODEL_ID}"
|
|
179
192
|
|
|
180
193
|
cat <<EOF
|
|
181
194
|
|
|
@@ -113,6 +113,22 @@ jobs:
|
|
|
113
113
|
fi
|
|
114
114
|
echo "arn=${ARN}" >> "$GITHUB_OUTPUT"
|
|
115
115
|
echo "Harness: ${ARN}"
|
|
116
|
+
# Resolve the model. SSM is the primary source (written by deploy-harness.sh,
|
|
117
|
+
# readable by the OIDC role). Fallback: extract from the harness API (requires
|
|
118
|
+
# bedrock-agentcore:GetAgentRuntime which not all roles have).
|
|
119
|
+
MODEL_ID=$(aws ssm get-parameter --name /prism/d1/harness-model \
|
|
120
|
+
--query Parameter.Value --output text 2>/dev/null || echo "")
|
|
121
|
+
if [[ -z "${MODEL_ID}" ]]; then
|
|
122
|
+
HARNESS_ID=$(echo "${ARN}" | grep -oP '[^/]+$')
|
|
123
|
+
MODEL_ID=$(python3 -c "
|
|
124
|
+
import boto3, json
|
|
125
|
+
c = boto3.client('bedrock-agentcore-control', region_name='${PRISM_AWS_REGION}')
|
|
126
|
+
h = c.get_harness(harnessId='${HARNESS_ID}')['harness']
|
|
127
|
+
print(h.get('model',{}).get('bedrockModelConfig',{}).get('modelId',''))
|
|
128
|
+
" 2>/dev/null || echo "")
|
|
129
|
+
fi
|
|
130
|
+
echo "model=${MODEL_ID}" >> "$GITHUB_OUTPUT"
|
|
131
|
+
echo "Model: ${MODEL_ID}"
|
|
116
132
|
|
|
117
133
|
- name: Set up Python
|
|
118
134
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
@@ -144,6 +160,7 @@ jobs:
|
|
|
144
160
|
PATCH_END_MARKER = "===PRISM_PATCH_END==="
|
|
145
161
|
|
|
146
162
|
harness_arn = "${{ steps.harness.outputs.arn }}"
|
|
163
|
+
model_id = "${{ steps.harness.outputs.model }}"
|
|
147
164
|
region = "${{ env.PRISM_AWS_REGION }}"
|
|
148
165
|
repo_url = """${REPO_URL}"""
|
|
149
166
|
ref = "${{ github.event.repository.default_branch }}"
|
|
@@ -158,6 +175,7 @@ jobs:
|
|
|
158
175
|
f"--ref '{ref}' "
|
|
159
176
|
f"--subdir '{subdir}' "
|
|
160
177
|
f"--issue @/tmp/agent-issue.json "
|
|
178
|
+
f"--model-id '{model_id}' "
|
|
161
179
|
f"--region '{region}'"
|
|
162
180
|
)
|
|
163
181
|
|
|
@@ -157,7 +157,14 @@ def main() -> int:
|
|
|
157
157
|
else:
|
|
158
158
|
issue = json.loads(args.issue)
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
# The CI workflow wraps the issue (`jq '{issue: .}'`) while eval fixtures are
|
|
161
|
+
# flat. Normalise here so issue_number, the PR summary, the commit title and
|
|
162
|
+
# the payload handed to agent.py all read the same shape. Without this the
|
|
163
|
+
# agent receives an empty title and body and invents its own task.
|
|
164
|
+
if isinstance(issue.get("issue"), dict):
|
|
165
|
+
issue = issue["issue"]
|
|
166
|
+
|
|
167
|
+
issue_number = int(issue.get("number") or 0)
|
|
161
168
|
|
|
162
169
|
ref = shlex.quote(args.ref)
|
|
163
170
|
url = shlex.quote(args.repo_url)
|
|
@@ -216,9 +223,12 @@ def main() -> int:
|
|
|
216
223
|
return 0
|
|
217
224
|
|
|
218
225
|
model_id = args.model_id or cfg.model_id
|
|
226
|
+
if not model_id:
|
|
227
|
+
sys.exit("No model_id. Pass --model-id or set it in .coding-agent/config.json.\n"
|
|
228
|
+
" The harness owns the model choice (deploy-harness.sh MODEL_ID);\n"
|
|
229
|
+
" the workflow should forward it via --model-id.")
|
|
219
230
|
# Set the env var for telemetry (overrides the args-only setdefault from earlier)
|
|
220
|
-
|
|
221
|
-
os.environ["PRISM_MODEL_ID"] = model_id
|
|
231
|
+
os.environ["PRISM_MODEL_ID"] = model_id
|
|
222
232
|
result["model"] = model_id
|
|
223
233
|
|
|
224
234
|
# Write the issue to a temp file for agent.py
|
|
@@ -278,7 +288,7 @@ def main() -> int:
|
|
|
278
288
|
import boto3 as _b3
|
|
279
289
|
_bedrock = _b3.client("bedrock-runtime", region_name=args.region)
|
|
280
290
|
_summary_resp = _bedrock.converse(
|
|
281
|
-
modelId=model_id
|
|
291
|
+
modelId=model_id,
|
|
282
292
|
messages=[{
|
|
283
293
|
"role": "user",
|
|
284
294
|
"content": [{"text": (
|
|
@@ -1257,18 +1257,7 @@ async function handleProductivityQuery(event: HttpApiEvent): Promise<HttpApiResp
|
|
|
1257
1257
|
totals.usage.outputTokens += u.usage.outputTokens;
|
|
1258
1258
|
totals.usage.costUsd += u.usage.costUsd;
|
|
1259
1259
|
totals.usage.calls += u.usage.calls;
|
|
1260
|
-
|
|
1261
|
-
const agg = totals.usage.byTool[tool] ?? { costUsd: 0, calls: 0 };
|
|
1262
|
-
agg.costUsd += t.costUsd;
|
|
1263
|
-
agg.calls += t.calls;
|
|
1264
|
-
totals.usage.byTool[tool] = agg;
|
|
1265
|
-
}
|
|
1266
|
-
for (const [model, m] of Object.entries(u.usage.byModel)) {
|
|
1267
|
-
const agg = totals.usage.byModel[model] ?? { costUsd: 0, calls: 0 };
|
|
1268
|
-
agg.costUsd += m.costUsd;
|
|
1269
|
-
agg.calls += m.calls;
|
|
1270
|
-
totals.usage.byModel[model] = agg;
|
|
1271
|
-
}
|
|
1260
|
+
mergeUsageBreakdowns(totals, u);
|
|
1272
1261
|
totals.commits.total += u.commits.total;
|
|
1273
1262
|
totals.commits.ai += u.commits.ai;
|
|
1274
1263
|
totals.commits.human += u.commits.human;
|
|
@@ -1304,6 +1293,7 @@ async function handleProductivityQuery(event: HttpApiEvent): Promise<HttpApiResp
|
|
|
1304
1293
|
into.usage.outputTokens += u.usage.outputTokens;
|
|
1305
1294
|
into.usage.costUsd += u.usage.costUsd;
|
|
1306
1295
|
into.usage.calls += u.usage.calls;
|
|
1296
|
+
mergeUsageBreakdowns(into, u);
|
|
1307
1297
|
into.commits.total += u.commits.total;
|
|
1308
1298
|
into.commits.ai += u.commits.ai;
|
|
1309
1299
|
into.commits.human += u.commits.human;
|
|
@@ -1525,6 +1515,31 @@ async function handleCommitsDailyQuery(event: HttpApiEvent): Promise<HttpApiResp
|
|
|
1525
1515
|
});
|
|
1526
1516
|
}
|
|
1527
1517
|
|
|
1518
|
+
/**
|
|
1519
|
+
* Merge one user's byTool/byModel spend maps into an accumulator.
|
|
1520
|
+
*
|
|
1521
|
+
* Shared by the fleet-total and the human/agent-split loops. It exists as a
|
|
1522
|
+
* function because it did not: the split loop was written later and summed
|
|
1523
|
+
* costUsd, calls, commits and issues but not these two maps, so `totals.usage.byTool`
|
|
1524
|
+
* arrived at the dashboard empty while every scalar beside it was correct. The
|
|
1525
|
+
* Detail view then rendered "no by tool data" next to a populated cost-per-commit
|
|
1526
|
+
* figure. Two loops summing the same shape is the drift; one function is the fix.
|
|
1527
|
+
*/
|
|
1528
|
+
function mergeUsageBreakdowns(into: UserProductivity, from: UserProductivity): void {
|
|
1529
|
+
for (const [tool, t] of Object.entries(from.usage.byTool)) {
|
|
1530
|
+
const agg = into.usage.byTool[tool] ?? { costUsd: 0, calls: 0 };
|
|
1531
|
+
agg.costUsd = Math.round((agg.costUsd + t.costUsd) * 10000) / 10000;
|
|
1532
|
+
agg.calls += t.calls;
|
|
1533
|
+
into.usage.byTool[tool] = agg;
|
|
1534
|
+
}
|
|
1535
|
+
for (const [model, m] of Object.entries(from.usage.byModel)) {
|
|
1536
|
+
const agg = into.usage.byModel[model] ?? { costUsd: 0, calls: 0 };
|
|
1537
|
+
agg.costUsd = Math.round((agg.costUsd + m.costUsd) * 10000) / 10000;
|
|
1538
|
+
agg.calls += m.calls;
|
|
1539
|
+
into.usage.byModel[model] = agg;
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1528
1543
|
function accumulateUsage(u: UserProductivity, item: Record<string, { S?: string; N?: string }>): void {
|
|
1529
1544
|
const tool = item.tool?.S ?? 'unknown';
|
|
1530
1545
|
const cost = Number(item.cost_usd?.N ?? 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-github-oidc.d.ts","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-github-oidc.ts"],"names":[],"mappings":";;;;;;;;;;;iBA+CqB;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;AAP5E,
|
|
1
|
+
{"version":3,"file":"setup-github-oidc.d.ts","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-github-oidc.ts"],"names":[],"mappings":";;;;;;;;;;;iBA+CqB;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;AAP5E,wBAsTE"}
|
|
@@ -243,10 +243,14 @@ export default {
|
|
|
243
243
|
// The coding agent workflow invokes the harness (InvokeHarness) and runs
|
|
244
244
|
// deterministic shell commands in the same session (InvokeAgentRuntimeCommand)
|
|
245
245
|
// for clone, toolchain install, dependency install, and verification.
|
|
246
|
+
// GetHarness (→ GetAgentRuntime) resolves the model from the harness config
|
|
247
|
+
// as a fallback when the SSM parameter is missing.
|
|
246
248
|
Effect: 'Allow',
|
|
247
249
|
Action: [
|
|
248
250
|
'bedrock-agentcore:InvokeHarness',
|
|
249
251
|
'bedrock-agentcore:InvokeAgentRuntimeCommand',
|
|
252
|
+
'bedrock-agentcore:GetHarness',
|
|
253
|
+
'bedrock-agentcore:GetAgentRuntime',
|
|
250
254
|
],
|
|
251
255
|
Resource: `arn:aws:bedrock-agentcore:${region}:${accountId}:harness/*`,
|
|
252
256
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-github-oidc.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-github-oidc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-github-oidc.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-github-oidc.ts"],"names":[],"mappings":"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"}
|