-
Notifications
You must be signed in to change notification settings - Fork 367
[architecture] Update architecture diagram - 2026-04-23 #28017
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,82 +1,93 @@ | ||||||||||||||||||||||||
| # Architecture Diagram | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| > Last updated: 2026-04-22 · Source: [Issue #27791](https://github.com/github/gh-aw/issues) | ||||||||||||||||||||||||
| > Last updated: 2026-04-23 · Source: Issue #28016 (Architecture Diagram) | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ## Overview | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| This diagram shows the package structure and dependencies of the `gh-aw` codebase. | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||
| ┌──────────────────────────────────────────────────────────────────────────────────────────────┐ | ||||||||||||||||||||||||
| │ ENTRY POINTS │ | ||||||||||||||||||||||||
| │ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ | ||||||||||||||||||||||||
| │ │ cmd/gh-aw │ │ cmd/gh-aw-wasm │ │ | ||||||||||||||||||||||||
| │ │ Main CLI binary │ │ WebAssembly / JS target │ │ | ||||||||||||||||||||||||
| │ └──────────────────────┬───────┘ └────────┬─────────────────────┘ │ | ||||||||||||||||||||||||
| │ (cli,workflow,parser,│console,constants) (parser, │workflow) │ | ||||||||||||||||||||||||
| ├───────────────────────────▼──────────────────────────────▼──────────────────────────────────┤ | ||||||||||||||||||||||||
| │ CORE PACKAGES │ | ||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||
| │ ┌─────────────────────┐ ┌──────────────────────────┐ ┌──────────────────────┐ │ | ||||||||||||||||||||||||
| │ │ pkg/cli │──▶│ pkg/workflow │──▶│ pkg/parser │ │ | ||||||||||||||||||||||||
| │ │ Command routing & │ │ MD→YAML compilation │ │ Markdown/YAML │ │ | ||||||||||||||||||||||||
| │ │ implementations │ │ engine │ │ frontmatter parsing │ │ | ||||||||||||||||||||||||
| │ └──────────┬───────────┘ └──────────┬──────┬──────────┘ └──────────┬───────────┘ │ | ||||||||||||||||||||||||
| │ │ │ │ │ │ | ||||||||||||||||||||||||
| │ │ │ └──▶ pkg/actionpins │ │ | ||||||||||||||||||||||||
| │ │ │ (Action SHA pinning) │ │ | ||||||||||||||||||||||||
| │ ▼ ▼ ▼ │ | ||||||||||||||||||||||||
| │ ┌──────────────────────────────────────────────────────────────────┐ │ | ||||||||||||||||||||||||
| │ │ pkg/console │ │ | ||||||||||||||||||||||||
| │ │ Terminal UI rendering & message formatting │ │ | ||||||||||||||||||||||||
| │ └──────────────┬──────────────────┬───────────────────┬────────────┘ │ | ||||||||||||||||||||||||
| │ ▼ ▼ ▼ │ | ||||||||||||||||||||||||
| │ pkg/styles pkg/tty pkg/logger │ | ||||||||||||||||||||||||
| │ (color/style (TTY detection) (debug logging) │ | ||||||||||||||||||||||||
| │ definitions) │ | ||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||
| │ ┌─────────────────────┐ ┌──────────────────────────┐ ┌──────────────────────┐ │ | ||||||||||||||||||||||||
| │ │ pkg/agentdrain │ │ pkg/constants │ │ pkg/types │ │ | ||||||||||||||||||||||||
| │ │ Agent output │ │ Semantic type aliases │ │ Shared type defs │ │ | ||||||||||||||||||||||||
| │ │ drain & streaming │ │ & shared constants │ │ │ │ | ||||||||||||||||||||||||
| │ └─────────────────────┘ └──────────────────────────┘ └──────────────────────┘ │ | ||||||||||||||||||||||||
| ├──────────────────────────────────────────────────────────────────────────────────────────────┤ | ||||||||||||||||||||||||
| │ UTILITY PACKAGES │ | ||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||
| │ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ | ||||||||||||||||||||||||
| │ │fileutil │ │ gitutil │ │stringutil│ │ repoutil │ │semverutil│ │sliceutil │ │ | ||||||||||||||||||||||||
| │ └─────────┘ └─────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ | ||||||||||||||||||||||||
| │ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ | ||||||||||||||||||||||||
| │ │ typeutil│ │ envutil │ │ timeutil │ │ stats │ │ testutil │ │ | ||||||||||||||||||||||||
| │ └─────────┘ └─────────┘ └──────────┘ └──────────┘ └──────────┘ │ | ||||||||||||||||||||||||
| └──────────────────────────────────────────────────────────────────────────────────────────────┘ | ||||||||||||||||||||||||
| │ ENTRY POINTS │ | ||||||||||||||||||||||||
| │ │ | ||||||||||||||||||||||||
| │ ┌─────────────────────┐ ┌─────────────────────┐ │ | ||||||||||||||||||||||||
| │ │ cmd/gh-aw │ │ cmd/gh-aw-wasm │ │ | ||||||||||||||||||||||||
| │ │ (CLI binary) │ │ (WASM target) │ │ | ||||||||||||||||||||||||
| │ └──────────┬──────────┘ └──────────┬──────────┘ │ | ||||||||||||||||||||||||
| │ │ cli, workflow, parser, console │ │ | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
| │ │ cli, workflow, parser, console │ │ | |
| │ │ cli, workflow, parser, console, constants │ parser, workflow │ |
Copilot
AI
Apr 23, 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 dependency arrow into pkg/parser appears to indicate pkg/actionpins depends on pkg/parser, but in the codebase pkg/workflow imports both pkg/parser and pkg/actionpins (e.g. pkg/workflow/compiler_types.go), while pkg/actionpins does not import pkg/parser (see pkg/actionpins/actionpins.go). Please update the diagram arrows to reflect the actual import direction (workflow → parser, workflow → actionpins) and remove the implied actionpins → parser dependency.
| │ └──────┬─────┘ └──────────────────────┘ └────────┬────────┘ └──────────┬───────────┘ │ | |
| │ │ │ │ │ | |
| │ ▼ │ │ │ | |
| │ ┌─────────────────────────────────────┐ │ │ │ | |
| │ │ pkg/parser │◀────────────┘ │ │ | |
| │ └──────┬─────┘ └──────────────────────┘ └────────▲────────┘ └──────────┬───────────┘ │ | |
| │ │ │ │ │ | |
| │ ├───────────────────────────────────────────┘ │ │ | |
| │ ▼ │ │ | |
| │ ┌─────────────────────────────────────┐ │ │ | |
| │ │ pkg/parser │ │ │ |
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 updated source reference is no longer a clickable link. Consider linking
Issue #28016directly (e.g. to/issues/28016) to match how issue references are typically navigated from docs.