Skip to content

Commit 2b72c4a

Browse files
authored
Merge pull request #2 from sepo-agent/agent/install-agent-infra
Install Sepo agent infrastructure
2 parents 401b00c + bca3bed commit 2b72c4a

292 files changed

Lines changed: 51333 additions & 1 deletion

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agent/CHANGELOG.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Changelog
2+
3+
## 0.3.0 - 2026-05-24
4+
5+
### Added
6+
7+
- First-class `/install` support with issue-backed install requests, target fork/branch helpers, source issue links, and guarded publish behavior.
8+
- Repository goal issue templates and orchestrator guidance for goal-backed parent work.
9+
- Read-only secondary GitHub token plumbing for explicit external repository inspection.
10+
- Direct `ANTHROPIC_API_KEY` support for Claude-backed runs, configurable agent model policy, and display-model controls.
11+
- Global `AGENT_ENABLED=false` pause guards across packaged Sepo agent workflows.
12+
13+
### Changed
14+
15+
- Sepo documentation now uses reader-oriented section roots, `_meta.json` navigation metadata, and the `setup/`, `usage/`, `customization/`, and `technical-details/` structure.
16+
- Provider resolution now uses the JavaScript resolver action and clearer precedence across route, model-policy, default-provider, and auto-detected settings.
17+
- Full self-governance approval flows can rely on trusted current-head status evidence when self-approval and self-merge are enabled together.
18+
- Onboarding and install guidance now link directly to target repository workflows, secrets, App setup, and setup guides.
19+
20+
### Fixed
21+
22+
- Closed or merged PRs inferred from `/implement` context are kept as context instead of becoming invalid stacked bases.
23+
- Self-approval PR inspection works with read-scoped GitHub tokens while preserving reviewed-head provenance checks.
24+
- Generated docs index links and docs validation coverage now match the reorganized docs tree.
25+
- Provider/model handling now preserves Anthropic Claude credential support and route provider precedence.
26+
27+
## 0.2.0 - 2026-05-19
28+
29+
### Added
30+
31+
- Opt-in self-approval and self-merge workflows with reviewed-head provenance, PR-author blocks, status comments, and orchestrator handoffs.
32+
- Repository skill setup hooks through `setup.sh` and a shared skill setup action.
33+
- Upload-only track-only session bundles for debugging one-shot runs without treating them as resumable continuity state.
34+
35+
### Changed
36+
37+
- Dispatch and orchestration now recognize orchestrate starts from triage, derive implement tracking metadata from issue context, and carry stacked `base_pr` metadata through router dispatch.
38+
- Onboarding and installation docs now emphasize hosted App prerequisites, reused setup issue status, and simpler first-run guidance.
39+
- Daily summary scheduling and orchestration defaults are more conservative; the packaged daily summary cron remains disabled by default.
40+
- GitHub memory artifacts are namespaced by owner and repo, with legacy artifact cleanup kept explicit.
41+
- Sepo release notes now live in `.agent/CHANGELOG.md` alongside the canonical runtime version in `.agent/package.json`.
42+
43+
### Fixed
44+
45+
- Normalized weak GitHub mention associations across triggers and added regression coverage for weak association handling.
46+
- Hardened auto-merge eligibility, self-approval status upserts, and review handoff behavior for current reviewed heads.
47+
48+
## 0.1.0 - 2026-05-11
49+
50+
### Added
51+
52+
Initial public pre-release of Sepo, a GitHub-native agent harness for orchestrating long-running coding tasks with repository memory through GitHub Actions. It features the following:
53+
- Git-native memory and rubrics layout: code-related memory and induced user/team rubrics live alongside the repository on the `agent/memory` and `agent/rubrics` branches.
54+
- GitHub Actions workflows that can propose code changes, run verification, and execute computational experiments without requiring a separate always-on server.
55+
- Agent orchestration for long-horizon tasks — including task breakdown, review/fix loops, and iterative self-improvement workflows.
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# Template for generated scheduled agent-action workflows.
2+
# Copy this file to .github/workflows/agent-action-<short-slug>.yml and
3+
# replace the placeholder name, cron, expiration, lane, request text, and
4+
# optional issue-report target.
5+
6+
name: Agent Action / Example
7+
8+
on:
9+
schedule:
10+
- cron: "17 * * * *"
11+
workflow_dispatch:
12+
13+
permissions:
14+
actions: read
15+
contents: read
16+
# If enabling REPORT_ISSUE_NUMBER below, add issue write permission.
17+
id-token: write
18+
19+
concurrency:
20+
group: agent-action-example-${{ github.repository }}
21+
cancel-in-progress: false
22+
23+
env:
24+
ACTION_EXPIRES_AT: "YYYY-MM-DD"
25+
REPORT_ISSUE_NUMBER: ""
26+
27+
jobs:
28+
run:
29+
if: vars.AGENT_ENABLED != 'false'
30+
runs-on: ${{ fromJson(vars.AGENT_RUNS_ON || '["ubuntu-latest"]') }}
31+
steps:
32+
- uses: actions/checkout@v4
33+
with:
34+
fetch-depth: 1
35+
token: ${{ github.token }}
36+
37+
- name: Check expiration
38+
id: expiration
39+
uses: ./.github/actions/check-agent-action-expiration
40+
with:
41+
expires_at: ${{ env.ACTION_EXPIRES_AT }}
42+
43+
- name: Resolve GitHub auth
44+
if: steps.expiration.outputs.expired != 'true'
45+
id: auth
46+
uses: ./.github/actions/resolve-github-auth
47+
with:
48+
app_id: ${{ secrets.AGENT_APP_ID }}
49+
app_private_key: ${{ secrets.AGENT_APP_PRIVATE_KEY }}
50+
pat: ${{ secrets.AGENT_PAT }}
51+
fallback_token: ${{ github.token }}
52+
53+
- name: Resolve provider
54+
if: steps.expiration.outputs.expired != 'true'
55+
id: provider
56+
uses: ./.github/actions/resolve-agent-provider
57+
with:
58+
route: answer
59+
default_provider: ${{ vars.AGENT_DEFAULT_PROVIDER || 'auto' }}
60+
openai_api_key: ${{ secrets.OPENAI_API_KEY }}
61+
claude_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
62+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
63+
model_policy: ${{ vars.AGENT_MODEL_POLICY || '' }}
64+
65+
- name: Setup agent runtime
66+
if: steps.expiration.outputs.expired != 'true'
67+
uses: ./.github/actions/setup-agent-runtime
68+
with:
69+
install_codex: ${{ steps.provider.outputs.install_codex }}
70+
install_claude: ${{ steps.provider.outputs.install_claude }}
71+
72+
- name: Resolve task timeout
73+
if: steps.expiration.outputs.expired != 'true'
74+
id: task_timeout
75+
env:
76+
AGENT_TASK_TIMEOUT_POLICY: ${{ vars.AGENT_TASK_TIMEOUT_POLICY || '' }}
77+
ROUTE: answer
78+
run: node .agent/dist/cli/resolve-task-timeout.js
79+
80+
- name: Run scheduled agent task
81+
if: steps.expiration.outputs.expired != 'true'
82+
id: agent
83+
timeout-minutes: ${{ fromJson(steps.task_timeout.outputs.minutes || '30') }}
84+
uses: ./.github/actions/run-agent-task
85+
with:
86+
agent: ${{ steps.provider.outputs.provider }}
87+
github_token: ${{ steps.auth.outputs.token }}
88+
secondary_github_token: ${{ secrets.AGENT_SECONDARY_GITHUB_TOKEN }}
89+
openai_api_key: ${{ secrets.OPENAI_API_KEY }}
90+
claude_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
91+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
92+
model: ${{ steps.provider.outputs.model }}
93+
display_model: ${{ vars.AGENT_DISPLAY_MODEL || '' }}
94+
reasoning_effort: ${{ steps.provider.outputs.reasoning_effort || 'xhigh' }}
95+
permission_mode: approve-all
96+
prompt: answer
97+
route: answer
98+
lane: agent-action-example
99+
memory_mode_override: read-only
100+
session_policy: track-only
101+
request_text: |
102+
Describe the bounded recurring task here.
103+
requested_by: ${{ github.actor }}
104+
source_kind: workflow_dispatch
105+
target_kind: repository
106+
target_number: "0"
107+
target_url: ${{ github.server_url }}/${{ github.repository }}
108+
workflow: agent-action-example.yml
109+
110+
# Optional: set REPORT_ISSUE_NUMBER and add issue write permission only when the workflow should report to an issue.
111+
- name: Post report to issue
112+
if: >-
113+
steps.expiration.outputs.expired != 'true' &&
114+
steps.agent.outcome == 'success' &&
115+
env.REPORT_ISSUE_NUMBER != ''
116+
env:
117+
BODY_FILE: ${{ steps.agent.outputs.response_file }}
118+
MODEL_DISPLAY: ${{ steps.agent.outputs.model_display }}
119+
GH_TOKEN: ${{ steps.auth.outputs.token }}
120+
GITHUB_REPOSITORY: ${{ github.repository }}
121+
RESPONSE_KIND: issue_comment
122+
TARGET_NUMBER: ${{ env.REPORT_ISSUE_NUMBER }}
123+
run: node .agent/dist/cli/post-response.js

.agent/docs/_meta.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"label": "self-evolving/repo",
3+
"pages": [
4+
"overview",
5+
"setup",
6+
"usage",
7+
"architecture",
8+
"technical-details",
9+
"customization"
10+
]
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"label": "Architecture",
3+
"pages": [
4+
"overall-design",
5+
"goals",
6+
"memory",
7+
"rubrics",
8+
"request-lifecycle",
9+
"agent-orchestrator"
10+
]
11+
}

0 commit comments

Comments
 (0)