Skip to content

Commit adcd64a

Browse files
authored
chore: add agent workflow seam (#778)
* chore: add agent workflow seam * Fix agent workflow command coverage * Simplify agent workflow build wrapper * Manage renderer for agent workflow tests * Prepare renderer before agent workflow tests * Align renderer URL with test port
1 parent 7a9dada commit adcd64a

9 files changed

Lines changed: 115 additions & 0 deletions

File tree

.agents/agent-workflow.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
base_branch: master
3+
follow_up_prefix: 'Follow-up:'
4+
review_gate: n/a
5+
approval_exempt: n/a
6+
coordination_backend: n/a
7+
changelog: n/a
8+
benchmark_labels: n/a
9+
merge_ledger: n/a
10+
ci_parity_environment: n/a
11+
hosted_ci_trigger: n/a
12+
ci_change_detector: n/a

.agents/bin/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Agent Workflow Scripts
2+
3+
<!-- Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init. -->
4+
5+
Standard entry points that portable agent-workflow skills call. A script that
6+
is absent means that capability is n/a in this repository.
7+
8+
| Script | Purpose | This repo runs |
9+
| --- | --- | --- |
10+
| `setup` | Install dependencies | `bin/conductor-exec bin/setup --skip-server` |
11+
| `validate` | Pre-push gate | `bin/conductor-exec bin/rubocop` |
12+
| `test` | Run tests | `bin/conductor-exec bin/ci` |
13+
| `lint` | Lint / format | `bin/conductor-exec yarn lint:eslint` |
14+
| `build` | Build / type-check | generate React on Rails packs, build ReScript, then `bin/conductor-exec yarn build:test` |
15+
| `docs` | Docs checks | n/a |
16+
| `ci-detect` | CI change detector | n/a |
17+
18+
Non-command policy lives in [`../agent-workflow.yml`](../agent-workflow.yml).

.agents/bin/build

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env bash
2+
# Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init.
3+
set -euo pipefail
4+
cd "$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
5+
6+
exec bin/conductor-exec yarn build:test "$@"

.agents/bin/lint

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
# Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init.
3+
set -euo pipefail
4+
cd "$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
5+
exec bin/conductor-exec yarn lint:eslint "$@"

.agents/bin/setup

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
# Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init.
3+
set -euo pipefail
4+
cd "$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
5+
exec bin/conductor-exec bin/setup --skip-server "$@"

.agents/bin/test

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
# Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init.
3+
set -euo pipefail
4+
cd "$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
5+
6+
renderer_port="${RENDERER_PORT:-3800}"
7+
if [[ -n "${RENDERER_PORT:-}" && -z "${RENDERER_URL:-}" ]]; then
8+
export RENDERER_URL="http://localhost:$renderer_port"
9+
fi
10+
renderer_started=false
11+
renderer_pid=''
12+
13+
cleanup_renderer() {
14+
local status=$?
15+
16+
if [[ "$renderer_started" == true ]] && kill -0 "$renderer_pid" 2>/dev/null; then
17+
kill "$renderer_pid" 2>/dev/null || true
18+
wait "$renderer_pid" 2>/dev/null || true
19+
fi
20+
21+
exit "$status"
22+
}
23+
24+
trap cleanup_renderer EXIT
25+
26+
bin/conductor-exec bin/setup --skip-server
27+
28+
if nc -z localhost "$renderer_port" 2>/dev/null; then
29+
echo "Reusing existing Node renderer on port $renderer_port."
30+
else
31+
bin/conductor-exec node renderer/node-renderer.js &
32+
renderer_pid=$!
33+
renderer_started=true
34+
35+
echo "Waiting for Node renderer (PID $renderer_pid) on port $renderer_port..."
36+
for _ in $(seq 1 30); do
37+
if ! kill -0 "$renderer_pid" 2>/dev/null; then
38+
echo "Node renderer exited unexpectedly (see output above)." >&2
39+
exit 1
40+
fi
41+
if nc -z localhost "$renderer_port" 2>/dev/null; then
42+
break
43+
fi
44+
sleep 1
45+
done
46+
47+
if ! nc -z localhost "$renderer_port" 2>/dev/null; then
48+
echo "Node renderer failed to start on port $renderer_port within 30 seconds (see output above)." >&2
49+
exit 1
50+
fi
51+
fi
52+
53+
bin/conductor-exec bin/ci

.agents/bin/validate

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
# Generated by shakacode/agent-workflows agent-workflow-seam-doctor --init.
3+
set -euo pipefail
4+
cd "$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
5+
exec bin/conductor-exec bin/rubocop "$@"

.agents/trusted-github-actors.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
trusted_users: []
3+
trusted_bots: []
4+
trusted_metadata_bots: []
5+
trusted_teams: []

AGENTS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,9 @@ bin/conductor-exec git commit -m "message"
5858

5959
The wrapper uses `mise exec` when mise is available and falls back to direct execution
6060
for non-mise users.
61+
62+
## Agent Workflow Configuration
63+
64+
Portable shared skills resolve this repo's commands and policy through:
65+
- **Commands** — run `.agents/bin/<name>` (`setup`, `validate`, `test`, ...); see `.agents/bin/README.md`. A missing script means that capability is n/a here.
66+
- **Policy / config**`.agents/agent-workflow.yml`.

0 commit comments

Comments
 (0)