-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathWORKFLOW.md.example
More file actions
104 lines (92 loc) · 3.21 KB
/
Copy pathWORKFLOW.md.example
File metadata and controls
104 lines (92 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
---
tracker:
kind: linear
api_key: $SYMHARIX_TRACKER_API_KEY
endpoint: https://api.linear.app/graphql
active_states:
- Todo
- In Progress
- In Review
- Cancelled
terminal_states:
- Done
- Canceled
- Duplicate
issue_tracking:
enabled: true
custom_fields:
dev_attempts: dev_attempts
review_round: review_round
complexity: complexity
last_review_decision: last_review_decision
dev_policy:
complexity_ai_judge: true
require_test_for_large: true
max_dev_attempts: 3
review_policy:
auto_merge_on_approve: true
notify_linear_on_review: true
allow_test_requests: true
verification:
lifecycle:
timeout_ms: 1800000
poll_interval_ms: 5000
projects:
# Keys must match Linear project slugs and repositories.routing keys.
sample-project:
title: "Web app lifecycle smoke test"
description: "Make a tiny repository-safe change in the web app, open a PR, complete review, merge, and leave the repository clean."
sample-api:
title: "API lifecycle smoke test"
description: "Make a tiny repository-safe change in the API service, open a PR, complete review, merge, and leave the repository clean."
polling:
interval_ms: 30000
hooks:
timeout_ms: 300000
workspace:
root: ./workspaces
repositories:
routing:
# One route maps one Linear project_slug to one GitHub repository.
# `SYMHARIX_TRACKER_PROJECT_SLUG` is the default route for new Telegram/Runtime-created work.
# Telegram can switch/read repos by project slug, full owner/repo, or repo name.
# SymHarix fails closed when a project is not routed.
sample-project:
github_owner: acme
github_repo: web-app
# Optional. Relative paths resolve from the SymHarix repository root.
local_path: ./repos/web-app
sample-api:
github_owner: acme
github_repo: api-service
# Omit local_path to let SymHarix use its shared GitHub source cache.
sample-docs:
github_owner: acme
github_repo: docs-site
agent_runner:
# Usually leave this unchanged. The adapter invokes the pinned open-source OpenCode runtime.
command: node ./scripts/opencode-adapter.cjs
agent:
max_concurrent_agents: 3
max_retry_backoff_ms: 300000
max_turns: 3
server:
# `bun run start` also defaults to 3000. Override with `PORT=4000 bun run start`.
port: 3000
---
# SymHarix Agent
You are an AI coding assistant.
**Task**: {{issue.identifier}} - {{issue.title}}
**Details**: {{issue.description}}
**State**: {{issue.state}}
**Instructions**:
- If Todo/In Progress: Implement the feature with progress tracking
- If In Review: Review the PR and provide structured feedback
When done, stop. The state machine handles git/PR/Linear updates.
Repository routing is explicit:
- `repositories.routing` keys must match Linear `project_slug`
- each route must declare `github_owner` and `github_repo`
- `local_path` is optional and, when relative, resolves from the repository root
- add one route per repository/project you want Telegram and Runtime to operate on
- Telegram can switch/read repositories by project slug, full `owner/repo`, or repo name
- if an issue's `project_slug` does not match a configured route, SymHarix will fail closed and skip dispatch