-
Notifications
You must be signed in to change notification settings - Fork 373
[architecture] Update architecture diagram - 2026-05-01 #29488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,71 +1,88 @@ | ||||||||||||||||||||||||||||||||||||||||||||||
| # Architecture Diagram | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| > Last updated: 2026-04-30 · Source: [🏗️ Architecture Diagram: Full rebuild — gh-aw package architecture (2026-04-30)](https://github.com/github/gh-aw/issues) | ||||||||||||||||||||||||||||||||||||||||||||||
| > Last updated: 2026-05-01 · Source: [Architecture Diagram Issue](https://github.com/github/gh-aw/issues) | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ## Overview | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| This diagram shows the package structure and dependencies of the `gh-aw` codebase. | ||||||||||||||||||||||||||||||||||||||||||||||
| This diagram shows the package structure and dependencies of the `gh-aw` codebase, organized in three layers: entry points, core packages, and utility packages. | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||||||||||||||
| ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ENTRY POINTS │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌─────────────────────────────┐ ┌───────────────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ cmd/gh-aw │ │ cmd/gh-aw-wasm │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Main CLI binary / cobra │ │ WebAssembly compilation │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └──────────────┬──────────────┘ └───────────────────────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ imports: cli, workflow, parser, console, constants │ | ||||||||||||||||||||||||||||||||||||||||||||||
| ├──────────────────┼─────────────────────────────────────────────────────────────────────────────┤ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ▼ CORE PACKAGES │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌─────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ pkg/cli │──▶│ pkg/workflow │──▶│ pkg/parser │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Command impls for │ │ Workflow compilation │ │ Markdown frontmatter│ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ compile/run/logs │ │ engine (MD→YAML) │ │ parsing & extraction│ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └──────┬───────────────┘ └────────┬─────────────┘ └──────────────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ ┌────────▼─────────────┐ ┌──────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ │ pkg/actionpins │ │ pkg/agentdrain │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ │ Action pin resolution│ │ Agent output drain │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └──────────────────▶│ (SHA pinning for CI) │ │ (stream multiplexer)│ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └───────────────────────┘ └──────────────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌───────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ pkg/console │ │ pkg/constants │ │ pkg/stats │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Terminal UI formatting│ │ Shared typed consts │ │ Numerical statistics│ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ (success/warn/error) │ │ (engines, versions) │ │ for metric tracking │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └───────────────────────┘ └──────────────────────┘ └──────────────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| ├─────────────────────────────────────────────────────────────────────────────────────────────────┤ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ UTILITY PACKAGES │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐ ┌────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ logger │ │ tty │ │ styles │ │ fileutil │ │ gitutil │ │stringutil│ │ sliceutil │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └────────┘ └────────┘ └────────┘ └──────────┘ └─────────┘ └──────────┘ └────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ repoutil │ │ envutil │ │ timeutil │ │semverutil│ │ typeutil │ │ types │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| └─────────────────────────────────────────────────────────────────────────────────────────────────┘ | ||||||||||||||||||||||||||||||||||||||||||||||
| ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ENTRY POINTS │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌─────────────────────────────────┐ ┌──────────────────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ cmd/gh-aw │ │ cmd/gh-aw-wasm │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Main CLI binary (gh extension) │ │ WebAssembly compilation target │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ └────────────┬────────────────────┘ └────────────────────┬─────────────┘ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ imports cli, workflow, │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ parser, console, constants │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| ├───────────────────────┼─────────────────────────────────────────────────┼────────────────────────┤ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ▼ CORE PACKAGES ▼ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ ┌──────────────────────────┐ ┌──────────────────────────┐ ┌──────────────────────────┐ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ pkg/cli │──▶│ pkg/workflow │──▶│ pkg/parser │ │ | ||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Command implementations │ │ Workflow compiler engine │ │ Markdown/YAML frontmatter│ │ | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
| │ │ Command implementations │ │ Workflow compiler engine │ │ Markdown/YAML frontmatter│ │ | |
| │ │ Command implementations │ │ Workflow compiler engine │ │ Markdown/YAML parsing │ │ |
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the diagram, the pkg/stringutil label is truncated to pkg/stringut and the row is missing the closing right border character, which breaks the ASCII box formatting and makes the package name inaccurate.
This issue also appears on line 49 of the same file.
| │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐ │ | |
| │ │pkg/fileutil│ │pkg/gitutil │ │ pkg/logger │ │pkg/stringut│ │pkg/sliceutil │ pkg/tty │ │ | |
| │ │File path & │ │Git repo │ │Namespace │ │String │ │Slice helper│ │TTY detect│ │ | |
| │ │operations │ │operations │ │debug logs │ │utilities │ │functions │ │ │ │ | |
| │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └──────────┘ │ | |
| │ │ | |
| │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐ │ | |
| │ │pkg/constants │pkg/repoutil│ │pkg/semverut│ │ pkg/types │ │pkg/typeutil│ │pkg/envutil │ | |
| │ │Shared consts │Repo slug & │ │Semver │ │Shared type │ │Type convert│ │Env var │ │ | |
| │ │& type aliases │URL helpers │ │primitives │ │definitions │ │utilities │ │utilities │ │ | |
| │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └──────────┘ │ | |
| │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────┐ │ | |
| │ │pkg/fileutil│ │pkg/gitutil │ │ pkg/logger │ │pkg/stringutil│ │pkg/sliceutil│ │ pkg/tty │ │ | |
| │ │File path & │ │Git repo │ │Namespace │ │String │ │Slice helper │ │TTY detect│ │ | |
| │ │operations │ │operations │ │debug logs │ │utilities │ │functions │ │ │ │ | |
| │ └────────────┘ └────────────┘ └────────────┘ └─────────────┘ └─────────────┘ └──────────┘ │ | |
| │ │ | |
| │ ┌──────────────┐ ┌────────────┐ ┌─────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ | |
| │ │pkg/constants │ │pkg/repoutil│ │pkg/semverutil│ │ pkg/types │ │pkg/typeutil│ │pkg/envutil │ │ | |
| │ │Shared consts │ │Repo slug & │ │Semver │ │Shared type │ │Type convert│ │Env var │ │ | |
| │ │& type aliases│ │URL helpers │ │primitives │ │definitions │ │utilities │ │utilities │ │ | |
| │ └──────────────┘ └────────────┘ └─────────────┘ └────────────┘ └────────────┘ └────────────┘ │ |
Copilot
AI
May 1, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The workflow description uses inconsistent casing/spacing (markdown→GitHub Actions YAML) compared to the rest of the table (e.g., “Markdown …” with spaces). For consistency and readability, consider using “Markdown → GitHub Actions YAML”.
| | pkg/workflow | Core | Workflow compiler engine — markdown→GitHub Actions YAML | | |
| | pkg/workflow | Core | Workflow compiler engine — Markdown → GitHub Actions YAML | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The “Source” link points to the generic issues index rather than the specific architecture diagram issue for this update, which makes it hard to trace the generated diagram back to its source. Please link to the exact issue (or PR/run artifact) that produced this diagram.