-
Notifications
You must be signed in to change notification settings - Fork 367
[architecture] Update architecture diagram - 2026-04-21 #27521
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,6 +1,6 @@ | ||||||
| # Architecture Diagram | ||||||
|
|
||||||
| > Last updated: 2026-04-20 · Source: [Issue #27296](https://github.com/github/gh-aw/issues) · [Run §24658621102](https://github.com/github/gh-aw/actions/runs/24658621102) | ||||||
| > Last updated: 2026-04-21 · [Run §24714109908](https://github.com/github/gh-aw/actions/runs/24714109908) | ||||||
|
|
||||||
| ## Overview | ||||||
|
|
||||||
|
|
@@ -9,40 +9,34 @@ This diagram shows the package structure and dependencies of the `gh-aw` codebas | |||||
| ``` | ||||||
| ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ | ||||||
| │ ENTRY POINTS │ | ||||||
| │ │ | ||||||
| │ ┌──────────────────────────┐ ┌─────────────────────────────┐ │ | ||||||
| │ │ cmd/gh-aw │ │ cmd/gh-aw-wasm │ │ | ||||||
| │ │ (main CLI binary) │ │ (WebAssembly target) │ │ | ||||||
| │ └───┬────────┬─────────────┘ └──────────┬─────────┬────────┘ │ | ||||||
| │ │ │ │ │ │ | ||||||
| │ └───┬──────────────────────┘ └──────────┬──────────────────┘ │ | ||||||
| ├──────────────────────────────────────────────────────────────────────────────────────────────────┤ | ||||||
| │ ▼ ▼ CORE PACKAGES ▼ ▼ │ | ||||||
| │ │ | ||||||
| │ ┌──────────────────┐ ┌───────────────────────┐ ┌────────────────────────────┐ │ | ||||||
| │ │ pkg/cli │──▶│ pkg/workflow │──▶│ pkg/parser │ │ | ||||||
| │ │ CLI commands & │ │ workflow compilation │ │ markdown/YAML frontmatter │ │ | ||||||
| │ │ dispatch layer │ │ & Actions generation │ │ parsing & validation │ │ | ||||||
| │ └──────┬───────────┘ └──────┬─────────────────┘ └────────────────────────────┘ │ | ||||||
| │ │ │ │ | ||||||
| │ ▼ CORE PACKAGES ▼ │ | ||||||
| │ ┌──────────────────┐ ┌───────────────────────┐ ┌──────────────────────────────┐ │ | ||||||
| │ │ pkg/cli │──▶│ pkg/workflow │──▶│ pkg/parser │ │ | ||||||
| │ │ CLI commands & │ │ workflow compilation │ │ markdown/YAML frontmatter │ │ | ||||||
| │ │ dispatch layer │ │ & Actions generation │ │ parsing & validation │ │ | ||||||
| │ └──────┬───────────┘ └──────┬─────────────────┘ └──────────────────────────────┘ │ | ||||||
| │ └─────────────┐ ┌─────┘ │ | ||||||
| │ ▼ ▼ │ | ||||||
| │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ | ||||||
| │ │ pkg/console │ │ pkg/agentdrain │ │ pkg/actionpins │ │ | ||||||
| │ │ terminal UI & │ │ log streaming & │ │ action pin │ │ | ||||||
| │ │ spinner/render │ │ drain mgmt │ │ resolution │ │ | ||||||
| │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ | ||||||
| │ also shared: pkg/stats · pkg/types · pkg/constants │ | ||||||
| │ ┌─────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐ ┌─────────────────┐ │ | ||||||
| │ │ pkg/console │ │ pkg/agentdrain │ │ pkg/actionpins │ │ pkg/constants │ │ | ||||||
| │ │ terminal UI & │ │ Drain log anomaly │ │ action pin │ │ constants & │ │ | ||||||
| │ │ formatted output│ │ detection │ │ resolution │ │ type aliases │ │ | ||||||
| │ └─────────────────┘ └──────────────────────┘ └──────────────────────┘ └─────────────────┘ │ | ||||||
| │ also shared: pkg/stats · pkg/types · pkg/semverutil │ | ||||||
| ├──────────────────────────────────────────────────────────────────────────────────────────────────┤ | ||||||
| │ UTILITY PACKAGES │ | ||||||
| │ │ | ||||||
| │ ┌────────┐ ┌────────┐ ┌─────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ │ | ||||||
| │ │ logger │ │ styles │ │ tty │ │ fileutil │ │ gitutil │ │ repoutil │ │ sliceutil│ │ | ||||||
| │ └────────┘ └────────┘ └─────┘ └──────────┘ └─────────┘ └──────────┘ └──────────┘ │ | ||||||
| │ │ | ||||||
| │ ┌──────────┐ ┌─────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ | ||||||
| │ │ typeutil │ │ envutil │ │ semverutil│ │stringutil│ │ timeutil │ │ testutil │ │ | ||||||
| │ │ typeutil │ │ envutil │ │ semverutil│ │stringutil│ │ timeutil │ │ testutil*│ │ | ||||||
|
||||||
| │ │ typeutil │ │ envutil │ │ semverutil│ │stringutil│ │ timeutil │ │ testutil*│ │ | |
| │ │ typeutil │ │ envutil │ │ semverutil │ │ stringutil │ │ timeutil │ │ testutil*│ │ |
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,
pkg/semverutilis called out as "also shared" even though it’s already listed in the Utility Packages section below. This makes the diagram’s layering/legend ambiguous (is semverutil Shared or Utility?). Consider choosing one representation (e.g., move semverutil to the shared callout and remove it from the utility list, or keep it in utilities and drop it from the shared callout / reword the callout to clarify it’s a shared utility dependency).This issue also appears on line 58 of the same file.