@plainconceptsplatform/workflows 1.13.1 → 1.14.1
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/loops/actions/add-issue-labels/action.yml +50 -50
- package/loops/actions/agent-output.cjs +17 -17
- package/loops/actions/apply-agent-bundle/action.yml +24 -24
- package/loops/actions/apply-agent-comments/action.yml +42 -42
- package/loops/actions/apply-agent-labels/action.yml +55 -55
- package/loops/actions/cleanup-artifacts/action.yml +91 -91
- package/loops/actions/close-agent-issues/action.yml +43 -43
- package/loops/actions/create-issue-comment/action.yml +29 -29
- package/loops/actions/download-agent-output/action.yml +53 -53
- package/loops/actions/link-pr-to-issue/action.yml +40 -40
- package/loops/actions/list-open-issues/action.yml +33 -33
- package/loops/actions/load-issue-context/action.yml +45 -45
- package/loops/actions/merge-agent-pr/action.yml +49 -49
- package/loops/actions/remove-issue-labels/action.yml +37 -37
- package/loops/actions/update-agent-issues/action.yml +58 -58
- package/loops/actions/validate-refine-output/validate-refine-output.sh +15 -3
- package/loops/actions/validate-review-output/action.yml +35 -35
- package/loops/actions/validate-review-output/validate-review-output.sh +4 -1
- package/loops/actions/validate-triage-output/action.yml +36 -36
- package/loops/actions/validate-triage-output/validate-triage-output.sh +5 -2
- package/loops/actions/verify-composite-actions/action.yml +9 -9
- package/loops/actions/verify-refine-output/action.yml +9 -9
- package/loops/actions/verify-refine-output/verify-refine-output.sh +10 -0
- package/loops/actions/verify-route-matrix/action.yml +9 -9
- package/loops/actions/verify-route-matrix/verify-route-matrix.sh +2 -2
- package/loops/templates/agentics/agentics-maintenance.yml +121 -121
- package/loops/templates/issues/bug_report.yml +109 -109
- package/loops/templates/issues/feature_request.yml +75 -75
- package/loops/workflows/agent-implement.md +13 -12
- package/loops/workflows/agent-refine.md +14 -1
- package/loops/workflows/shared/opencode-ci.md +17 -5
- package/loops/workflows/shared/platform-defaults.md +53 -53
- package/package.json +1 -1
|
@@ -738,7 +738,20 @@ jobs:
|
|
|
738
738
|
output_tokens=$(jq -r '.output_tokens // empty' usage-read/agent_usage.json 2>/dev/null || echo "")
|
|
739
739
|
fi
|
|
740
740
|
if [ -n "$output_tokens" ] && [ "$output_tokens" -gt 20000 ]; then
|
|
741
|
-
|
|
741
|
+
# A run that burned tokens and produced items the validator refused is not
|
|
742
|
+
# truncation: the agent finished, and the validator did not recognise the
|
|
743
|
+
# outcome shape (Bots #1336, run 42214146974: 50926 output tokens, 2 items,
|
|
744
|
+
# draft marker stripped by process_safe_outputs, questions line paraphrased).
|
|
745
|
+
# Only call it truncation when the agent spent tokens and produced nothing.
|
|
746
|
+
item_count=0
|
|
747
|
+
if [ -f usage-read/agent_output.json ]; then
|
|
748
|
+
item_count=$(jq '.items | length' usage-read/agent_output.json 2>/dev/null || echo 0)
|
|
749
|
+
fi
|
|
750
|
+
if [ "$item_count" -gt 0 ]; then
|
|
751
|
+
echo "truncated=This attempt consumed ${output_tokens} output tokens and produced ${item_count} item(s), but the validator could not recognise the outcome. The agent finished its work: check the run artifacts (agent_output.json, safeoutputs.jsonl) against the validator's expected shape before retrying." >> "$GITHUB_OUTPUT"
|
|
752
|
+
else
|
|
753
|
+
echo "truncated=This attempt consumed ${output_tokens} output tokens and still produced no outcome. That is what provider output truncation looks like, not an outage: the model hit the single-response cap mid-generation and every call it was writing was lost. If this repeats, split the issue or tighten its body." >> "$GITHUB_OUTPUT"
|
|
754
|
+
fi
|
|
742
755
|
else
|
|
743
756
|
echo "truncated=" >> "$GITHUB_OUTPUT"
|
|
744
757
|
fi
|
|
@@ -208,11 +208,10 @@ pre-agent-steps:
|
|
|
208
208
|
# Two of the three run here. pc-system-reminders gates shell and edits on skills a CI
|
|
209
209
|
# worker's prompt does not load, and has never run in CI; it stays off until it does.
|
|
210
210
|
#
|
|
211
|
-
# The tier models come from AGENT_TIER_MODEL when a worker sets it. The
|
|
212
|
-
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
# plugin reads first, until a run on the newly priced models has passed.
|
|
211
|
+
# The tier models come from AGENT_TIER_MODEL when a worker sets it. The implement worker
|
|
212
|
+
# leaves it empty so harness.json drives: plan=glm-5-3, build/fast=glm-5-2. A repository
|
|
213
|
+
# whose CI account is not granted a tier model can still pin every tier to one model
|
|
214
|
+
# through the gitignored per-user override the plugin reads first.
|
|
216
215
|
run: |
|
|
217
216
|
set -euo pipefail
|
|
218
217
|
if [ ! -f .opencode/package.json ]; then
|
|
@@ -246,6 +245,19 @@ pre-agent-steps:
|
|
|
246
245
|
echo "Harness plugins: $(ls .opencode/plugins | tr '\n' ' ')"
|
|
247
246
|
echo "Tier models: $(jq -c '.models' .opencode/harness.user.json 2>/dev/null || jq -c '.models' .opencode/harness.json)"
|
|
248
247
|
|
|
248
|
+
- name: Sync harness agents and print model routing
|
|
249
|
+
# The plugin writes these at startup, but OpenCode builds the task enum from what
|
|
250
|
+
# exists when it starts. Generating them here makes planner-sub and the tier
|
|
251
|
+
# variants visible from the first turn; the doctor is the audit line.
|
|
252
|
+
run: |
|
|
253
|
+
set -euo pipefail
|
|
254
|
+
if [ -f .opencode/scripts/sync-agents.mjs ] && [ -f .opencode/plugins/pc-subagent-tiers-core.js ]; then
|
|
255
|
+
node .opencode/scripts/sync-agents.mjs --strict
|
|
256
|
+
fi
|
|
257
|
+
if [ -f .opencode/scripts/harness-doctor.mjs ]; then
|
|
258
|
+
node .opencode/scripts/harness-doctor.mjs --strict
|
|
259
|
+
fi
|
|
260
|
+
|
|
249
261
|
- name: Merge the CI-only OpenCode provider into opencode.jsonc
|
|
250
262
|
env:
|
|
251
263
|
GH_TOKEN: ${{ github.token }}
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
---
|
|
2
|
-
# Managed by @plainconceptsplatform/workflows. Source: loops/workflows/shared/platform-defaults.md. Update with `workflows update --force`; consumer edits may be overwritten.
|
|
3
|
-
description: Shared network and safe-output defaults for catalog agent workflows, plus the verification rules every worker that builds or pushes has to follow. The body below is runtime-imported into each worker's prompt ahead of its own steps.
|
|
4
|
-
|
|
5
|
-
network:
|
|
6
|
-
allowed:
|
|
7
|
-
- defaults
|
|
8
|
-
- forge.plainconcepts.com
|
|
9
|
-
# opencode fetches its model registry from models.opencode.ai at startup; without
|
|
10
|
-
# this host on the allowlist the fetch blocks bootstrap and the run stalls after
|
|
11
|
-
# "init" until the runner kills it. The apex "opencode.ai" is not enough.
|
|
12
|
-
- models.opencode.ai
|
|
13
|
-
- node
|
|
14
|
-
- github
|
|
15
|
-
- dotnet
|
|
16
|
-
- fonts
|
|
17
|
-
- login.microsoftonline.com
|
|
18
|
-
# centralised AgentMemory (App Service); the MCP shim needs it through the egress proxy
|
|
19
|
-
- agentmemory-pro-01.azurewebsites.net
|
|
20
|
-
|
|
21
|
-
safe-outputs:
|
|
22
|
-
threat-detection: false
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## These runs are not interactive
|
|
26
|
-
|
|
27
|
-
- Nothing resumes you. A turn that ends with text and no tool call ends the whole run, and the work
|
|
28
|
-
is discarded, whatever the text promised. "I'll read the context files first." as a last message
|
|
29
|
-
is a finished run: the Pliny-Bot merge gate did exactly that on #801, ended in twenty-three
|
|
30
|
-
seconds with exit code 0 and no outcome, and was retried twice before the pull request was handed
|
|
31
|
-
to a person for nothing.
|
|
32
|
-
- So every message you write carries a tool call until the last one, which is the safe-output call
|
|
33
|
-
the task names. Say what you are about to do and do it in the same message. Never announce a step
|
|
34
|
-
and stop, never wait for a command, a reviewer or a "next turn".
|
|
35
|
-
- A command the bash tool reports as moved to the background is still running: poll its output file
|
|
36
|
-
with tool calls (`sleep 40; tail -n 15 <file>`) until it shows an exit status, then go on.
|
|
37
|
-
|
|
38
|
-
## Verification, for every worker that builds or pushes
|
|
39
|
-
|
|
40
|
-
- Scope every check to the files you changed. This is the runner, not a preference: a
|
|
41
|
-
whole-repository lint, build or test run exhausts its memory and gets killed mid-run, which
|
|
42
|
-
fails the job with no useful output. Pass the changed paths to the linter (`pnpm exec biome
|
|
43
|
-
check <files>`), build only the projects containing them, and run only the test project that
|
|
44
|
-
covers them. Escalate to the full suite only after the scoped run passes and only when the
|
|
45
|
-
change crosses a project boundary.
|
|
46
|
-
- Run nothing at all for a change that touches only documentation. A cold Release build on a
|
|
47
|
-
shared runner is minutes the run does not get back.
|
|
48
|
-
- Never make a check pass by weakening it: not a deleted test, not a lowered threshold, not a
|
|
49
|
-
skipped step. Fix the cause and run it again.
|
|
50
|
-
- Once the checks pass, run the project's lint fix command over the files you changed
|
|
51
|
-
(`pnpm lint:fix`, `pnpm exec biome check --write <changed-files>`, or its equivalent), or
|
|
52
|
-
correct what lint reports where no fix command exists. A branch that arrives with lint errors
|
|
53
|
-
gets sent back for them.
|
|
1
|
+
---
|
|
2
|
+
# Managed by @plainconceptsplatform/workflows. Source: loops/workflows/shared/platform-defaults.md. Update with `workflows update --force`; consumer edits may be overwritten.
|
|
3
|
+
description: Shared network and safe-output defaults for catalog agent workflows, plus the verification rules every worker that builds or pushes has to follow. The body below is runtime-imported into each worker's prompt ahead of its own steps.
|
|
4
|
+
|
|
5
|
+
network:
|
|
6
|
+
allowed:
|
|
7
|
+
- defaults
|
|
8
|
+
- forge.plainconcepts.com
|
|
9
|
+
# opencode fetches its model registry from models.opencode.ai at startup; without
|
|
10
|
+
# this host on the allowlist the fetch blocks bootstrap and the run stalls after
|
|
11
|
+
# "init" until the runner kills it. The apex "opencode.ai" is not enough.
|
|
12
|
+
- models.opencode.ai
|
|
13
|
+
- node
|
|
14
|
+
- github
|
|
15
|
+
- dotnet
|
|
16
|
+
- fonts
|
|
17
|
+
- login.microsoftonline.com
|
|
18
|
+
# centralised AgentMemory (App Service); the MCP shim needs it through the egress proxy
|
|
19
|
+
- agentmemory-pro-01.azurewebsites.net
|
|
20
|
+
|
|
21
|
+
safe-outputs:
|
|
22
|
+
threat-detection: false
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## These runs are not interactive
|
|
26
|
+
|
|
27
|
+
- Nothing resumes you. A turn that ends with text and no tool call ends the whole run, and the work
|
|
28
|
+
is discarded, whatever the text promised. "I'll read the context files first." as a last message
|
|
29
|
+
is a finished run: the Pliny-Bot merge gate did exactly that on #801, ended in twenty-three
|
|
30
|
+
seconds with exit code 0 and no outcome, and was retried twice before the pull request was handed
|
|
31
|
+
to a person for nothing.
|
|
32
|
+
- So every message you write carries a tool call until the last one, which is the safe-output call
|
|
33
|
+
the task names. Say what you are about to do and do it in the same message. Never announce a step
|
|
34
|
+
and stop, never wait for a command, a reviewer or a "next turn".
|
|
35
|
+
- A command the bash tool reports as moved to the background is still running: poll its output file
|
|
36
|
+
with tool calls (`sleep 40; tail -n 15 <file>`) until it shows an exit status, then go on.
|
|
37
|
+
|
|
38
|
+
## Verification, for every worker that builds or pushes
|
|
39
|
+
|
|
40
|
+
- Scope every check to the files you changed. This is the runner, not a preference: a
|
|
41
|
+
whole-repository lint, build or test run exhausts its memory and gets killed mid-run, which
|
|
42
|
+
fails the job with no useful output. Pass the changed paths to the linter (`pnpm exec biome
|
|
43
|
+
check <files>`), build only the projects containing them, and run only the test project that
|
|
44
|
+
covers them. Escalate to the full suite only after the scoped run passes and only when the
|
|
45
|
+
change crosses a project boundary.
|
|
46
|
+
- Run nothing at all for a change that touches only documentation. A cold Release build on a
|
|
47
|
+
shared runner is minutes the run does not get back.
|
|
48
|
+
- Never make a check pass by weakening it: not a deleted test, not a lowered threshold, not a
|
|
49
|
+
skipped step. Fix the cause and run it again.
|
|
50
|
+
- Once the checks pass, run the project's lint fix command over the files you changed
|
|
51
|
+
(`pnpm lint:fix`, `pnpm exec biome check --write <changed-files>`, or its equivalent), or
|
|
52
|
+
correct what lint reports where no fix command exists. A branch that arrives with lint errors
|
|
53
|
+
gets sent back for them.
|