@plainconceptsplatform/workflows 0.26.0 → 0.27.2

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.
@@ -71,16 +71,27 @@ jobs:
71
71
  ISSUE: ${{ inputs.linked-issue }}
72
72
  run: |
73
73
  set -euo pipefail
74
- pr_state=$(gh pr view "$PR" --repo "$REPO" --json state --jq '.state')
75
- [ "$pr_state" = "OPEN" ] || { echo "found=false"; exit 0; }
74
+ pr=$(gh pr view "$PR" --repo "$REPO" --json state,closingIssuesReferences,body)
75
+ [ "$(jq -r '.state' <<<"$pr")" = "OPEN" ] || { echo "found=false"; exit 0; }
76
76
  echo "found=true" >> "$GITHUB_OUTPUT"
77
77
  echo "pr=$PR" >> "$GITHUB_OUTPUT"
78
- echo "issue=$ISSUE" >> "$GITHUB_OUTPUT"
78
+ issue="$ISSUE"
79
+ if [ -z "$issue" ]; then
80
+ issue="$(jq -r '.closingIssuesReferences[0].number // empty' <<<"$pr")"
81
+ fi
82
+ if [ -z "$issue" ]; then
83
+ issue="$(jq -r '.body // ""' <<<"$pr" |
84
+ grep -oiE '(close[sd]?|fixe?[sd]?|resolve[sd]?) +#[0-9]+' |
85
+ grep -oE '[0-9]+' | head -n 1 || true)"
86
+ fi
87
+ echo "issue=$issue" >> "$GITHUB_OUTPUT"
79
88
 
80
89
  checkout:
81
90
  fetch: ["*"]
82
91
  fetch-depth: 0
83
92
 
93
+ permissions: read-all
94
+
84
95
  steps:
85
96
  - name: Check out the pull request branch
86
97
  env:
@@ -1,5 +1,5 @@
1
1
  # Managed by @plainconceptsplatform/workflows. Source: loops/workflows/work-router.yml. Update with `workflows update --force`; consumer edits may be overwritten.
2
- name: "All Work Router"
2
+ name: "# Main Work Router"
3
3
 
4
4
  # Owns every repository automation trigger. Classifies each event into exactly one route,
5
5
  # then calls at most one worker or runs one deterministic job. No model runs here.
@@ -10,71 +10,92 @@ name: "All Work Router"
10
10
  run-name: >-
