C14 (regenerate): mesh-conditions' finding body types, no hand-kept tsconfig.json, the watchdogs client's artifact

Regenerated by seatgen at mesh-catalog b5aebbbe (bodies types, design 47 G section 452, 454); the eight hand-kept
tsconfig.json files are deleted (the generator writes none, section 341); health-and-repair/module.json names the
artifact go-meshwatchdogsclient its client check asks for.

Builds: design 47 G §439, §452, §454, §341
This commit is contained in:
2026-11-11 11:33:06 +01:00
parent 5f7610f521
commit 9068aac406
16 changed files with 147 additions and 159 deletions
@@ -276,6 +276,78 @@ type Subject struct {
Scope string `json:"scope"`
}
// Finding is one finding as an observer says it: the layout whole, plus scope, id and since (design 47 G 437, 439).
type Finding struct {
Actions []Action `json:"actions,omitempty"`
At time.Time `json:"at"`
// newest first, at most 10
Evidence []Evidence `json:"evidence,omitempty"`
Explanation string `json:"explanation,omitempty"`
Headline string `json:"headline,omitempty"`
// the key's second part
ID string `json:"id"`
Kind string `json:"kind"`
Needs string `json:"needs,omitempty"`
// the module that wrote it
Observer string `json:"observer"`
// the module the finding is about, when not the observer
Owner string `json:"owner,omitempty"`
// the key's last part when it is not the kind
Ref string `json:"ref,omitempty"`
// self, operator, agent or healer:<name>
Resolver string `json:"resolver,omitempty"`
// what of its own saw it last
Run string `json:"run,omitempty"`
// the key's first part: <scope>.<id>.<kind> (ADR 0564)
Scope string `json:"scope"`
Severity string `json:"severity"`
// since when the finding stands
Since time.Time `json:"since"`
// the row, probe or event that saw it
Source string `json:"source"`
Subject Subject `json:"subject"`
// one line
Summary string `json:"summary"`
// what it waits on: a person, a part or a call
WaitingOn string `json:"waiting-on,omitempty"`
}
// The values of Finding's severity.
const (
FindingSeverityUrgent = "urgent"
FindingSeverityWarning = "warning"
)
// FindingCleared is an observer no longer observes a finding.
type FindingCleared struct {
At time.Time `json:"at"`
ID string `json:"id"`
Kind string `json:"kind"`
Scope string `json:"scope"`
Why string `json:"why"`
}
// FindingWritten is a type of the contract.
type FindingWritten = Finding
// FindingsStatedPendingItem is a type of the contract.
type FindingsStatedPendingItem struct {
// a duration such as 5m
Bound string `json:"bound"`
Key string `json:"key"`
Since time.Time `json:"since"`
}
// FindingsStated is every finding an observer observes now, at its start and when asked (design 47 G 384, 439).
type FindingsStated struct {
// the ask it answers; none at a start
Asked string `json:"asked,omitempty"`
At time.Time `json:"at"`
Findings []Finding `json:"findings"`
// the keys the observer cannot judge yet since its start, with their since and bound
Pending []FindingsStatedPendingItem `json:"pending"`
}
// ConditionsInput is what conditions takes.
type ConditionsInput struct {
// with history: how many days back (default 7, at most 90)
@@ -448,8 +520,8 @@ const (
// FindingsViewsByObserverNodeValueStated is the last findings-stated set.
type FindingsViewsByObserverNodeValueStated struct {
At *time.Time `json:"at,omitempty"`
Findings []map[string]any `json:"findings,omitempty"`
At *time.Time `json:"at,omitempty"`
Findings []Finding `json:"findings,omitempty"`
}
// FindingsViewsByObserverNodeValue is one value of the state findings-views under the key <observer>.<node>.
+8
View File
@@ -56,6 +56,14 @@
"go/clients/meshhandactsclient"
]
},
{
"name": "go-meshwatchdogsclient",
"kind": "package",
"language": "go",
"paths": [
"go/clients/meshwatchdogsclient"
]
},
{
"name": "go-meshconditionsclient",
"kind": "package",
+65 -1
View File
@@ -140,6 +140,70 @@ export interface Subject {
"scope": string;
}
/** one finding as an observer says it: the layout whole, plus scope, id and since (design 47 G 437, 439) */
export interface Finding {
"actions"?: Action[];
"at": string;
/** newest first, at most 10 */
"evidence"?: Evidence[];
"explanation"?: string;
"headline"?: string;
/** the key's second part */
"id": string;
"kind": string;
"needs"?: string;
/** the module that wrote it */
"observer": string;
/** the module the finding is about, when not the observer */
"owner"?: string;
/** the key's last part when it is not the kind */
"ref"?: string;
/** self, operator, agent or healer:<name> */
"resolver"?: string;
/** what of its own saw it last */
"run"?: string;
/** the key's first part: <scope>.<id>.<kind> (ADR 0564) */
"scope": string;
"severity": "urgent" | "warning";
/** since when the finding stands */
"since": string;
/** the row, probe or event that saw it */
"source": string;
"subject": Subject;
/** one line */
"summary": string;
/** what it waits on: a person, a part or a call */
"waiting-on"?: string;
}
/** an observer no longer observes a finding */
export interface FindingCleared {
"at": string;
"id": string;
"kind": string;
"scope": string;
"why": string;
}
export type FindingWritten = Finding;
export interface FindingsStatedPendingItem {
/** a duration such as 5m */
"bound": string;
"key": string;
"since": string;
}
/** every finding an observer observes now, at its start and when asked (design 47 G 384, 439) */
export interface FindingsStated {
/** the ask it answers; none at a start */
"asked"?: string;
"at": string;
"findings": Finding[];
/** the keys the observer cannot judge yet since its start, with their since and bound */
"pending": FindingsStatedPendingItem[];
}
/** is what conditions takes. */
export interface ConditionsInput {
/** with history: how many days back (default 7, at most 90) */
@@ -292,7 +356,7 @@ export interface FindingsByKeyValue {
/** the last findings-stated set */
export interface FindingsViewsByObserverNodeValueStated {
"at"?: string;
"findings"?: Record<string, unknown>[];
"findings"?: Finding[];
}
/** is one value of the state findings-views under the key <observer>.<node>. */
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
-12
View File
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
-12
View File
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
-12
View File
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}
-12
View File
@@ -1,12 +0,0 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"]
}