Add declarative custom-engine frontmatter and migrate Crush/OpenCode to shared behavior definitions#44465
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
@copilot remove crush/opencode from Go code and only keep them as shared agentic workflow files. |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
@copilot create a new instruction file to help with configuring new agentic engines |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
@copilot merge main and recompile |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
…c-engine-syntax Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
All four threads were addressed in prior commits — the code fixes are confirmed still in place:
Branch is up to date with main, working tree clean, lock files in sync. These threads remain visually unresolved on GitHub because the GraphQL mutation to dismiss them returns 403 from the agent context — a maintainer needs to dismiss them manually.
|
|
/smoke-crush |
|
|
|
/smoke-opencode |
|
|
|
@copilot investigate https://github.com/github/gh-aw/actions/runs/29102495368/job/86394843308#step:28:1 and fix OpenCode support |
…uild.permission) Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
…ues for v1.2.14 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Fixed in commit Root cause: OpenCode v1.2.14's config schema rejects a top-level { "permissions": { "bash": true, "edit": true, ... } }Fix: Updated to the correct nested format that v1.2.14 accepts: {
"agent": {
"build": {
"permission": {
"bash": "allow",
"edit": "allow",
"read": "allow",
"glob": "allow",
"grep": "allow",
"webfetch": "allow",
"websearch": "allow",
"external_directory": "allow"
}
}
}
}
|
|
/smoke-opencode |
|
🚀 Smoke OpenCode MISSION COMPLETE! OpenCode delivered. 🔥 |
|
@copilot investigate why OpenCode did not inference and fix it https://github.com/github/gh-aw/actions/runs/29104424434/job/86401490785 |
OpenCode CLI v1.2.14 contacts opencode.ai (telemetry/version checks) and models.dev (model capability discovery) before starting inference. Both domains were blocked by the AWF firewall, preventing OpenCode from performing any LLM calls. Add both domains to OpenCodeBaseDefaultDomains and OpenCodeDefaultDomains in domains.go, then recompile all workflow lock files so the new entries appear in both GH_AW_ALLOWED_DOMAINS and the AWF firewall allowDomains JSON blob in smoke-opencode.lock.yml (and any other OpenCode-engine workflows). Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Fixed in the latest commit. The firewall logs from run Added |
|
/smoke-opencode |
|
🚀 Smoke OpenCode MISSION COMPLETE! OpenCode delivered. 🔥 |
|
@copilot please run the
|
|
@copilot investigate why OpenCode failed |
This introduces a richer engine-definition frontmatter shape for shared/custom agentic engines and uses it to move Crush and OpenCode off bespoke Go implementations onto a common declarative runtime path. The new syntax is expressive enough for CLI-style engines that need install, config, execution, MCP, capability, and auth wiring, including Auggie-like cases.
New engine-definition surface
engine.experimental,engine.auth, andengine.behaviorsto the named engine definition form.behaviorscaptures the runtime contract instead of hard-coding it in Go:authprovides explicit secret bindings for engines that need engine-specific credentials forwarded into the runtime.Shared behavior-defined runtime
BehaviorDefinedEnginethat materializes aCodingAgentEnginefrom frontmatter.Crush/OpenCode refactor
pkg/workflow/data/engines/crush.mdpkg/workflow/data/engines/opencode.mdSchema and docs
Coverage
Example of the new shared engine definition shape: