chore: sync actions from gh-aw@v0.89.16 - #248
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Resolve the guardrail output, accounting, retry, MCP tracing, and timeout issues before approval.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Automated sync of runtime actions from gh-aw@v0.89.16.
Changes:
- Updates AWF/Copilot versions, compatibility metadata, dependencies, and model pricing.
- Adds native tracing, inline JSON CLI support, and safe-output improvements.
- Refines retries, permissions, diagnostics, and AI Credits accounting.
File summaries
| File | Summary |
|---|---|
setup/sh/run_awf_with_startup_retries.sh |
Records pre-harness execution evidence. |
setup/sh/install_copilot_cli.sh |
Updates the default Copilot version. |
setup/sh/install_awf_binary.sh |
Adds compatible curl retry detection. |
setup/md/mcp_cli_tools_with_safeoutputs_prompt.md |
Documents inline JSON invocation. |
setup/md/effective_tokens_rate_limit_error.md |
Removes obsolete token guidance. |
setup/md/ai_credits_rate_limit_throttle.md |
Updates rate-limit messaging. |
setup/js/trace_graders.cjs |
Adds native tool-event tracing; MCP payload-method matching needs correction. |
setup/js/tool_call_details.cjs |
Extracts structured tool inputs. |
setup/js/safe_outputs_tools.json |
Updates safe-output schemas and aliases. |
setup/js/safe_outputs_handlers.cjs |
Improves artifact path staging. |
setup/js/parse_mcp_gateway_log.cjs |
Refines rate-limit detection. |
setup/js/package.json |
Updates JavaScript dependencies. |
setup/js/models.json |
Adds models and pricing updates. |
setup/js/mcp_cli_schema_docs.cjs |
Updates generated CLI examples. |
setup/js/mcp_cli_bridge.cjs |
Supports inline JSON arguments. |
setup/js/handle_agent_failure.cjs |
Adds CLI diagnostics and accounting updates. |
setup/js/error_recovery.cjs |
Expands transient retries; retry-after-only 403 responses need coverage. |
setup/js/daily_aic_component_coverage.cjs |
Updates accounting; missing evidence must not be treated as zero. |
setup/js/copilot_sdk_session.cjs |
Adds denial timeouts and event fields; large timeout values need clamping. |
setup/js/copilot_sdk_permissions.cjs |
Improves shell-rule matching. |
setup/js/check_daily_aic_workflow_guardrail.cjs |
Updates daily AIC outputs; the downstream workflow still expects the old output name. |
setup/js/ai_credits_context.cjs |
Refines rate-limit signal parsing. |
setup/js/add_labels.cjs |
Gracefully skips empty label requests. |
.github/aw/compat.json |
Raises the supported Copilot version. |
Review details
Suppressed comments (3)
setup/js/copilot_sdk_session.cjs:301
getEnvPositiveIntOrDefaultaccepts any positive safe integer, so values above Node's 2^31-1 ms timer limit reachsetTimeoutunchanged. Those timers are clamped to an immediate timeout, meaning a large configured guard timeout can force-exit almost immediately instead of waiting. Clamp or reject the override before scheduling it.
const denialGuardTimeoutMs = getEnvPositiveIntOrDefault("GH_AW_DENIAL_GUARD_TIMEOUT_MS", DENIAL_GUARD_FORCE_EXIT_MS_DEFAULT);
setup/js/daily_aic_component_coverage.cjs:188
- When an agent failure has no accounting and no
execution.json, this branch records zero solely because the legacy agent artifact was not inspected.artifactInspected: falsealso covers an absent, expired, or unavailable artifact, none of which proves that the agent never reached inference; billable usage could be lost by an artifact/transport failure. This should remain fail-closed unless the new execution evidence or a positively inspected pre-harness log proves no inference occurred.
if (name === "agent" && job.conclusion === "failure" && candidateStates[0].state === "missing" && !fs.existsSync(path.join(directory, name, "execution.json")) && !legacyAgentEvidence?.artifactInspected) {
logComponentAIC(runId, name, job, 0, "failed_before_accounting", {
source: candidateStates[0].file,
});
continue;
setup/js/trace_graders.cjs:498
rpc-messages.jsonlentries store the request aspayload.method === "tools/call"(the parser inparse_mcp_gateway_log.cjsuses that shape), but this filter only checkse.methodandpayload.tool_name. A standard JSON-RPC entry therefore has no matchingtool_nameand is dropped before the mapper can readpayload.params.name/arguments, so MCP calls disappear from grader traces. Include the payload method in this filter.
return e.type === "tool_call" || e.method === "tools/call" || e.event === "tool_call" || typeof e.tool_name === "string" || (payload !== null && typeof payload.tool_name === "string");
- Files reviewed: 24/24 changed files
- Comments generated: 3
- Review effort level: Lite (auto)
Note
Copilot is running an experiment and ran this review at Lite.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| const rateLimit = budget.snapshot(); | ||
|
|
||
| core.setOutput("daily_ai_credits_total_effective_tokens", String(totalAIC)); | ||
| core.setOutput("daily_ai_credits_total", String(totalAIC)); |
Comment on lines
+190
to
+194
| if (name === "evals" && job.conclusion === "failure") { | ||
| logComponentAIC(runId, name, job, 0, "failed_before_accounting", { | ||
| source: candidateStates[0].file, | ||
| }); | ||
| continue; |
| const headers = error?.response?.headers ?? error?.headers ?? null; | ||
| const remainingHeader = getHeader(headers, "x-ratelimit-remaining"); | ||
| const remainingExhausted = remainingHeader != null && parseInt(remainingHeader, 10) === 0; | ||
| return { headers, isRateLimit: status === 429 || (status === 403 && remainingExhausted) }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated sync of actions from gh-aw at
v0.89.16.