HeroProc SDK Architecture Update #38
Labels
No labels
prio_critical
prio_low
type_bug
type_contact
type_issue
type_lead
type_question
type_story
type_task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lhumina_code/hero_proc#38
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
HeroProc SDK Architecture Update
1. Libraries
hero_proc_sdkCore layer (OpenRPC-based)
Generated OpenRPC client
Transport (UDS + HTTP)
Thin typed wrappers:
services()runs()jobs()logs()secrets()⚠️ No builders here
⚠️ No UX abstractions
👉 Pure, correct API layer
hero_proc_factoryUser-facing layer (what people actually use)
👉 This is the default entrypoint for developers
2. Entry Point (Factory)
Goal
One simple way to connect, regardless of transport
Returns:
3. HeroProcClient
Wraps
hero_proc_sdkinternally.Domain access (thin pass-through)
Builder entrypoints
4. Service Builder
Purpose
Create + update services (ServiceConfig → Actions)
Example
Responsibilities
Build
ServiceConfigWrap
ActionSpecValidate:
Call:
5. Run Builder (Ad-hoc execution)
Purpose
Execute actions without a service
Example
Responsibilities
6. Action Builder (Core abstraction)
Used in both ServiceBuilder and RunBuilder.
Example
Must support
script(...)orcommand(...)cwd(...)env(k, v)timeout_secs(...)depends_on([...])retry(n)restart_always()(service mode)7. Service Lifecycle Helpers
Start service → creates Run
Equivalent to:
Restart service
Should:
8. Run Helpers
9. Design Principles (Enforced)
10. Golden UX (What success looks like)
Service
Ad-hoc run