@plainconceptsplatform/workflows 0.4.33 → 0.5.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.
Files changed (75) hide show
  1. package/README.md +88 -88
  2. package/loops/actions/agent-output.cjs +17 -17
  3. package/loops/actions/audit-close/action.yml +24 -0
  4. package/loops/actions/classify-route/action.yml +4 -3
  5. package/loops/actions/classify-route/classify-route.sh +69 -29
  6. package/loops/actions/load-issue-context/action.yml +2 -0
  7. package/loops/actions/update-changelog/action.yml +113 -0
  8. package/loops/actions/validate-merge-gate-output/action.yml +40 -0
  9. package/loops/actions/validate-merge-gate-output/validate-merge-gate-output.sh +34 -0
  10. package/loops/actions/validate-refine-output/validate-refine-output.sh +16 -3
  11. package/loops/actions/validate-review-output/action.yml +35 -0
  12. package/loops/actions/validate-review-output/validate-review-output.sh +30 -0
  13. package/loops/actions/validate-triage-output/action.yml +36 -0
  14. package/loops/actions/validate-triage-output/validate-triage-output.sh +36 -0
  15. package/loops/actions/verify-route-matrix/verify-route-matrix.sh +121 -36
  16. package/loops/scripts/compile-agent-workflows.mjs +195 -6
  17. package/loops/templates/agentics/agentics-checks.yml +86 -86
  18. package/loops/templates/agentics/agentics-maintenance.yml +121 -121
  19. package/loops/templates/ci/app-ci-dotnet-next.yml +268 -171
  20. package/loops/templates/ci/app-ci-node-monorepo.yml +208 -178
  21. package/loops/templates/issues/bug_report.yml +109 -109
  22. package/loops/templates/issues/feature_request.yml +75 -75
  23. package/loops/templates/opencode/opencode.ci.json +49 -47
  24. package/loops/templates/opencode/opencode.ci.json.md +46 -41
  25. package/loops/templates/release/github-release.yml +30 -30
  26. package/loops/workflows/agent-apply-review.md +465 -373
  27. package/loops/workflows/agent-audit.md +213 -197
  28. package/loops/workflows/agent-implement.md +538 -374
  29. package/loops/workflows/agent-merge-gate.md +730 -485
  30. package/loops/workflows/agent-refine.md +609 -379
  31. package/loops/workflows/agent-release.md +258 -0
  32. package/loops/workflows/agent-triage.md +447 -0
  33. package/loops/workflows/authorize-bot-work.yml +85 -81
  34. package/loops/workflows/shared/opencode-ci.md +206 -197
  35. package/loops/workflows/shared/platform-defaults.md +19 -16
  36. package/loops/workflows/work-router.yml +862 -551
  37. package/package.json +42 -42
  38. package/dist/catalog-installation.d.ts +0 -30
  39. package/dist/catalog-installation.js +0 -352
  40. package/dist/catalog-installation.test.d.ts +0 -1
  41. package/dist/catalog-installation.test.js +0 -448
  42. package/dist/catalog-listing.d.ts +0 -13
  43. package/dist/catalog-listing.js +0 -70
  44. package/dist/catalog-listing.test.d.ts +0 -1
  45. package/dist/catalog-listing.test.js +0 -150
  46. package/dist/index.d.ts +0 -2
  47. package/dist/index.js +0 -218
  48. package/dist/index.test.d.ts +0 -1
  49. package/dist/index.test.js +0 -273
  50. package/dist/repository-inspection.d.ts +0 -23
  51. package/dist/repository-inspection.js +0 -113
  52. package/dist/repository-inspection.test.d.ts +0 -1
  53. package/dist/repository-inspection.test.js +0 -77
  54. package/dist/repository-state.d.ts +0 -18
  55. package/dist/repository-state.js +0 -77
  56. package/dist/repository-state.test.d.ts +0 -1
  57. package/dist/repository-state.test.js +0 -96
  58. package/dist/route-processing.d.ts +0 -6
  59. package/dist/route-processing.js +0 -150
  60. package/dist/route-processing.test.d.ts +0 -1
  61. package/dist/route-processing.test.js +0 -342
  62. package/dist/stack-defaults.d.ts +0 -11
  63. package/dist/stack-defaults.js +0 -104
  64. package/dist/stack-defaults.test.d.ts +0 -1
  65. package/dist/stack-defaults.test.js +0 -266
  66. package/dist/tui.d.ts +0 -25
  67. package/dist/tui.js +0 -287
  68. package/dist/tui.test.d.ts +0 -1
  69. package/dist/tui.test.js +0 -246
  70. package/dist/workflow-catalog.d.ts +0 -25
  71. package/dist/workflow-catalog.js +0 -57
  72. package/dist/workflow-catalog.test.d.ts +0 -1
  73. package/dist/workflow-catalog.test.js +0 -29
  74. package/loops/workflows/agent-direct.md +0 -363
  75. package/loops/workflows/agent-propose.md +0 -342
