Documentation
¶
Overview ¶
Package appflows composes experimental, caller-reported application behavior evidence.
Index ¶
- Constants
- func Decode(data []byte, out any) error
- func Digest(b []byte) string
- func ReadFile(filename string) ([]byte, error)
- func Record(in Input, raw []byte, filename string) error
- func ValidateEvidence(in Input, e Evidence) error
- func ValidateManifest(m Manifest) error
- func ValueDigest(v json.RawMessage) string
- type Action
- type Anchor
- type Assertion
- type Binding
- type Candidate
- type Check
- type CheckResult
- type Control
- type Coverage
- type Evidence
- type Flow
- type Input
- type Manifest
- type Report
- type Run
- type Scenario
- type Source
- type Test
Constants ¶
View Source
const ( IntentProfile = "application-flow-intent/0" EvidenceProfile = "application-flow-evidence/0" ReportProfile = "application-flow-report/0" MaxBytes = 5 << 20 MaxSources = 128 )
Variables ¶
This section is empty.
Functions ¶
func Decode ¶
Decode rejects duplicate keys, excessive depth, unknown fields and secret-shaped content.
func Record ¶
Record is explicit opt-in learning: a new private artifact, never an implicit index update.
func ValidateEvidence ¶
func ValidateManifest ¶
func ValueDigest ¶
func ValueDigest(v json.RawMessage) string
Types ¶
type Candidate ¶
type Candidate struct {
ID string `json:"id"`
Basis string `json:"basis"`
Route string `json:"route"`
Actions []Action `json:"actions"`
Source Anchor `json:"source"`
Freshness string `json:"freshness"`
}
Candidate is an inferred multi-step journey, independent of the supplied intent inventory.
type CheckResult ¶
type Evidence ¶
type Evidence struct {
Profile string `json:"profile"`
Authority string `json:"authority"`
Binding Binding `json:"binding"`
RunID string `json:"runId"`
Mode string `json:"mode"`
Parser string `json:"parser"`
ProviderDigest string `json:"providerDigest"`
NodeVersion string `json:"nodeVersion"`
PlaywrightVersion string `json:"playwrightVersion"`
Browser string `json:"browser"`
Tests []Test `json:"tests"`
InventoryComplete bool `json:"inventoryComplete"`
Controls []Control `json:"controls"`
Runs []Run `json:"runs"`
Gaps []string `json:"gaps"`
Cleanup bool `json:"cleanup"`
CleanupScope string `json:"cleanupScope"`
BrowserClosed bool `json:"browserClosed"`
ServerExited bool `json:"serverExited"`
}
type Input ¶
type Input struct {
Manifest Manifest `json:"manifest"`
Binding Binding `json:"binding"`
Sources []Source `json:"sources"`
Root string `json:"root"`
Observe bool `json:"observe"`
RunID string `json:"runId"`
}
Input is passed over stdin to the optional parser/observer; sources never execute in scan mode.
type Manifest ¶
type Manifest struct {
Profile string `json:"profile"`
Application string `json:"application"`
Origin string `json:"origin"`
Sources []string `json:"sources"`
Tests []string `json:"tests"`
BackendSource string `json:"backendSource"`
Fixture string `json:"fixture"`
IdentityPath string `json:"identityPath"`
ResetPath string `json:"resetPath"`
Server []string `json:"server"`
Scenarios []Scenario `json:"scenarios"`
}
type Report ¶
type Report struct {
Profile string `json:"profile"`
Authority string `json:"authority"`
Application string `json:"application"`
Binding Binding `json:"binding"`
Freshness string `json:"freshness"`
RunID string `json:"runId"`
ProviderDigest string `json:"providerDigest"`
Flows []Flow `json:"flows"`
Candidates []Candidate `json:"candidates"`
Discovered []Control `json:"discovered"`
Frontier []string `json:"frontier"`
Complete bool `json:"complete"`
}
type Run ¶
type Run struct {
Scenario string `json:"scenario"`
Outcome string `json:"outcome"`
Checks []CheckResult `json:"checks"`
States []string `json:"states"`
IdentityMatched bool `json:"identityMatched"`
}
Click to show internal directories.
Click to hide internal directories.