chore: update agentic template v3.16.0 -> v3.16.1

This commit is contained in:
pandoscope-release-bot[bot]
2026-08-07 20:54:24 +00:00
committed by GitHub
parent 1fb6a46e8b
commit 6fef393ae5
4 changed files with 37 additions and 5 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
_commit: v3.16.0
_commit: v3.16.1
_src_path: https://github.com/pandoscope/agentic-engineering-template
agentic_disambiguate_roots: ''
agentic_disambiguate_version: 0.3.0
+10
View File
@@ -254,6 +254,16 @@ jobs:
--json body --jq .body \
|| echo "_No release notes found for $NEW_REF in $template_repo._")"
# The changelog is quoted material from another repo, and it
# must not act on this one (#149). Release notes render every
# reference as `closes owner/repo#n`, GitHub reads closing
# keywords in a PR BODY, and `owner/repo#n` reaches across
# repositories — so merging an update PR here closed an
# upstream ticket whose work was not done. The verb is
# defused and the link kept: `closes [x#1]` -> `ref [x#1]`.
changelog="$(printf '%s' "$changelog" | sed -E \
's/(close[sd]?|fix(e[sd])?|resolve[sd]?)([[:space:]]+\[?[A-Za-z0-9._\/-]*#[0-9]+)/ref\3/Ig')"
{
echo "Automated \`copier update\` of the agentic template: \`$OLD_REF\` -> \`$NEW_REF\`."
echo
+7 -1
View File
@@ -1,5 +1,11 @@
# See https://pre-commit.com for more information
exclude: "CHANGELOG.md|.copier-answers.agentic.yml|.all-contributorsrc|\\.agents/skills|\\.claude/skills"
#
# Vendored paths are excluded: they are template output, byte-pinned
# upstream, and a fix applied here would be overwritten by the next
# update. `scripts/ci/` joins the skills directories for that reason —
# a consumer with stricter lint rules than the template's own would
# otherwise fail on code it cannot change.
exclude: "CHANGELOG.md|.copier-answers.agentic.yml|.all-contributorsrc|\\.agents/skills|\\.claude/skills|scripts/ci/"
default_stages: [pre-commit]
default_install_hook_types: [pre-commit, commit-msg]
+19 -3
View File
@@ -28,17 +28,33 @@ API = os.environ.get("GITHUB_API_URL", "https://api.github.com")
SERVER = os.environ.get("GITHUB_SERVER_URL", "https://github.com")
def api_url(path):
"""The absolute URL for an API path, refusing any non-HTTP scheme.
`API` comes from the environment, so a hostile or fat-fingered
`GITHUB_API_URL` could otherwise steer the gate's own reads at
`file:` and have it judge a PR on whatever it found on disk. The
scheme is checked here, once, because this is the only place a URL
is built.
"""
url = API + path
if not url.startswith(("https://", "http://")):
scheme = url.split(":", 1)[0] if ":" in url else url
raise ValueError(f"GITHUB_API_URL must be http(s) — refusing scheme {scheme!r}")
return url
def fetch(path, token):
"""GET one API path, parsed. The only network call in this file."""
req = urllib.request.Request(
API + path,
req = urllib.request.Request( # noqa: S310 — api_url rejects every other scheme
api_url(path),
headers={
"Authorization": f"Bearer {token}",
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
},
)
with urllib.request.urlopen(req) as response:
with urllib.request.urlopen(req) as response: # noqa: S310 — checked above
return json.load(response)