11
11
  ${{ github.event_name == 'issues'
12
12
  && github.event.action == 'opened'
13
- && format('Issue opened: {0} (#{1}) by {2}', github.event.issue.title, github.event.issue.number, github.actor)
13
+ && format('Event: Issue opened — #{0} {1} by {2}', github.event.issue.number, github.event.issue.title, github.actor)
14
14
  || github.event_name == 'issues'
15
15
  && github.event.label.name == 'bot-working'
16
16
  && contains(github.event.issue.labels.*.name, 'implement')
17
- && format('Working (Implement): {0} (#{1})', github.event.issue.title, github.event.issue.number)
17
+ && format('Agent: Implement — #{0} {1}', github.event.issue.number, github.event.issue.title)
18
18
  || github.event_name == 'issues'
19
19
  && github.event.label.name == 'bot-working'
20
20
  && contains(github.event.issue.labels.*.name, 'refine')
21
- && format('Working (Refine): {0} (#{1})', github.event.issue.title, github.event.issue.number)
21
+ && format('Agent: Refine — #{0} {1}', github.event.issue.number, github.event.issue.title)
22
22
  || github.event_name == 'issues'
23
23
  && github.event.label.name == 'bot-working'
24
24
  && contains(github.event.issue.labels.*.name, 'direct')
25
- && format('Working (Direct): {0} (#{1})', github.event.issue.title, github.event.issue.number)
25
+ && format('Working: Direct — #{0} {1}', github.event.issue.number, github.event.issue.title)
26
26
  || github.event_name == 'issues'
27
27
  && github.event.label.name == 'bot-working'
28
28
  && contains(github.event.issue.labels.*.name, 'triage')
29
- && format('Working (Triage): {0} (#{1})', github.event.issue.title, github.event.issue.number)
29
+ && format('Agent: Triage — #{0} {1}', github.event.issue.number, github.event.issue.title)
30
30
  || github.event_name == 'issues'
31
31
  && github.event.label.name == 'bot-working'
32
- && format('Working: {0} (#{1})', github.event.issue.title, github.event.issue.number)
32
+ && format('Working: #{0} {1}', github.event.issue.number, github.event.issue.title)
33
33
  || github.event_name == 'issues'
34
34
  && github.event.label.name == 'implement'
35
35
  && endsWith(github.actor, '[bot]')
36
- && format('Working (Implement): {0} (#{1})', github.event.issue.title, github.event.issue.number)
36
+ && format('Agent: Implement — #{0} {1}', github.event.issue.number, github.event.issue.title)
37
37
  || github.event_name == 'issues'
38
38
  && github.event.label.name == 'refine'
39
39
  && endsWith(github.actor, '[bot]')
40
- && format('Working (Refine): {0} (#{1})', github.event.issue.title, github.event.issue.number)
40
+ && format('Agent: Refine — #{0} {1}', github.event.issue.number, github.event.issue.title)
41
41
  || github.event_name == 'issues'
42
42
  && github.event.label.name == 'direct'
43
43
  && endsWith(github.actor, '[bot]')
44
- && format('Working (Direct): {0} (#{1})', github.event.issue.title, github.event.issue.number)
44
+ && format('Working: Direct — #{0} {1}', github.event.issue.number, github.event.issue.title)
45
45
  || github.event_name == 'issues'
46
- && format('{0} label on #{1} by {2}', github.event.label.name, github.event.issue.number, github.actor)
46
+ && format('Event: {0} on #{1} by {2}', github.event.label.name, github.event.issue.number, github.actor)
47
47
  || github.event_name == 'issue_comment'
48
- && format('comment on #{0} by {1}', github.event.issue.number, github.actor)
48
+ && format('Event: Comment on #{0} by {1}', github.event.issue.number, github.actor)
49
49
  || github.event_name == 'pull_request_review'
50
- && format('review on PR #{0} by {1}', github.event.pull_request.number, github.actor)
50
+ && format('Event: Review on PR #{0} by {1}', github.event.pull_request.number, github.actor)
51
51
  || github.event_name == 'pull_request_review_comment'
52
- && format('review comment on PR #{0} by {1}', github.event.pull_request.number, github.actor)
52
+ && format('Event: Review comment on PR #{0} by {1}', github.event.pull_request.number, github.actor)
53
53
  || github.event_name == 'pull_request_target'
54
- && format('PR #{0} {1} by {2}', github.event.pull_request.number, github.event.action, github.actor)
54
+ && format('Event: PR #{0} {1} by {2}', github.event.pull_request.number, github.event.action, github.actor)
55
55
  || github.event_name == 'workflow_run'
56
- && format('CI {0} on {1}', github.event.workflow_run.conclusion, github.event.workflow_run.head_branch)
56
+ && format('Event: CI {0} on {1}', github.event.workflow_run.conclusion, github.event.workflow_run.head_branch)
57
57
  || github.event_name == 'workflow_dispatch'
58
58
  && inputs.operation == 'triage'
59
- && format('Working (Triage): #{0}', inputs.issue-number)
59
+ && format('Agent: Triage — #{0}', inputs.issue-number)
60
60
  || github.event_name == 'workflow_dispatch'
61
61
  && inputs.operation == 'refine'
62
- && format('Working (Refine): #{0}', inputs.issue-number)
62
+ && format('Agent: Refine — #{0}', inputs.issue-number)
63
63
  || github.event_name == 'workflow_dispatch'
64
64
  && inputs.operation == 'implement'
65
- && format('Working (Implement): #{0}', inputs.issue-number)
65
+ && format('Agent: Implement — #{0}', inputs.issue-number)
66
66
  || github.event_name == 'workflow_dispatch'
67
67
  && inputs.operation == 'merge-gate'
68
- && format('Working (Merge Gate): PR #{0}', inputs.pr-number)
68
+ && format('Agent: Merge Gate — PR #{0}', inputs.pr-number)
69
69
  || github.event_name == 'workflow_dispatch'
70
70
  && inputs.operation == 'visual-verify'
71
- && format('Working (Visual Verify): PR #{0}', inputs.pr-number)
71
+ && format('Agent: Visual Verify — PR #{0}', inputs.pr-number)
72
72
  || github.event_name == 'workflow_dispatch'
73
73
  && inputs.operation == 'batch'
74
- && format('Working (Batch): #{0}', inputs.issue-number)
74
+ && format('Working: Batch — #{0}', inputs.issue-number)
75
+ || github.event_name == 'workflow_dispatch'
76
+ && inputs.operation == 'audit'
77
+ && format('Agent: Audit — manual{0}', '')
78
+ || github.event_name == 'workflow_dispatch'
79
+ && inputs.operation == 'release'
80
+ && format('Agent: Release{0}', '')
75
81
  || github.event_name == 'workflow_dispatch'
76
82
  && format('dispatch: {0}', inputs.operation)
77
83
  || github.event_name == 'schedule'
84
+ && github.event.schedule == '17 1 * * 1'
85
+ && format('Agent: Audit — weekly{0}', '')
86
+ || github.event_name == 'schedule'
87
+ && github.event.schedule == '43 3 * * *'
88
+ && format('Agentics: Audit Close — daily{0}', '')
89
+ || github.event_name == 'schedule'
90
+ && github.event.schedule == '0 6 * * *'
91
+ && format('Agentics: Cleanup — daily{0}', '')
92
+ || github.event_name == 'schedule'
93
+ && github.event.schedule == '17 * * * *'
94
+ && format('Agentics: Reconcile — hourly{0}', '')
95
+ || github.event_name == 'schedule'
96
+ && github.event.schedule == '23 */6 * * *'
97
+ && format('Agentics: Maintenance — 6h{0}', '')
98
+ || github.event_name == 'schedule'
78
99
  && format('schedule {0}', github.event.schedule)
79
100
  || github.event_name }}
80
101
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plainconceptsplatform/workflows",
3
- "version": "0.26.0",
3
+ "version": "0.27.2",
4
4
  "description": "Install and update Platform GitHub agentic workflows.",
5
5
  "keywords": [
6
6
  "github-actions",