@@ -1,75 +1,75 @@
1
- name: Feature request
2
- description: Propose a small improvement or new capability
3
- labels: ["enhancement"]
4
- body:
5
- - type: markdown
6
- attributes:
7
- value: |
8
- This template is for small, well-scoped improvements — a focused
9
- enhancement, a missing convenience, a quality-of-life fix.
10
-
11
- For large features, architecture changes, or cross-cutting work,
12
- open a planning issue or an ADR instead.
13
-
14
- Do **not** include real secrets or production data — use placeholders.
15
- - type: dropdown
16
- id: scope
17
- attributes:
18
- label: Scope
19
- description: How big is this change? If it doesn't fit Small or Medium, use a planning issue instead.
20
- options:
21
- - Small — a single file or component, no refactoring
22
- - Medium — touches a few files or a feature area, may need minor refactoring
23
- validations:
24
- required: true
25
- - type: textarea
26
- id: current-behavior
27
- attributes:
28
- label: Current behavior
29
- description: How does it work today? Describe the existing behavior or limitation.
30
- validations:
31
- required: true
32
- - type: textarea
33
- id: problem
34
- attributes:
35
- label: Problem / motivation
36
- description: What user or business need does this address? Why is the current behavior a problem?
37
- validations:
38
- required: true
39
- - type: textarea
40
- id: proposal
41
- attributes:
42
- label: Proposed solution
43
- description: What would you like to happen?
44
- validations:
45
- required: true
46
- - type: textarea
47
- id: alternatives
48
- attributes:
49
- label: Alternatives considered
50
- validations:
51
- required: false
52
- - type: textarea
53
- id: acceptance
54
- attributes:
55
- label: Acceptance criteria
56
- description: A checklist a reviewer can verify when this is done (include the tests).
57
- placeholder: |
58
- - [ ] ...
59
- - [ ] Tests
60
- validations:
61
- required: false
62
- - type: textarea
63
- id: open-questions
64
- attributes:
65
- label: Open questions
66
- description: Decisions a maintainer must make before this can be planned. Leave blank if none.
67
- validations:
68
- required: false
69
- - type: textarea
70
- id: related
71
- attributes:
72
- label: Related links
73
- description: Links to related issues, PRs, discussions, or docs. Leave blank if none.
74
- validations:
75
- required: false
1
+ name: Feature request
2
+ description: Propose a small improvement or new capability
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ This template is for small, well-scoped improvements — a focused
9
+ enhancement, a missing convenience, a quality-of-life fix.
10
+
11
+ For large features, architecture changes, or cross-cutting work,
12
+ open a planning issue or an ADR instead.
13
+
14
+ Do **not** include real secrets or production data — use placeholders.
15
+ - type: dropdown
16
+ id: scope
17
+ attributes:
18
+ label: Scope
19
+ description: How big is this change? If it doesn't fit Small or Medium, use a planning issue instead.
20
+ options:
21
+ - Small — a single file or component, no refactoring
22
+ - Medium — touches a few files or a feature area, may need minor refactoring
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: current-behavior
27
+ attributes:
28
+ label: Current behavior
29
+ description: How does it work today? Describe the existing behavior or limitation.
30
+ validations:
31
+ required: true
32
+ - type: textarea
33
+ id: problem
34
+ attributes:
35
+ label: Problem / motivation
36
+ description: What user or business need does this address? Why is the current behavior a problem?
37
+ validations:
38
+ required: true
39
+ - type: textarea
40
+ id: proposal
41
+ attributes:
42
+ label: Proposed solution
43
+ description: What would you like to happen?
44
+ validations:
45
+ required: true
46
+ - type: textarea
47
+ id: alternatives
48
+ attributes:
49
+ label: Alternatives considered
50
+ validations:
51
+ required: false
52
+ - type: textarea
53
+ id: acceptance
54
+ attributes:
55
+ label: Acceptance criteria
56
+ description: A checklist a reviewer can verify when this is done (include the tests).
57
+ placeholder: |
58
+ - [ ] ...
59
+ - [ ] Tests
60
+ validations:
61
+ required: false
62
+ - type: textarea
63
+ id: open-questions
64
+ attributes:
65
+ label: Open questions
66
+ description: Decisions a maintainer must make before this can be planned. Leave blank if none.
67
+ validations:
68
+ required: false
69
+ - type: textarea
70
+ id: related
71
+ attributes:
72
+ label: Related links
73
+ description: Links to related issues, PRs, discussions, or docs. Leave blank if none.
74
+ validations:
75
+ required: false
@@ -1,47 +1,49 @@
1
- {
2
- "$schema": "https://opencode.ai/config.json",
3
- "model": "plainconcepts/glm-5-2",
4
- "plugin": [],
5
- "default_agent": "ci-workflow-agent",
6
- "agent": {
7
- "ci-workflow-agent": {
8
- "description": "Executes GitHub Agentic Workflow tasks in CI.",
9
- "mode": "primary",
10
- "prompt": "You execute the GitHub Agentic Workflow task in the user prompt. Read AGENTS.md before any non-trivial change. Load only skills the workflow task explicitly names via skill(); when a workflow says load @skill-name, call skill(\"skill-name\"), the @ prefix is just a hint to use the skill tool. Execute only the requested task and required commands. Do not probe or inspect unrelated commands. The GitHub CLI is intentionally unauthenticated: never use `gh` for GitHub reads or writes. Read supplied workflow files first, then use the GitHub MCP tools only when fresh GitHub data is required. Use direct `safeoutputs` commands for GitHub writes. For syntax-only validation of a conventional GitHub Actions YAML file, use Ruby's standard YAML library; do not probe, install, or fall back through PyYAML, js-yaml, actionlint, or Docker. A task is complete only after every required Safe Outputs command succeeds. After the final required Safe Outputs command, stop immediately without further tools, prose, or model turns. Use `mcpscripts` only when the runtime explicitly lists it as available.\n\nOUTPUT DISCIPLINE: Do not narrate. Do not explain what you are about to do before doing it. Do not write prose between tool calls. Call tools silently. The only prose you produce is the final result or a brief error explanation when something fails. Never output sentences like 'Let me check...', 'Now I will...', 'I have enough context...', or 'Next I need to...'. If you are about to call a tool, just call it. If you must think, use the todowrite tool, not prose."
11
- }
12
- },
13
- "permission": {
14
- "read": "allow",
15
- "external_directory": {
16
- "/tmp/**": "allow",
17
- "/home/runner/work/_temp/gh-aw/**": "allow"
18
- }
19
- },
20
- "lsp": {
21
- "csharp": {
22
- "disabled": true
23
- },
24
- "fsharp": {
25
- "disabled": true
26
- },
27
- "razor": {
28
- "disabled": true
29
- }
30
- },
31
- "provider": {
32
- "plainconcepts": {
33
- "api": "http://172.30.0.30:10000",
34
- "options": {
35
- "apiKey": "awf-openai-proxy"
36
- },
37
- "models": {
38
- "glm-5-2": {
39
- "name": "GLM 5.2"
40
- },
41
- "glm-5-1": {
42
- "name": "GLM 5.1"
43
- }
44
- }
45
- }
46
- }
47
- }
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "model": "forge/glm-5-3",
4
+ "plugin": [],
5
+ "default_agent": "ci-workflow-agent",
6
+ "agent": {
7
+ "ci-workflow-agent": {
8
+ "description": "Executes GitHub Agentic Workflow tasks in CI.",
9
+ "mode": "primary",
10
+ "prompt": "You execute the GitHub Agentic Workflow task in the user prompt. Read AGENTS.md before any non-trivial change. Load only skills the workflow task explicitly names via skill(); when a workflow says load @skill-name, call skill(\"skill-name\"), the @ prefix is just a hint to use the skill tool. Execute only the requested task and required commands. Do not probe or inspect unrelated commands. The GitHub CLI is intentionally unauthenticated: never use `gh` for GitHub reads or writes. Read supplied workflow files first, then use the GitHub MCP tools only when fresh GitHub data is required. Use direct `safeoutputs` commands for GitHub writes. For syntax-only validation of a conventional GitHub Actions YAML file, use Ruby's standard YAML library; do not probe, install, or fall back through PyYAML, js-yaml, actionlint, or Docker. A task is complete only after every required Safe Outputs command succeeds. After the final required Safe Outputs command, stop immediately without further tools, prose, or model turns. Use `mcpscripts` only when the runtime explicitly lists it as available.\n\nOUTPUT DISCIPLINE: Do not narrate. Do not explain what you are about to do before doing it. Do not write prose between tool calls. Call tools silently. The only prose you produce is the final result or a brief error explanation when something fails. Never output sentences like 'Let me check...', 'Now I will...', 'I have enough context...', or 'Next I need to...'. If you are about to call a tool, just call it. If you must think, use the todowrite tool, not prose.\n\nMEMORY: agentmemory is the shared long-term store. Start non-trivial tasks by calling its recall/search tool with the key concepts of the task (component names, error text) and reuse what it returns instead of rediscovering it. Before finishing, store 1-3 concise memories of durable non-obvious learnings: architecture constraints, root causes and their fixes, decisions and their why. Skip trivia the repo already documents. Never store secrets or tokens."
11
+ }
12
+ },
13
+ "permission": {
14
+ "read": "allow",
15
+ "external_directory": {
16
+ "/tmp/**": "allow",
17
+ "/home/runner/work/_temp/gh-aw/**": "allow"
18
+ }
19
+ },
20
+ "lsp": {
21
+ "csharp": {
22
+ "disabled": true
23
+ },
24
+ "fsharp": {
25
+ "disabled": true
26
+ },
27
+ "razor": {
28
+ "disabled": true
29
+ }
30
+ },
31
+ "provider": {
32
+ "forge": {
33
+ "api": "{env:FORGE_API_URL}",
34
+ "options": {
35
+ "apiKey": "{env:FORGE_API_KEY}"
36
+ },
37
+ "models": {
38
+ "glm-5-3": {
39
+ "name": "GLM 5.3",
40
+ "attachment": true
41
+ },
42
+ "glm-5-2": {
43
+ "name": "GLM 5.2",
44
+ "attachment": true
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
@@ -1,41 +1,46 @@
1
- # Ownership: opencode.ci.json
2
-
3
- Managed by @plainconceptsplatform/workflows. Source:
4
- `loops/templates/opencode/opencode.ci.json`. Update with
5
- `workflows update --force --template opencode.ci.json`; consumer edits may be
6
- overwritten.
7
-
8
- JSON (RFC 8259) does not permit comments, so the ownership header is documented
9
- here instead of inline in `opencode.ci.json`.
10
-
11
- ## Template contents
12
-
13
- This template provides a standalone OpenCode CI configuration for consumer
14
- repositories running agentic workflows in GitHub Actions. It is copied to the
15
- repository root as `opencode.ci.json`.
16
-
17
- ### Provider
18
-
19
- - **plainconcepts** at `http://172.30.0.30:10000` with apiKey `awf-openai-proxy`.
20
- - Two models registered: `glm-5-2` ("GLM 5.2") and `glm-5-1` ("GLM 5.1").
21
- - Default model: `plainconcepts/glm-5-2`.
22
-
23
- ### Agent
24
-
25
- - **ci-workflow-agent** in `primary` mode with the output discipline directive:
26
- no narration, no prose between tool calls, stop immediately after the final
27
- Safe Outputs command.
28
-
29
- ### LSP
30
-
31
- - `csharp`, `fsharp`, and `razor` LSP servers are disabled. Consumers not
32
- working with .NET can remove the `lsp` block entirely.
33
-
34
- ### Consumer edits
35
-
36
- After copying, edit the file directly for repository-specific needs:
37
-
38
- - Change the model or add providers.
39
- - Adjust agent prompt rules or permissions.
40
- - Remove the `lsp` block if LSP is not needed or add other language servers.
41
- - Add MCP servers or plugins as required.
1
+ # Ownership: opencode.ci.json
2
+
3
+ Managed by @plainconceptsplatform/workflows. Source:
4
+ `loops/templates/opencode/opencode.ci.json`. Update with
5
+ `workflows update --force --template opencode.ci.json`; consumer edits may be
6
+ overwritten.
7
+
8
+ JSON (RFC 8259) does not permit comments, so the ownership header is documented
9
+ here instead of inline in `opencode.ci.json`.
10
+
11
+ ## Template contents
12
+
13
+ This template provides a standalone OpenCode CI configuration for consumer
14
+ repositories running agentic workflows in GitHub Actions. It is copied to the
15
+ repository root as `opencode.ci.json`.
16
+
17
+ ### Provider
18
+
19
+ - The `forge` provider is OpenAI-compatible and reads its endpoint from
20
+ `FORGE_API_URL` and its key from `FORGE_API_KEY` at runtime.
21
+ - Each consumer configures its own router endpoint, credential, model IDs, and
22
+ capabilities. The workflow package does not assume a particular gateway
23
+ host, authentication system, or model vendor.
24
+ - Model entries are fallback metadata. Consumers should set `attachment: true`
25
+ only for models whose router supports image input.
26
+ - Default model: `forge/glm-5-3`.
27
+
28
+ ### Agent
29
+
30
+ - **ci-workflow-agent** in `primary` mode with the output discipline directive:
31
+ no narration, no prose between tool calls, stop immediately after the final
32
+ Safe Outputs command.
33
+
34
+ ### LSP
35
+
36
+ - `csharp`, `fsharp`, and `razor` LSP servers are disabled. Consumers not
37
+ working with .NET can remove the `lsp` block entirely.
38
+
39
+ ### Consumer edits
40
+
41
+ After copying, edit the file directly for repository-specific needs:
42
+
43
+ - Change the model or add providers.
44
+ - Adjust agent prompt rules or permissions.
45
+ - Remove the `lsp` block if LSP is not needed or add other language servers.
46
+ - Add MCP servers or plugins as required.
@@ -1,30 +1,30 @@
1
- # Managed by @plainconceptsplatform/workflows. Source: loops/templates/release/github-release.yml. Update with `workflows update --force`; consumer edits may be overwritten.
2
- name: Publish GitHub release
3
-
4
- on:
5
- push:
6
- tags:
7
- - "v*"
8
-
9
- permissions:
10
- contents: write
11
-
12
- jobs:
13
- publish:
14
- name: Publish release
15
- runs-on: RunnerLandingZone
16
- timeout-minutes: 10
17
- steps:
18
- - name: Create or update GitHub release
19
- env:
20
- GH_TOKEN: ${{ github.token }}
21
- TAG: ${{ github.ref_name }}
22
- shell: bash
23
- run: |
24
- set -euo pipefail
25
-
26
- if gh release view "$TAG" >/dev/null 2>&1; then
27
- gh release edit "$TAG" --title "$TAG" --generate-notes
28
- else
29
- gh release create "$TAG" --title "$TAG" --generate-notes
30
- fi
1
+ # Managed by @plainconceptsplatform/workflows. Source: loops/templates/release/github-release.yml. Update with `workflows update --force`; consumer edits may be overwritten.
2
+ name: Publish GitHub release
3
+
4
+ on:
5
+ push:
6
+ tags:
7
+ - "v*"
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ publish:
14
+ name: Publish release
15
+ runs-on: [self-hosted, linux, agents]
16
+ timeout-minutes: 10
17
+ steps:
18
+ - name: Create or update GitHub release
19
+ env:
20
+ GH_TOKEN: ${{ github.token }}
21
+ TAG: ${{ github.ref_name }}
22
+ shell: bash
23
+ run: |
24
+ set -euo pipefail
25
+
26
+ if gh release view "$TAG" >/dev/null 2>&1; then
27
+ gh release edit "$TAG" --title "$TAG" --generate-notes
28
+ else
29
+ gh release create "$TAG" --title "$TAG" --generate-notes
30
+ fi