feat(01-02): add optional plugin services and HasPlugin

- App-scoped typed Publish/Lookup with duplicate-provider errors
- Set plugin IDs before Register so HasPlugin sees the full set
- Greeter uses pact.OptionalMessage without importing optional
This commit is contained in:
Jakub Zych
2026-09-16 13:24:30 +02:00
parent 5f2291849d
commit 86969739ae
17 changed files with 297 additions and 12 deletions

View File

@@ -18,7 +18,16 @@ type HasConfig interface {
ConfigFS() fs.FS
}
// Reserved KERN-03 capability names, declared when their first consumers exist:
// OptionalMessage is a service an optional plugin may publish so other
// plugins can integrate without importing that plugin's package.
type OptionalMessage interface {
Message() string
}
// Future KERN-03 capability families are type-asserted when their first
// consumer packages exist. Method payloads are not declared here so pact
// does not import surf, lagoon, festival, or other packages that Phase 1
// does not yet ship:
//
// HasModels
// HasMigrations
@@ -32,3 +41,6 @@ type HasConfig interface {
// HasSchedule
// HasMailTemplates
// HasLang
//
// Phase 1 type-asserts only HasConfig (party, before Register) and
// HasCommands (generated app main, after Boot).