pi-radar 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/extension/baseline.js +227 -402
- package/dist/extension/radar-client.js +53 -13
- package/dist/extension/radar-communication.js +5 -5
- package/dist/extension/radar-execution.js +168 -383
- package/dist/extension/radar-launch.js +13 -13
- package/dist/extension/radar-publication.js +160 -299
- package/dist/index.js +239 -414
- package/extension/generated-contracts.ts +1249 -13
- package/extension/radar-client.ts +92 -29
- package/extension/radar-communication.ts +5 -5
- package/extension/radar-execution.ts +11 -58
- package/extension/radar-launch.ts +21 -21
- package/extension/radar-publication.ts +209 -412
- package/package.json +3 -4
- package/schema/public/v1/handoff-publish-params.deserialize.schema.json +2 -2
- package/schema/public/v1/handoff-publish-params.serialize.schema.json +2 -2
- package/schema/public/v1/handoff-receipt.deserialize.schema.json +4 -4
- package/schema/public/v1/handoff-receipt.serialize.schema.json +4 -4
- package/schema/public/v1/handoff.deserialize.schema.json +4 -4
- package/schema/public/v1/handoff.serialize.schema.json +4 -4
- package/schema/public/v1/observation-get-params.deserialize.schema.json +46 -0
- package/schema/public/v1/observation-get-params.serialize.schema.json +52 -0
- package/schema/public/v1/observation-get-response.deserialize.schema.json +2731 -0
- package/schema/public/v1/observation-get-response.serialize.schema.json +2862 -0
- package/schema/public/v1/observation-snapshot.deserialize.schema.json +2616 -0
- package/schema/public/v1/observation-snapshot.serialize.schema.json +2741 -0
- package/schema/public/v1/presence-answer.deserialize.schema.json +40 -0
- package/schema/public/v1/presence-answer.serialize.schema.json +40 -0
- package/schema/public/v1/presence-release.deserialize.schema.json +51 -0
- package/schema/public/v1/presence-release.serialize.schema.json +52 -0
- package/schema/public/v1/presence-report.deserialize.schema.json +149 -0
- package/schema/public/v1/presence-report.serialize.schema.json +157 -0
- package/extension/radar-session-marker.ts +0 -146
- package/schema/public/v1/launch-identity-marker.deserialize.schema.json +0 -32
- package/schema/public/v1/launch-identity-marker.serialize.schema.json +0 -32
|
@@ -0,0 +1,2741 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"AgentObservation": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"description": "A normalized observation of one agent, keyed in the inventory by its pane.",
|
|
6
|
+
"properties": {
|
|
7
|
+
"facts": {
|
|
8
|
+
"$ref": "#/$defs/HerdsmanFacts",
|
|
9
|
+
"description": "What Herdsman publishes about this agent. Empty unless the source\npublished metadata; never inferred from runtime facts."
|
|
10
|
+
},
|
|
11
|
+
"label": {
|
|
12
|
+
"description": "Reported display label (the stripped terminal title), if any.",
|
|
13
|
+
"type": [
|
|
14
|
+
"string",
|
|
15
|
+
"null"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"lineage": {
|
|
19
|
+
"anyOf": [
|
|
20
|
+
{
|
|
21
|
+
"$ref": "#/$defs/Lineage"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "null"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"description": "Explicit ownership lineage; `None` unless valid UUID tokens were supplied."
|
|
28
|
+
},
|
|
29
|
+
"location": {
|
|
30
|
+
"$ref": "#/$defs/Location"
|
|
31
|
+
},
|
|
32
|
+
"name": {
|
|
33
|
+
"description": "Reported agent name (for example `\"pi\"`), if any.",
|
|
34
|
+
"type": [
|
|
35
|
+
"string",
|
|
36
|
+
"null"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"registry": {
|
|
40
|
+
"anyOf": [
|
|
41
|
+
{
|
|
42
|
+
"$ref": "#/$defs/RegistryView"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "null"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"description": "The daemon's registration for this agent, with how it binds to a pane.\n`None` for an agent the registry does not know, and for every agent when\nno registry is read. A registration that names a pane protects that pane\neven when unjoined."
|
|
49
|
+
},
|
|
50
|
+
"session": {
|
|
51
|
+
"anyOf": [
|
|
52
|
+
{
|
|
53
|
+
"$ref": "#/$defs/SessionIdentity"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"description": "Reported session identity; `None` when the source reports none."
|
|
60
|
+
},
|
|
61
|
+
"status": {
|
|
62
|
+
"anyOf": [
|
|
63
|
+
{
|
|
64
|
+
"$ref": "#/$defs/RuntimeStatus"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "null"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"description": "Runtime lifecycle as reported; never a semantic control state."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"required": [
|
|
74
|
+
"location",
|
|
75
|
+
"name",
|
|
76
|
+
"label",
|
|
77
|
+
"status",
|
|
78
|
+
"session",
|
|
79
|
+
"lineage",
|
|
80
|
+
"facts",
|
|
81
|
+
"registry"
|
|
82
|
+
],
|
|
83
|
+
"type": "object"
|
|
84
|
+
},
|
|
85
|
+
"AssignmentSnapshot": {
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"description": "The owner's complete assignment snapshot: the shared base plus facts only an\nowner knows. It is authored by the owner's writer and is never derived from\nexecution activity; the owner's identity is provenance, not authority.",
|
|
88
|
+
"properties": {
|
|
89
|
+
"actions": {
|
|
90
|
+
"items": {
|
|
91
|
+
"type": "string"
|
|
92
|
+
},
|
|
93
|
+
"type": "array"
|
|
94
|
+
},
|
|
95
|
+
"activity": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"ask": {
|
|
99
|
+
"type": [
|
|
100
|
+
"string",
|
|
101
|
+
"null"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"assigned_started_unix_ms": {
|
|
105
|
+
"format": "uint64",
|
|
106
|
+
"minimum": 0,
|
|
107
|
+
"type": [
|
|
108
|
+
"integer",
|
|
109
|
+
"null"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
"assignment": {
|
|
113
|
+
"type": [
|
|
114
|
+
"string",
|
|
115
|
+
"null"
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"awaited": {
|
|
119
|
+
"items": {
|
|
120
|
+
"type": "string"
|
|
121
|
+
},
|
|
122
|
+
"type": "array"
|
|
123
|
+
},
|
|
124
|
+
"definition": {
|
|
125
|
+
"type": [
|
|
126
|
+
"string",
|
|
127
|
+
"null"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"last_outcome": {
|
|
131
|
+
"anyOf": [
|
|
132
|
+
{
|
|
133
|
+
"$ref": "#/$defs/Outcome"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "null"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"request": {
|
|
141
|
+
"type": [
|
|
142
|
+
"string",
|
|
143
|
+
"null"
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
"role": {
|
|
147
|
+
"type": [
|
|
148
|
+
"string",
|
|
149
|
+
"null"
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
"run": {
|
|
153
|
+
"type": [
|
|
154
|
+
"string",
|
|
155
|
+
"null"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"waiting_reason": {
|
|
159
|
+
"type": [
|
|
160
|
+
"string",
|
|
161
|
+
"null"
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"required": [
|
|
166
|
+
"activity"
|
|
167
|
+
],
|
|
168
|
+
"type": "object"
|
|
169
|
+
},
|
|
170
|
+
"BackgroundTask": {
|
|
171
|
+
"additionalProperties": false,
|
|
172
|
+
"description": "One background task the agent process reports as unresolved.",
|
|
173
|
+
"properties": {
|
|
174
|
+
"id": {
|
|
175
|
+
"type": "string"
|
|
176
|
+
},
|
|
177
|
+
"phase": {
|
|
178
|
+
"type": "string"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"required": [
|
|
182
|
+
"id",
|
|
183
|
+
"phase"
|
|
184
|
+
],
|
|
185
|
+
"type": "object"
|
|
186
|
+
},
|
|
187
|
+
"BinaryFreshness": {
|
|
188
|
+
"description": "How a foreground process's running executable compares with the installed\nprogram it would run.",
|
|
189
|
+
"oneOf": [
|
|
190
|
+
{
|
|
191
|
+
"const": "current",
|
|
192
|
+
"description": "The running executable is the installed program, or another file inside\nthe same installation as the one installed now.",
|
|
193
|
+
"type": "string"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"const": "stale",
|
|
197
|
+
"description": "The running executable's file was replaced or removed, or its\ninstallation differs from the one installed now.",
|
|
198
|
+
"type": "string"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"const": "unknown",
|
|
202
|
+
"description": "Nothing could be compared: the process is gone, its executable or the\ninstalled program is unreadable, the running file is not the program the\ncounterpart belongs to, or this platform has no reader.",
|
|
203
|
+
"type": "string"
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
"BinaryIdentity": {
|
|
208
|
+
"additionalProperties": false,
|
|
209
|
+
"description": "What was compared, and how it came out.\n\n`running` and `installed` are the installations the executables belong to —\nthe Nix store root, or the resolved path elsewhere — and they are what the\nfreshness compares. A bolt variant's payload is compared by package family,\nso its identities carry the package roots; every other program is compared\nby file name and keeps the earlier meaning. `executable` is the running file\nitself, which the kernel reports and nobody invokes, kept so a row can name\nwhat is running even when no verdict was reached.",
|
|
210
|
+
"properties": {
|
|
211
|
+
"executable": {
|
|
212
|
+
"description": "The running executable's own path, when it could be read.",
|
|
213
|
+
"type": [
|
|
214
|
+
"string",
|
|
215
|
+
"null"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
"freshness": {
|
|
219
|
+
"$ref": "#/$defs/BinaryFreshness"
|
|
220
|
+
},
|
|
221
|
+
"installed": {
|
|
222
|
+
"description": "The installation the installed counterpart's payload belongs to. `None`\nwhen no counterpart was found or its payload could not be identified.",
|
|
223
|
+
"type": [
|
|
224
|
+
"string",
|
|
225
|
+
"null"
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
"running": {
|
|
229
|
+
"description": "The installation the running executable belongs to. `None` when its\nexecutable could not be read.",
|
|
230
|
+
"type": [
|
|
231
|
+
"string",
|
|
232
|
+
"null"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
"unknown": {
|
|
236
|
+
"anyOf": [
|
|
237
|
+
{
|
|
238
|
+
"$ref": "#/$defs/BinaryUnknown"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"type": "null"
|
|
242
|
+
}
|
|
243
|
+
],
|
|
244
|
+
"description": "Why nothing was compared, when nothing was."
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"required": [
|
|
248
|
+
"freshness",
|
|
249
|
+
"running",
|
|
250
|
+
"installed",
|
|
251
|
+
"executable",
|
|
252
|
+
"unknown"
|
|
253
|
+
],
|
|
254
|
+
"type": "object"
|
|
255
|
+
},
|
|
256
|
+
"BinaryUnknown": {
|
|
257
|
+
"description": "Why a running executable could not be compared, when it could not.\n\nEach variant is something a reader can act on differently: a program that is\nnot installed, an installed entrypoint whose payload cannot be identified,\nan executable that cannot be read, or a running file that is not the program\nin question. The words a row uses are the row's, not this type's.",
|
|
258
|
+
"oneOf": [
|
|
259
|
+
{
|
|
260
|
+
"const": "no_counterpart",
|
|
261
|
+
"description": "No installed counterpart of that name is on the search path.",
|
|
262
|
+
"type": "string"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"const": "unsupported_launcher",
|
|
266
|
+
"description": "The counterpart exists, but the payload it runs could not be identified:\nits entrypoint is unreadable, or its shape is one this comparison\nrefuses rather than guesses at.",
|
|
267
|
+
"type": "string"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"const": "unreadable",
|
|
271
|
+
"description": "The running process's own executable could not be read.",
|
|
272
|
+
"type": "string"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"const": "not_compared",
|
|
276
|
+
"description": "The running file is not the program the runtime named, or the runtime\nnamed none: nothing about it is attributed to a program.",
|
|
277
|
+
"type": "string"
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
"Binding": {
|
|
282
|
+
"description": "How a registration relates to the live panes.",
|
|
283
|
+
"oneOf": [
|
|
284
|
+
{
|
|
285
|
+
"enum": [
|
|
286
|
+
"joined"
|
|
287
|
+
],
|
|
288
|
+
"type": "string"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"additionalProperties": false,
|
|
292
|
+
"properties": {
|
|
293
|
+
"unjoined": {
|
|
294
|
+
"$ref": "#/$defs/Unjoined"
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
"required": [
|
|
298
|
+
"unjoined"
|
|
299
|
+
],
|
|
300
|
+
"type": "object"
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
"Binding2": {
|
|
305
|
+
"additionalProperties": false,
|
|
306
|
+
"description": "Where a container's handle lives, and which incarnation answered for it.",
|
|
307
|
+
"properties": {
|
|
308
|
+
"backend": {
|
|
309
|
+
"type": "string"
|
|
310
|
+
},
|
|
311
|
+
"handle": {
|
|
312
|
+
"type": "string"
|
|
313
|
+
},
|
|
314
|
+
"incarnation": {
|
|
315
|
+
"anyOf": [
|
|
316
|
+
{
|
|
317
|
+
"$ref": "#/$defs/ProcessIdentity"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"type": "null"
|
|
321
|
+
}
|
|
322
|
+
],
|
|
323
|
+
"description": "The verified process incarnation serving the handle, when one was\nestablished. A handle alone cannot be told apart from a later server\nreusing it, so a binding that names no incarnation is never verified."
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"required": [
|
|
327
|
+
"backend",
|
|
328
|
+
"incarnation",
|
|
329
|
+
"handle"
|
|
330
|
+
],
|
|
331
|
+
"type": "object"
|
|
332
|
+
},
|
|
333
|
+
"Channel": {
|
|
334
|
+
"description": "Independent publisher channels.",
|
|
335
|
+
"oneOf": [
|
|
336
|
+
{
|
|
337
|
+
"const": "execution",
|
|
338
|
+
"description": "Process execution evidence.",
|
|
339
|
+
"type": "string"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"const": "assignment",
|
|
343
|
+
"description": "Owner assignment projection.",
|
|
344
|
+
"type": "string"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"const": "facts",
|
|
348
|
+
"description": "Self-authored process facts, published with no owner.",
|
|
349
|
+
"type": "string"
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
},
|
|
353
|
+
"ChildCloseTarget": {
|
|
354
|
+
"additionalProperties": false,
|
|
355
|
+
"description": "Exact spawn-edge child identity required by `spawn.close`.",
|
|
356
|
+
"properties": {
|
|
357
|
+
"incarnation": {
|
|
358
|
+
"type": "string"
|
|
359
|
+
},
|
|
360
|
+
"source": {
|
|
361
|
+
"type": "string"
|
|
362
|
+
},
|
|
363
|
+
"spawn_request_id": {
|
|
364
|
+
"type": "string"
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
"required": [
|
|
368
|
+
"spawn_request_id",
|
|
369
|
+
"source",
|
|
370
|
+
"incarnation"
|
|
371
|
+
],
|
|
372
|
+
"type": "object"
|
|
373
|
+
},
|
|
374
|
+
"ContextWindow": {
|
|
375
|
+
"additionalProperties": false,
|
|
376
|
+
"description": "How much of a model's context window a session has used, as counts.\n\n`window` is positive and `tokens` does not exceed it; the percentage a display\nshows is derived from these and never published. Wire counts stay exact in JS.",
|
|
377
|
+
"properties": {
|
|
378
|
+
"tokens": {
|
|
379
|
+
"format": "uint64",
|
|
380
|
+
"maximum": 9007199254740991,
|
|
381
|
+
"minimum": 0,
|
|
382
|
+
"type": "integer"
|
|
383
|
+
},
|
|
384
|
+
"window": {
|
|
385
|
+
"format": "uint64",
|
|
386
|
+
"maximum": 9007199254740991,
|
|
387
|
+
"minimum": 0,
|
|
388
|
+
"type": "integer"
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
"required": [
|
|
392
|
+
"tokens",
|
|
393
|
+
"window"
|
|
394
|
+
],
|
|
395
|
+
"type": "object"
|
|
396
|
+
},
|
|
397
|
+
"CpuPercent": {
|
|
398
|
+
"description": "Interval CPU use of one process, as a percentage of one CPU.\n\nHeld in hundredths of a percent, as an integer: the value is a ratio of two\nkernel counter readings, and an exact integer is what a row can show and a\ntest can assert. `12.5%` of one CPU is `1_250`. It measures the process\nrather than the machine, so a process that used two CPUs for a whole\ninterval is `20_000`, not `100%`.",
|
|
399
|
+
"format": "uint32",
|
|
400
|
+
"minimum": 0,
|
|
401
|
+
"type": "integer"
|
|
402
|
+
},
|
|
403
|
+
"DescendantResources": {
|
|
404
|
+
"additionalProperties": false,
|
|
405
|
+
"description": "What the processes beneath one root are using, as one scan observed them.\n\nThe members are the kernel's descendants — the ancestry its parent links\nreported when the scan read them — and never a claim of ownership: a build\nbeneath a pane belongs to no agent, session, assignment or background task\nthat Radar knows of, and none of these totals is a cgroup or workload total.\nA process beneath two roots contributes to each of their totals while being\nread once, and RSS is summed per process, so pages shared between two\ndescendants, or between a descendant and its ancestor, are counted once for\nevery process that maps them.",
|
|
406
|
+
"properties": {
|
|
407
|
+
"cpu": {
|
|
408
|
+
"$ref": "#/$defs/Total2",
|
|
409
|
+
"description": "Their interval CPU. Every one of them needs its own matching pair of\nreadings, so a descendant seen for the first time contributes nothing\nand leaves this partial."
|
|
410
|
+
},
|
|
411
|
+
"members": {
|
|
412
|
+
"description": "Those processes: one sample each, and exactly the ones `observed` counts\nand the totals cover. Empty when none could be enumerated, and the\ntotals below say why.",
|
|
413
|
+
"items": {
|
|
414
|
+
"$ref": "#/$defs/DescendantSample"
|
|
415
|
+
},
|
|
416
|
+
"type": "array"
|
|
417
|
+
},
|
|
418
|
+
"observed": {
|
|
419
|
+
"description": "How many processes the scan observed beneath the root. `None` when none\ncould be enumerated at all.",
|
|
420
|
+
"format": "uint32",
|
|
421
|
+
"minimum": 0,
|
|
422
|
+
"type": [
|
|
423
|
+
"integer",
|
|
424
|
+
"null"
|
|
425
|
+
]
|
|
426
|
+
},
|
|
427
|
+
"rss_bytes": {
|
|
428
|
+
"$ref": "#/$defs/Total",
|
|
429
|
+
"description": "The resident set of those of them whose size could be read."
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
"required": [
|
|
433
|
+
"observed",
|
|
434
|
+
"members",
|
|
435
|
+
"rss_bytes",
|
|
436
|
+
"cpu"
|
|
437
|
+
],
|
|
438
|
+
"type": "object"
|
|
439
|
+
},
|
|
440
|
+
"DescendantSample": {
|
|
441
|
+
"additionalProperties": false,
|
|
442
|
+
"description": "One process beneath a root, as one refresh's scan confirmed it.\n\nThese are the members the totals of [`DescendantResources`] are made of, from\nthe same snapshot, the same reads and the same confirmation — never a second\nwalk and never a second reading of `/proc`. The parent is the identity of the\nprocess this one was read beneath: what a table can order and fold by is the\nincarnation, since a pid alone names a different process once the kernel\nreuses it. The name is the kernel's own short name for the process, which is\nneither the arguments it was started with nor a claim about what started it.",
|
|
443
|
+
"properties": {
|
|
444
|
+
"cpu": {
|
|
445
|
+
"anyOf": [
|
|
446
|
+
{
|
|
447
|
+
"$ref": "#/$defs/CpuPercent"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"type": "null"
|
|
451
|
+
}
|
|
452
|
+
],
|
|
453
|
+
"description": "Interval CPU since the previous sample of this same identity. `None` when\nno interval can be measured; a measured idle interval is `Some(0)`."
|
|
454
|
+
},
|
|
455
|
+
"identity": {
|
|
456
|
+
"$ref": "#/$defs/ProcessIdentity",
|
|
457
|
+
"description": "The incarnation this reading belongs to."
|
|
458
|
+
},
|
|
459
|
+
"name": {
|
|
460
|
+
"description": "The kernel's name for the process (`comm` in `/proc/<pid>/stat`), which\nis not argv and says nothing about who started it.",
|
|
461
|
+
"type": "string"
|
|
462
|
+
},
|
|
463
|
+
"parent": {
|
|
464
|
+
"$ref": "#/$defs/ProcessIdentity",
|
|
465
|
+
"description": "The incarnation of the process it was read beneath."
|
|
466
|
+
},
|
|
467
|
+
"rss_bytes": {
|
|
468
|
+
"description": "Resident set size in bytes. `None` when this machine cannot convert the\nkernel's page count.",
|
|
469
|
+
"format": "uint64",
|
|
470
|
+
"maximum": 9007199254740991,
|
|
471
|
+
"minimum": 0,
|
|
472
|
+
"type": [
|
|
473
|
+
"integer",
|
|
474
|
+
"null"
|
|
475
|
+
]
|
|
476
|
+
},
|
|
477
|
+
"state": {
|
|
478
|
+
"$ref": "#/$defs/ProcessState",
|
|
479
|
+
"description": "The scheduler state the kernel reported for it."
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
"required": [
|
|
483
|
+
"identity",
|
|
484
|
+
"parent",
|
|
485
|
+
"name",
|
|
486
|
+
"state",
|
|
487
|
+
"cpu",
|
|
488
|
+
"rss_bytes"
|
|
489
|
+
],
|
|
490
|
+
"type": "object"
|
|
491
|
+
},
|
|
492
|
+
"FactsSnapshot": {
|
|
493
|
+
"additionalProperties": false,
|
|
494
|
+
"description": "The agent's own process facts. Self-authored by any Pi session, with no owner\nor assignment, and kept separate from execution and assignment. Every field\nis optional and a published snapshot replaces the whole value, so omission\nwithdraws a fact. `context_window` is counts; a display derives the percentage.",
|
|
495
|
+
"properties": {
|
|
496
|
+
"background_started_unix_ms": {
|
|
497
|
+
"format": "uint64",
|
|
498
|
+
"maximum": 9007199254740991,
|
|
499
|
+
"minimum": 0,
|
|
500
|
+
"type": [
|
|
501
|
+
"integer",
|
|
502
|
+
"null"
|
|
503
|
+
]
|
|
504
|
+
},
|
|
505
|
+
"background_tasks": {
|
|
506
|
+
"items": {
|
|
507
|
+
"$ref": "#/$defs/BackgroundTask"
|
|
508
|
+
},
|
|
509
|
+
"type": "array"
|
|
510
|
+
},
|
|
511
|
+
"context_window": {
|
|
512
|
+
"anyOf": [
|
|
513
|
+
{
|
|
514
|
+
"$ref": "#/$defs/ContextWindow"
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"type": "null"
|
|
518
|
+
}
|
|
519
|
+
]
|
|
520
|
+
},
|
|
521
|
+
"model": {
|
|
522
|
+
"type": [
|
|
523
|
+
"string",
|
|
524
|
+
"null"
|
|
525
|
+
]
|
|
526
|
+
},
|
|
527
|
+
"provider": {
|
|
528
|
+
"type": [
|
|
529
|
+
"string",
|
|
530
|
+
"null"
|
|
531
|
+
]
|
|
532
|
+
},
|
|
533
|
+
"session_name": {
|
|
534
|
+
"type": [
|
|
535
|
+
"string",
|
|
536
|
+
"null"
|
|
537
|
+
]
|
|
538
|
+
},
|
|
539
|
+
"thinking": {
|
|
540
|
+
"type": [
|
|
541
|
+
"string",
|
|
542
|
+
"null"
|
|
543
|
+
]
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"type": "object"
|
|
547
|
+
},
|
|
548
|
+
"FleetObservation": {
|
|
549
|
+
"additionalProperties": false,
|
|
550
|
+
"description": "One successful inventory: workspaces, tabs, panes, reported agents and\ndaemon lifecycle subjects not represented by a joined agent row.",
|
|
551
|
+
"properties": {
|
|
552
|
+
"agents": {
|
|
553
|
+
"description": "The agents this observation presents as facts. The collector sets these\nfrom the registry; a backend's own metadata records never land here.",
|
|
554
|
+
"items": {
|
|
555
|
+
"$ref": "#/$defs/AgentObservation"
|
|
556
|
+
},
|
|
557
|
+
"type": "array"
|
|
558
|
+
},
|
|
559
|
+
"containers": {
|
|
560
|
+
"description": "The containers this daemon records, read beside the registry facts. A\nbackend's inventory never carries them, and an empty list means no\ncontainer was read — not that none exists.",
|
|
561
|
+
"items": {
|
|
562
|
+
"$ref": "#/$defs/PublicContainer"
|
|
563
|
+
},
|
|
564
|
+
"type": "array"
|
|
565
|
+
},
|
|
566
|
+
"lifecycle_subjects": {
|
|
567
|
+
"description": "Public lifecycle records from the same daemon read as agent facts. The\ntree suppresses subjects already represented by a joined agent row.",
|
|
568
|
+
"items": {
|
|
569
|
+
"$ref": "#/$defs/LifecycleObservation"
|
|
570
|
+
},
|
|
571
|
+
"type": "array"
|
|
572
|
+
},
|
|
573
|
+
"metadata_agents": {
|
|
574
|
+
"description": "Agent records a backend reads from pane metadata. They are physical\nevidence that protects a pane from unmanaged control, and are never\npresented as agent facts.",
|
|
575
|
+
"items": {
|
|
576
|
+
"$ref": "#/$defs/AgentObservation"
|
|
577
|
+
},
|
|
578
|
+
"type": "array"
|
|
579
|
+
},
|
|
580
|
+
"panes": {
|
|
581
|
+
"items": {
|
|
582
|
+
"$ref": "#/$defs/Pane"
|
|
583
|
+
},
|
|
584
|
+
"type": "array"
|
|
585
|
+
},
|
|
586
|
+
"tabs": {
|
|
587
|
+
"items": {
|
|
588
|
+
"$ref": "#/$defs/Tab"
|
|
589
|
+
},
|
|
590
|
+
"type": "array"
|
|
591
|
+
},
|
|
592
|
+
"workspaces": {
|
|
593
|
+
"items": {
|
|
594
|
+
"$ref": "#/$defs/Workspace"
|
|
595
|
+
},
|
|
596
|
+
"type": "array"
|
|
597
|
+
}
|
|
598
|
+
},
|
|
599
|
+
"required": [
|
|
600
|
+
"workspaces",
|
|
601
|
+
"tabs",
|
|
602
|
+
"panes",
|
|
603
|
+
"agents"
|
|
604
|
+
],
|
|
605
|
+
"type": "object"
|
|
606
|
+
},
|
|
607
|
+
"ForegroundEvidence": {
|
|
608
|
+
"description": "Evidence about a pane's foreground, decoded inside the connector.\n\nThe reconciler treats only [`ForegroundEvidence::NonShell`] as positive\nsupersession evidence; absence or ambiguity retains the last observation.",
|
|
609
|
+
"oneOf": [
|
|
610
|
+
{
|
|
611
|
+
"additionalProperties": false,
|
|
612
|
+
"description": "The pane shell owns the foreground process group (shell PID evidence).",
|
|
613
|
+
"properties": {
|
|
614
|
+
"kind": {
|
|
615
|
+
"const": "shell",
|
|
616
|
+
"type": "string"
|
|
617
|
+
}
|
|
618
|
+
},
|
|
619
|
+
"required": [
|
|
620
|
+
"kind"
|
|
621
|
+
],
|
|
622
|
+
"type": "object"
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"additionalProperties": false,
|
|
626
|
+
"description": "A non-shell process group leader is in the foreground.",
|
|
627
|
+
"properties": {
|
|
628
|
+
"command": {
|
|
629
|
+
"description": "The leader's command line as the operating system reports it.",
|
|
630
|
+
"type": [
|
|
631
|
+
"string",
|
|
632
|
+
"null"
|
|
633
|
+
]
|
|
634
|
+
},
|
|
635
|
+
"kind": {
|
|
636
|
+
"const": "non_shell",
|
|
637
|
+
"type": "string"
|
|
638
|
+
},
|
|
639
|
+
"local": {
|
|
640
|
+
"$ref": "#/$defs/LocalFacts",
|
|
641
|
+
"description": "What this machine knows about that process. Filled by the collector\nfrom the operating system, never by the runtime's own report."
|
|
642
|
+
},
|
|
643
|
+
"name": {
|
|
644
|
+
"type": [
|
|
645
|
+
"string",
|
|
646
|
+
"null"
|
|
647
|
+
]
|
|
648
|
+
},
|
|
649
|
+
"pid": {
|
|
650
|
+
"format": "int32",
|
|
651
|
+
"type": "integer"
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
"required": [
|
|
655
|
+
"kind",
|
|
656
|
+
"pid",
|
|
657
|
+
"name",
|
|
658
|
+
"command",
|
|
659
|
+
"local"
|
|
660
|
+
],
|
|
661
|
+
"type": "object"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"additionalProperties": false,
|
|
665
|
+
"description": "PID fields are missing or inconsistent: foreground state is unknown.",
|
|
666
|
+
"properties": {
|
|
667
|
+
"kind": {
|
|
668
|
+
"const": "inconclusive",
|
|
669
|
+
"type": "string"
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
"required": [
|
|
673
|
+
"kind"
|
|
674
|
+
],
|
|
675
|
+
"type": "object"
|
|
676
|
+
}
|
|
677
|
+
]
|
|
678
|
+
},
|
|
679
|
+
"Freshness": {
|
|
680
|
+
"description": "Freshness is independent of process identity or completion.",
|
|
681
|
+
"oneOf": [
|
|
682
|
+
{
|
|
683
|
+
"const": "fresh",
|
|
684
|
+
"description": "Accepted in this serving epoch by the current writer and not expired.",
|
|
685
|
+
"type": "string"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"const": "stale",
|
|
689
|
+
"description": "Restored, reported by a replaced writer, retired, or expired.",
|
|
690
|
+
"type": "string"
|
|
691
|
+
}
|
|
692
|
+
]
|
|
693
|
+
},
|
|
694
|
+
"HerdsmanFacts": {
|
|
695
|
+
"additionalProperties": false,
|
|
696
|
+
"properties": {
|
|
697
|
+
"ask": {
|
|
698
|
+
"description": "A lead's pending owner question.",
|
|
699
|
+
"type": [
|
|
700
|
+
"string",
|
|
701
|
+
"null"
|
|
702
|
+
]
|
|
703
|
+
},
|
|
704
|
+
"assigned_for": {
|
|
705
|
+
"description": "How long the active assignment had been running when it was observed.\nMeasured at observation time from Herdsman's own start, because a\npresentation that had to interpret a timestamp would need a clock.",
|
|
706
|
+
"format": "uint64",
|
|
707
|
+
"minimum": 0,
|
|
708
|
+
"type": [
|
|
709
|
+
"integer",
|
|
710
|
+
"null"
|
|
711
|
+
]
|
|
712
|
+
},
|
|
713
|
+
"assigned_started_unix_ms": {
|
|
714
|
+
"description": "The active assignment's start, Unix milliseconds as published.",
|
|
715
|
+
"format": "uint64",
|
|
716
|
+
"maximum": 9007199254740991,
|
|
717
|
+
"minimum": 0,
|
|
718
|
+
"type": [
|
|
719
|
+
"integer",
|
|
720
|
+
"null"
|
|
721
|
+
]
|
|
722
|
+
},
|
|
723
|
+
"assignment": {
|
|
724
|
+
"description": "The active assignment's display text.",
|
|
725
|
+
"type": [
|
|
726
|
+
"string",
|
|
727
|
+
"null"
|
|
728
|
+
]
|
|
729
|
+
},
|
|
730
|
+
"awaited": {
|
|
731
|
+
"description": "What this pane is waiting on: `agent:<label>` for each outstanding\nchild, and `owner` while its own question to its owner is outstanding.\nOutstanding work, not state: it is published while working and while\nstopped, and cleared when the last item resolves.",
|
|
732
|
+
"items": {
|
|
733
|
+
"type": "string"
|
|
734
|
+
},
|
|
735
|
+
"type": "array"
|
|
736
|
+
},
|
|
737
|
+
"background_running": {
|
|
738
|
+
"description": "How many of the pane's background tasks are running, as its own\nextension counts them. Another publisher owns this key, and the count\nspeaks only for the running ones: it is not the set of unresolved work.",
|
|
739
|
+
"format": "uint32",
|
|
740
|
+
"minimum": 0,
|
|
741
|
+
"type": [
|
|
742
|
+
"integer",
|
|
743
|
+
"null"
|
|
744
|
+
]
|
|
745
|
+
},
|
|
746
|
+
"background_started": {
|
|
747
|
+
"description": "The oldest outstanding background task's start, ISO 8601 as published.",
|
|
748
|
+
"type": [
|
|
749
|
+
"string",
|
|
750
|
+
"null"
|
|
751
|
+
]
|
|
752
|
+
},
|
|
753
|
+
"background_tasks": {
|
|
754
|
+
"description": "The pane's unresolved background tasks as its own extension publishes\nthem, each an `<id>:<phase>` entry. The awaited facts are the union of\nthe owner's awaited items and these ids, because neither publisher can\nexpress the whole pane alone.",
|
|
755
|
+
"items": {
|
|
756
|
+
"type": "string"
|
|
757
|
+
},
|
|
758
|
+
"type": "array"
|
|
759
|
+
},
|
|
760
|
+
"context_usage": {
|
|
761
|
+
"description": "The percentage a Herdr token states, percent sign included. It carries no\ncounts, so it is never presented as a typed window.",
|
|
762
|
+
"type": [
|
|
763
|
+
"string",
|
|
764
|
+
"null"
|
|
765
|
+
]
|
|
766
|
+
},
|
|
767
|
+
"context_window": {
|
|
768
|
+
"anyOf": [
|
|
769
|
+
{
|
|
770
|
+
"$ref": "#/$defs/ContextWindow"
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"type": "null"
|
|
774
|
+
}
|
|
775
|
+
],
|
|
776
|
+
"description": "The context window a registry publisher reports as counts."
|
|
777
|
+
},
|
|
778
|
+
"definition": {
|
|
779
|
+
"description": "The agent definition a pane reports as its display agent.",
|
|
780
|
+
"type": [
|
|
781
|
+
"string",
|
|
782
|
+
"null"
|
|
783
|
+
]
|
|
784
|
+
},
|
|
785
|
+
"label": {
|
|
786
|
+
"description": "A managed worker's runtime label: the name its owner and its siblings\nuse for it, and the only faithful source for a worker's name. Herdr's\nown agent name truncates it and its title welds it to the task.",
|
|
787
|
+
"type": [
|
|
788
|
+
"string",
|
|
789
|
+
"null"
|
|
790
|
+
]
|
|
791
|
+
},
|
|
792
|
+
"last_outcome": {
|
|
793
|
+
"description": "The owner's last outcome for the assignment, as it published it.",
|
|
794
|
+
"type": [
|
|
795
|
+
"string",
|
|
796
|
+
"null"
|
|
797
|
+
]
|
|
798
|
+
},
|
|
799
|
+
"managed_metadata": {
|
|
800
|
+
"description": "Whether this pane's tokens carried any `pi_herdsman_*` key.\n\nPresence, not readability: the owner's metadata is what makes a Pi pane\nmanaged, so a key whose value this build cannot read still counts. The\ndecoder sets this at the adapter boundary, where the raw token map is,\nbecause the named fields below discard keys this version does not know.",
|
|
801
|
+
"type": "boolean"
|
|
802
|
+
},
|
|
803
|
+
"model": {
|
|
804
|
+
"description": "The session's model identity as published, provider prefix included.",
|
|
805
|
+
"type": [
|
|
806
|
+
"string",
|
|
807
|
+
"null"
|
|
808
|
+
]
|
|
809
|
+
},
|
|
810
|
+
"name": {
|
|
811
|
+
"description": "A lead's published session name.",
|
|
812
|
+
"type": [
|
|
813
|
+
"string",
|
|
814
|
+
"null"
|
|
815
|
+
]
|
|
816
|
+
},
|
|
817
|
+
"provider": {
|
|
818
|
+
"type": [
|
|
819
|
+
"string",
|
|
820
|
+
"null"
|
|
821
|
+
]
|
|
822
|
+
},
|
|
823
|
+
"request": {
|
|
824
|
+
"description": "The active assignment's request identity.",
|
|
825
|
+
"type": [
|
|
826
|
+
"string",
|
|
827
|
+
"null"
|
|
828
|
+
]
|
|
829
|
+
},
|
|
830
|
+
"role": {
|
|
831
|
+
"description": "The role the agent runs as: a lead role, or a worker's agent definition.",
|
|
832
|
+
"type": [
|
|
833
|
+
"string",
|
|
834
|
+
"null"
|
|
835
|
+
]
|
|
836
|
+
},
|
|
837
|
+
"run": {
|
|
838
|
+
"description": "A managed worker's run identity.",
|
|
839
|
+
"type": [
|
|
840
|
+
"string",
|
|
841
|
+
"null"
|
|
842
|
+
]
|
|
843
|
+
},
|
|
844
|
+
"session_name": {
|
|
845
|
+
"description": "The source's human session name.",
|
|
846
|
+
"type": [
|
|
847
|
+
"string",
|
|
848
|
+
"null"
|
|
849
|
+
]
|
|
850
|
+
},
|
|
851
|
+
"state": {
|
|
852
|
+
"anyOf": [
|
|
853
|
+
{
|
|
854
|
+
"$ref": "#/$defs/SemanticState"
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
"type": "null"
|
|
858
|
+
}
|
|
859
|
+
],
|
|
860
|
+
"description": "The owner's projection of this agent's state, while it is published."
|
|
861
|
+
},
|
|
862
|
+
"thinking": {
|
|
863
|
+
"type": [
|
|
864
|
+
"string",
|
|
865
|
+
"null"
|
|
866
|
+
]
|
|
867
|
+
},
|
|
868
|
+
"waiting_reason": {
|
|
869
|
+
"description": "Why the owner says the assignment is waiting, as it published it.",
|
|
870
|
+
"type": [
|
|
871
|
+
"string",
|
|
872
|
+
"null"
|
|
873
|
+
]
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
"required": [
|
|
877
|
+
"role",
|
|
878
|
+
"name",
|
|
879
|
+
"definition",
|
|
880
|
+
"label",
|
|
881
|
+
"run",
|
|
882
|
+
"managed_metadata",
|
|
883
|
+
"request",
|
|
884
|
+
"ask",
|
|
885
|
+
"waiting_reason",
|
|
886
|
+
"last_outcome",
|
|
887
|
+
"assignment",
|
|
888
|
+
"assigned_started_unix_ms",
|
|
889
|
+
"assigned_for",
|
|
890
|
+
"state",
|
|
891
|
+
"model",
|
|
892
|
+
"provider",
|
|
893
|
+
"thinking",
|
|
894
|
+
"context_usage",
|
|
895
|
+
"context_window",
|
|
896
|
+
"session_name",
|
|
897
|
+
"awaited",
|
|
898
|
+
"background_running",
|
|
899
|
+
"background_tasks",
|
|
900
|
+
"background_started"
|
|
901
|
+
],
|
|
902
|
+
"type": "object"
|
|
903
|
+
},
|
|
904
|
+
"Kind": {
|
|
905
|
+
"description": "What a container is in the hierarchy.",
|
|
906
|
+
"enum": [
|
|
907
|
+
"workspace",
|
|
908
|
+
"tab",
|
|
909
|
+
"pane"
|
|
910
|
+
],
|
|
911
|
+
"type": "string"
|
|
912
|
+
},
|
|
913
|
+
"LifecycleObservation": {
|
|
914
|
+
"additionalProperties": false,
|
|
915
|
+
"description": "Public lifecycle identity carried into the display projection.",
|
|
916
|
+
"properties": {
|
|
917
|
+
"bound_registration_id": {
|
|
918
|
+
"type": [
|
|
919
|
+
"string",
|
|
920
|
+
"null"
|
|
921
|
+
]
|
|
922
|
+
},
|
|
923
|
+
"process": {
|
|
924
|
+
"anyOf": [
|
|
925
|
+
{
|
|
926
|
+
"$ref": "#/$defs/ProcessIdentity"
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
"type": "null"
|
|
930
|
+
}
|
|
931
|
+
]
|
|
932
|
+
},
|
|
933
|
+
"session": {
|
|
934
|
+
"type": [
|
|
935
|
+
"string",
|
|
936
|
+
"null"
|
|
937
|
+
]
|
|
938
|
+
},
|
|
939
|
+
"state": {
|
|
940
|
+
"$ref": "#/$defs/State"
|
|
941
|
+
},
|
|
942
|
+
"subject_id": {
|
|
943
|
+
"type": "string"
|
|
944
|
+
},
|
|
945
|
+
"successor": {
|
|
946
|
+
"type": [
|
|
947
|
+
"string",
|
|
948
|
+
"null"
|
|
949
|
+
]
|
|
950
|
+
}
|
|
951
|
+
},
|
|
952
|
+
"required": [
|
|
953
|
+
"subject_id",
|
|
954
|
+
"bound_registration_id",
|
|
955
|
+
"process",
|
|
956
|
+
"state",
|
|
957
|
+
"session",
|
|
958
|
+
"successor"
|
|
959
|
+
],
|
|
960
|
+
"type": "object"
|
|
961
|
+
},
|
|
962
|
+
"Lineage": {
|
|
963
|
+
"additionalProperties": false,
|
|
964
|
+
"description": "Explicit ownership lineage from `pi_herdsman_session` /\n`pi_herdsman_parent_session` UUID metadata.\n\nUsed only for ownership joins (worker → owner). Lineage is never used as\nsession identity, and absent or malformed tokens yield no lineage at all.",
|
|
965
|
+
"properties": {
|
|
966
|
+
"parent": {
|
|
967
|
+
"anyOf": [
|
|
968
|
+
{
|
|
969
|
+
"$ref": "#/$defs/SessionUuid"
|
|
970
|
+
},
|
|
971
|
+
{
|
|
972
|
+
"type": "null"
|
|
973
|
+
}
|
|
974
|
+
]
|
|
975
|
+
},
|
|
976
|
+
"session": {
|
|
977
|
+
"$ref": "#/$defs/SessionUuid"
|
|
978
|
+
}
|
|
979
|
+
},
|
|
980
|
+
"required": [
|
|
981
|
+
"session",
|
|
982
|
+
"parent"
|
|
983
|
+
],
|
|
984
|
+
"type": "object"
|
|
985
|
+
},
|
|
986
|
+
"LocalFacts": {
|
|
987
|
+
"additionalProperties": false,
|
|
988
|
+
"description": "What this machine knows about the process holding a pane's foreground,\nbeyond what the runtime reports.",
|
|
989
|
+
"properties": {
|
|
990
|
+
"binary": {
|
|
991
|
+
"$ref": "#/$defs/BinaryIdentity",
|
|
992
|
+
"description": "How the foreground program's executable compares with the installed\nprogram of its own name or package family."
|
|
993
|
+
},
|
|
994
|
+
"resources": {
|
|
995
|
+
"anyOf": [
|
|
996
|
+
{
|
|
997
|
+
"$ref": "#/$defs/ProcessResources"
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
"type": "null"
|
|
1001
|
+
}
|
|
1002
|
+
],
|
|
1003
|
+
"description": "What the process is using, from the sample taken for it. `None` when no\nsample was taken: this machine has no reader for that process, the\nprocess could not be read, or the platform cannot sample at all. A\nreading from an earlier refresh is never carried here."
|
|
1004
|
+
},
|
|
1005
|
+
"running_for": {
|
|
1006
|
+
"description": "How long the process has been alive, measured from its own start time\nrather than from when Radar first saw it.",
|
|
1007
|
+
"format": "uint64",
|
|
1008
|
+
"minimum": 0,
|
|
1009
|
+
"type": [
|
|
1010
|
+
"integer",
|
|
1011
|
+
"null"
|
|
1012
|
+
]
|
|
1013
|
+
},
|
|
1014
|
+
"terminal": {
|
|
1015
|
+
"$ref": "#/$defs/TerminalMode",
|
|
1016
|
+
"description": "What it has done to the terminal."
|
|
1017
|
+
}
|
|
1018
|
+
},
|
|
1019
|
+
"required": [
|
|
1020
|
+
"running_for",
|
|
1021
|
+
"terminal",
|
|
1022
|
+
"binary",
|
|
1023
|
+
"resources"
|
|
1024
|
+
],
|
|
1025
|
+
"type": "object"
|
|
1026
|
+
},
|
|
1027
|
+
"Location": {
|
|
1028
|
+
"additionalProperties": false,
|
|
1029
|
+
"description": "Connector-scoped runtime location: Herdr workspace, tab and pane identifiers.\n\nPane identity is a runtime location detail; it is never an agent identity.",
|
|
1030
|
+
"properties": {
|
|
1031
|
+
"pane_id": {
|
|
1032
|
+
"type": "string"
|
|
1033
|
+
},
|
|
1034
|
+
"tab_id": {
|
|
1035
|
+
"type": "string"
|
|
1036
|
+
},
|
|
1037
|
+
"workspace_id": {
|
|
1038
|
+
"type": "string"
|
|
1039
|
+
}
|
|
1040
|
+
},
|
|
1041
|
+
"required": [
|
|
1042
|
+
"workspace_id",
|
|
1043
|
+
"tab_id",
|
|
1044
|
+
"pane_id"
|
|
1045
|
+
],
|
|
1046
|
+
"type": "object"
|
|
1047
|
+
},
|
|
1048
|
+
"ManagedMetadata": {
|
|
1049
|
+
"additionalProperties": false,
|
|
1050
|
+
"description": "One durable launch subject. The correlation is a private credential and is\nspent at capture; no public read returns it.",
|
|
1051
|
+
"properties": {
|
|
1052
|
+
"label": {
|
|
1053
|
+
"type": [
|
|
1054
|
+
"string",
|
|
1055
|
+
"null"
|
|
1056
|
+
]
|
|
1057
|
+
},
|
|
1058
|
+
"owner": {
|
|
1059
|
+
"type": [
|
|
1060
|
+
"string",
|
|
1061
|
+
"null"
|
|
1062
|
+
]
|
|
1063
|
+
},
|
|
1064
|
+
"parent_subject_id": {
|
|
1065
|
+
"type": [
|
|
1066
|
+
"string",
|
|
1067
|
+
"null"
|
|
1068
|
+
]
|
|
1069
|
+
},
|
|
1070
|
+
"role": {
|
|
1071
|
+
"type": [
|
|
1072
|
+
"string",
|
|
1073
|
+
"null"
|
|
1074
|
+
]
|
|
1075
|
+
},
|
|
1076
|
+
"run": {
|
|
1077
|
+
"type": [
|
|
1078
|
+
"string",
|
|
1079
|
+
"null"
|
|
1080
|
+
]
|
|
1081
|
+
}
|
|
1082
|
+
},
|
|
1083
|
+
"type": "object"
|
|
1084
|
+
},
|
|
1085
|
+
"ManagedSubject": {
|
|
1086
|
+
"additionalProperties": false,
|
|
1087
|
+
"description": "A daemon-owned process lifecycle target, joined to one registration by exact\nagent id and process birth identity.",
|
|
1088
|
+
"properties": {
|
|
1089
|
+
"child_close": {
|
|
1090
|
+
"anyOf": [
|
|
1091
|
+
{
|
|
1092
|
+
"$ref": "#/$defs/ChildCloseTarget"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
"type": "null"
|
|
1096
|
+
}
|
|
1097
|
+
]
|
|
1098
|
+
},
|
|
1099
|
+
"identity_unresolved": {
|
|
1100
|
+
"type": "boolean"
|
|
1101
|
+
},
|
|
1102
|
+
"metadata": {
|
|
1103
|
+
"$ref": "#/$defs/ManagedMetadata"
|
|
1104
|
+
},
|
|
1105
|
+
"process": {
|
|
1106
|
+
"$ref": "#/$defs/ProcessIdentity"
|
|
1107
|
+
},
|
|
1108
|
+
"session": {
|
|
1109
|
+
"type": [
|
|
1110
|
+
"string",
|
|
1111
|
+
"null"
|
|
1112
|
+
]
|
|
1113
|
+
},
|
|
1114
|
+
"state": {
|
|
1115
|
+
"$ref": "#/$defs/State"
|
|
1116
|
+
},
|
|
1117
|
+
"subject_id": {
|
|
1118
|
+
"type": "string"
|
|
1119
|
+
},
|
|
1120
|
+
"successor": {
|
|
1121
|
+
"type": [
|
|
1122
|
+
"string",
|
|
1123
|
+
"null"
|
|
1124
|
+
]
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
"required": [
|
|
1128
|
+
"subject_id",
|
|
1129
|
+
"process",
|
|
1130
|
+
"identity_unresolved",
|
|
1131
|
+
"metadata",
|
|
1132
|
+
"child_close",
|
|
1133
|
+
"state",
|
|
1134
|
+
"session",
|
|
1135
|
+
"successor"
|
|
1136
|
+
],
|
|
1137
|
+
"type": "object"
|
|
1138
|
+
},
|
|
1139
|
+
"ObservationFreshness": {
|
|
1140
|
+
"description": "Source freshness included in an observation response.",
|
|
1141
|
+
"oneOf": [
|
|
1142
|
+
{
|
|
1143
|
+
"enum": [
|
|
1144
|
+
"pending",
|
|
1145
|
+
"current"
|
|
1146
|
+
],
|
|
1147
|
+
"type": "string"
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
"additionalProperties": false,
|
|
1151
|
+
"properties": {
|
|
1152
|
+
"stale": {
|
|
1153
|
+
"additionalProperties": false,
|
|
1154
|
+
"properties": {
|
|
1155
|
+
"diagnostic": {
|
|
1156
|
+
"type": "string"
|
|
1157
|
+
}
|
|
1158
|
+
},
|
|
1159
|
+
"required": [
|
|
1160
|
+
"diagnostic"
|
|
1161
|
+
],
|
|
1162
|
+
"type": "object"
|
|
1163
|
+
}
|
|
1164
|
+
},
|
|
1165
|
+
"required": [
|
|
1166
|
+
"stale"
|
|
1167
|
+
],
|
|
1168
|
+
"type": "object"
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
"additionalProperties": false,
|
|
1172
|
+
"properties": {
|
|
1173
|
+
"unavailable": {
|
|
1174
|
+
"additionalProperties": false,
|
|
1175
|
+
"properties": {
|
|
1176
|
+
"diagnostic": {
|
|
1177
|
+
"type": "string"
|
|
1178
|
+
}
|
|
1179
|
+
},
|
|
1180
|
+
"required": [
|
|
1181
|
+
"diagnostic"
|
|
1182
|
+
],
|
|
1183
|
+
"type": "object"
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
"required": [
|
|
1187
|
+
"unavailable"
|
|
1188
|
+
],
|
|
1189
|
+
"type": "object"
|
|
1190
|
+
}
|
|
1191
|
+
]
|
|
1192
|
+
},
|
|
1193
|
+
"ObservationProjection": {
|
|
1194
|
+
"additionalProperties": false,
|
|
1195
|
+
"description": "Public observation projection. The sampler's mutable state remains private;\nthis DTO names the fields the daemon publishes without serializing that state\ntype directly.",
|
|
1196
|
+
"properties": {
|
|
1197
|
+
"awaiting_evidence": {
|
|
1198
|
+
"items": {
|
|
1199
|
+
"type": "string"
|
|
1200
|
+
},
|
|
1201
|
+
"type": "array",
|
|
1202
|
+
"uniqueItems": true
|
|
1203
|
+
},
|
|
1204
|
+
"containment": {
|
|
1205
|
+
"additionalProperties": {
|
|
1206
|
+
"$ref": "#/$defs/RetainedObservation"
|
|
1207
|
+
},
|
|
1208
|
+
"type": "object"
|
|
1209
|
+
},
|
|
1210
|
+
"foreground": {
|
|
1211
|
+
"additionalProperties": {
|
|
1212
|
+
"$ref": "#/$defs/ForegroundEvidence"
|
|
1213
|
+
},
|
|
1214
|
+
"type": "object"
|
|
1215
|
+
},
|
|
1216
|
+
"inventory": {
|
|
1217
|
+
"anyOf": [
|
|
1218
|
+
{
|
|
1219
|
+
"$ref": "#/$defs/FleetObservation"
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
"type": "null"
|
|
1223
|
+
}
|
|
1224
|
+
]
|
|
1225
|
+
},
|
|
1226
|
+
"registry": {
|
|
1227
|
+
"$ref": "#/$defs/ObservationFreshness",
|
|
1228
|
+
"default": "pending"
|
|
1229
|
+
},
|
|
1230
|
+
"retained": {
|
|
1231
|
+
"additionalProperties": {
|
|
1232
|
+
"$ref": "#/$defs/RetainedObservation"
|
|
1233
|
+
},
|
|
1234
|
+
"type": "object"
|
|
1235
|
+
},
|
|
1236
|
+
"source": {
|
|
1237
|
+
"$ref": "#/$defs/ObservationFreshness"
|
|
1238
|
+
}
|
|
1239
|
+
},
|
|
1240
|
+
"required": [
|
|
1241
|
+
"inventory",
|
|
1242
|
+
"source",
|
|
1243
|
+
"registry",
|
|
1244
|
+
"retained",
|
|
1245
|
+
"containment",
|
|
1246
|
+
"awaiting_evidence",
|
|
1247
|
+
"foreground"
|
|
1248
|
+
],
|
|
1249
|
+
"type": "object"
|
|
1250
|
+
},
|
|
1251
|
+
"ObservationSource": {
|
|
1252
|
+
"additionalProperties": false,
|
|
1253
|
+
"description": "One source's freshness in a snapshot revision.",
|
|
1254
|
+
"properties": {
|
|
1255
|
+
"last_success_at": {
|
|
1256
|
+
"type": [
|
|
1257
|
+
"string",
|
|
1258
|
+
"null"
|
|
1259
|
+
]
|
|
1260
|
+
},
|
|
1261
|
+
"name": {
|
|
1262
|
+
"type": "string"
|
|
1263
|
+
},
|
|
1264
|
+
"state": {
|
|
1265
|
+
"$ref": "#/$defs/ObservationFreshness"
|
|
1266
|
+
}
|
|
1267
|
+
},
|
|
1268
|
+
"required": [
|
|
1269
|
+
"name",
|
|
1270
|
+
"state",
|
|
1271
|
+
"last_success_at"
|
|
1272
|
+
],
|
|
1273
|
+
"type": "object"
|
|
1274
|
+
},
|
|
1275
|
+
"Outcome": {
|
|
1276
|
+
"additionalProperties": false,
|
|
1277
|
+
"description": "A turn outcome kept distinct from current activity.",
|
|
1278
|
+
"properties": {
|
|
1279
|
+
"detail": {
|
|
1280
|
+
"type": [
|
|
1281
|
+
"string",
|
|
1282
|
+
"null"
|
|
1283
|
+
]
|
|
1284
|
+
},
|
|
1285
|
+
"result": {
|
|
1286
|
+
"description": "Producer vocabulary is deliberately free-form.",
|
|
1287
|
+
"type": "string"
|
|
1288
|
+
}
|
|
1289
|
+
},
|
|
1290
|
+
"required": [
|
|
1291
|
+
"result"
|
|
1292
|
+
],
|
|
1293
|
+
"type": "object"
|
|
1294
|
+
},
|
|
1295
|
+
"Pane": {
|
|
1296
|
+
"additionalProperties": false,
|
|
1297
|
+
"description": "A runtime pane: location plus optional display text.\n\n`label` is the pane's declared label, `title` its stripped terminal title;\neither may be absent, and [`Pane::display_name`] defines the fallback used\nby presentation rows.",
|
|
1298
|
+
"properties": {
|
|
1299
|
+
"current_path": {
|
|
1300
|
+
"description": "Current tmux pane directory, used as the target for a new launch.",
|
|
1301
|
+
"type": [
|
|
1302
|
+
"string",
|
|
1303
|
+
"null"
|
|
1304
|
+
]
|
|
1305
|
+
},
|
|
1306
|
+
"label": {
|
|
1307
|
+
"type": [
|
|
1308
|
+
"string",
|
|
1309
|
+
"null"
|
|
1310
|
+
]
|
|
1311
|
+
},
|
|
1312
|
+
"location": {
|
|
1313
|
+
"$ref": "#/$defs/Location"
|
|
1314
|
+
},
|
|
1315
|
+
"title": {
|
|
1316
|
+
"type": [
|
|
1317
|
+
"string",
|
|
1318
|
+
"null"
|
|
1319
|
+
]
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
"required": [
|
|
1323
|
+
"location",
|
|
1324
|
+
"label",
|
|
1325
|
+
"title"
|
|
1326
|
+
],
|
|
1327
|
+
"type": "object"
|
|
1328
|
+
},
|
|
1329
|
+
"ProcessEvidence": {
|
|
1330
|
+
"additionalProperties": false,
|
|
1331
|
+
"description": "The process evidence `agent.list` serves beside a registration. Only the\nclaimed birth identity is read here; the registry's own verdict is not used\nto join, because a join needs the claim to match the live foreground.",
|
|
1332
|
+
"properties": {
|
|
1333
|
+
"claim": {
|
|
1334
|
+
"anyOf": [
|
|
1335
|
+
{
|
|
1336
|
+
"$ref": "#/$defs/ProcessIdentity"
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
"type": "null"
|
|
1340
|
+
}
|
|
1341
|
+
],
|
|
1342
|
+
"default": null
|
|
1343
|
+
}
|
|
1344
|
+
},
|
|
1345
|
+
"required": [
|
|
1346
|
+
"claim"
|
|
1347
|
+
],
|
|
1348
|
+
"type": "object"
|
|
1349
|
+
},
|
|
1350
|
+
"ProcessIdentity": {
|
|
1351
|
+
"additionalProperties": false,
|
|
1352
|
+
"description": "Which process incarnation a sample belongs to.\n\nThe kernel reuses process ids, so a pid does not name a process: one\nincarnation is the boot it started in, its pid, and when it started. Those\nare what make two readings comparable — counters may only be subtracted\nfrom an earlier reading of the same identity, and a difference taken across\ntwo of them measures neither process.",
|
|
1353
|
+
"properties": {
|
|
1354
|
+
"boot_id": {
|
|
1355
|
+
"description": "The boot this process started in, as the kernel reports it.",
|
|
1356
|
+
"type": "string"
|
|
1357
|
+
},
|
|
1358
|
+
"pid": {
|
|
1359
|
+
"description": "The process id, unique within one boot and one incarnation of it.",
|
|
1360
|
+
"format": "int32",
|
|
1361
|
+
"type": "integer"
|
|
1362
|
+
},
|
|
1363
|
+
"start_ticks": {
|
|
1364
|
+
"description": "Start time since boot, in clock ticks (`starttime` in\n`/proc/<pid>/stat`): the kernel's stamp for this incarnation.",
|
|
1365
|
+
"format": "uint64",
|
|
1366
|
+
"maximum": 9007199254740991,
|
|
1367
|
+
"minimum": 0,
|
|
1368
|
+
"type": "integer"
|
|
1369
|
+
}
|
|
1370
|
+
},
|
|
1371
|
+
"required": [
|
|
1372
|
+
"boot_id",
|
|
1373
|
+
"pid",
|
|
1374
|
+
"start_ticks"
|
|
1375
|
+
],
|
|
1376
|
+
"type": "object"
|
|
1377
|
+
},
|
|
1378
|
+
"ProcessResources": {
|
|
1379
|
+
"additionalProperties": false,
|
|
1380
|
+
"description": "What one process is using, as the collector sampled it.\n\nThese are the resources of that process and of nothing larger: a build\nrunning beneath a pane is a descendant and is summed separately in\n[`Self::descendants`], and nothing here says who owns the process, what work\nit serves, or whether it is progressing. Every field comes from one read of\nthe process, so a sample never mixes two incarnations; RSS is that process's\nresident set, in which pages shared with another process are counted here as\nwell.",
|
|
1381
|
+
"properties": {
|
|
1382
|
+
"cpu": {
|
|
1383
|
+
"anyOf": [
|
|
1384
|
+
{
|
|
1385
|
+
"$ref": "#/$defs/CpuPercent"
|
|
1386
|
+
},
|
|
1387
|
+
{
|
|
1388
|
+
"type": "null"
|
|
1389
|
+
}
|
|
1390
|
+
],
|
|
1391
|
+
"description": "Interval CPU since the previous sample of this same identity. `None`\nuntil such a sample exists, and whenever the interval cannot be\nmeasured."
|
|
1392
|
+
},
|
|
1393
|
+
"descendants": {
|
|
1394
|
+
"$ref": "#/$defs/DescendantResources",
|
|
1395
|
+
"description": "What the processes beneath this one are using, as the refresh's scan\nobserved them. Never merged with the fields above: a build's work is not\nits launcher's."
|
|
1396
|
+
},
|
|
1397
|
+
"identity": {
|
|
1398
|
+
"$ref": "#/$defs/ProcessIdentity",
|
|
1399
|
+
"description": "The incarnation these readings belong to."
|
|
1400
|
+
},
|
|
1401
|
+
"rss_bytes": {
|
|
1402
|
+
"description": "Resident set size in bytes. `None` when this machine cannot convert the\nkernel's page count.",
|
|
1403
|
+
"format": "uint64",
|
|
1404
|
+
"maximum": 9007199254740991,
|
|
1405
|
+
"minimum": 0,
|
|
1406
|
+
"type": [
|
|
1407
|
+
"integer",
|
|
1408
|
+
"null"
|
|
1409
|
+
]
|
|
1410
|
+
},
|
|
1411
|
+
"state": {
|
|
1412
|
+
"$ref": "#/$defs/ProcessState",
|
|
1413
|
+
"description": "The kernel's scheduler state when the sample was taken."
|
|
1414
|
+
}
|
|
1415
|
+
},
|
|
1416
|
+
"required": [
|
|
1417
|
+
"identity",
|
|
1418
|
+
"state",
|
|
1419
|
+
"rss_bytes",
|
|
1420
|
+
"cpu",
|
|
1421
|
+
"descendants"
|
|
1422
|
+
],
|
|
1423
|
+
"type": "object"
|
|
1424
|
+
},
|
|
1425
|
+
"ProcessState": {
|
|
1426
|
+
"description": "The scheduler state the kernel reports for a process.\n\nA state letter travels with every process and is observable, but it says\nonly what the scheduler is doing with it: a sleeping process may be waiting\non a socket or on nothing, and a zombie has already exited. It is not\nactivity, not progress and not a verdict on the work underneath.",
|
|
1427
|
+
"oneOf": [
|
|
1428
|
+
{
|
|
1429
|
+
"additionalProperties": false,
|
|
1430
|
+
"description": "Running, or waiting its turn on a CPU.",
|
|
1431
|
+
"properties": {
|
|
1432
|
+
"kind": {
|
|
1433
|
+
"const": "running",
|
|
1434
|
+
"type": "string"
|
|
1435
|
+
}
|
|
1436
|
+
},
|
|
1437
|
+
"required": [
|
|
1438
|
+
"kind"
|
|
1439
|
+
],
|
|
1440
|
+
"type": "object"
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"additionalProperties": false,
|
|
1444
|
+
"description": "Interruptible sleep: waiting, but wakeable.",
|
|
1445
|
+
"properties": {
|
|
1446
|
+
"kind": {
|
|
1447
|
+
"const": "sleeping",
|
|
1448
|
+
"type": "string"
|
|
1449
|
+
}
|
|
1450
|
+
},
|
|
1451
|
+
"required": [
|
|
1452
|
+
"kind"
|
|
1453
|
+
],
|
|
1454
|
+
"type": "object"
|
|
1455
|
+
},
|
|
1456
|
+
{
|
|
1457
|
+
"additionalProperties": false,
|
|
1458
|
+
"description": "Uninterruptible sleep, usually blocked in the kernel on I/O.",
|
|
1459
|
+
"properties": {
|
|
1460
|
+
"kind": {
|
|
1461
|
+
"const": "disk_sleep",
|
|
1462
|
+
"type": "string"
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
"required": [
|
|
1466
|
+
"kind"
|
|
1467
|
+
],
|
|
1468
|
+
"type": "object"
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
"additionalProperties": false,
|
|
1472
|
+
"description": "Stopped by a signal.",
|
|
1473
|
+
"properties": {
|
|
1474
|
+
"kind": {
|
|
1475
|
+
"const": "stopped",
|
|
1476
|
+
"type": "string"
|
|
1477
|
+
}
|
|
1478
|
+
},
|
|
1479
|
+
"required": [
|
|
1480
|
+
"kind"
|
|
1481
|
+
],
|
|
1482
|
+
"type": "object"
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"additionalProperties": false,
|
|
1486
|
+
"description": "Stopped because something is tracing it.",
|
|
1487
|
+
"properties": {
|
|
1488
|
+
"kind": {
|
|
1489
|
+
"const": "tracing_stop",
|
|
1490
|
+
"type": "string"
|
|
1491
|
+
}
|
|
1492
|
+
},
|
|
1493
|
+
"required": [
|
|
1494
|
+
"kind"
|
|
1495
|
+
],
|
|
1496
|
+
"type": "object"
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
"additionalProperties": false,
|
|
1500
|
+
"description": "Exited, not yet reaped by its parent.",
|
|
1501
|
+
"properties": {
|
|
1502
|
+
"kind": {
|
|
1503
|
+
"const": "zombie",
|
|
1504
|
+
"type": "string"
|
|
1505
|
+
}
|
|
1506
|
+
},
|
|
1507
|
+
"required": [
|
|
1508
|
+
"kind"
|
|
1509
|
+
],
|
|
1510
|
+
"type": "object"
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
"additionalProperties": false,
|
|
1514
|
+
"description": "Gone, or being torn down.",
|
|
1515
|
+
"properties": {
|
|
1516
|
+
"kind": {
|
|
1517
|
+
"const": "dead",
|
|
1518
|
+
"type": "string"
|
|
1519
|
+
}
|
|
1520
|
+
},
|
|
1521
|
+
"required": [
|
|
1522
|
+
"kind"
|
|
1523
|
+
],
|
|
1524
|
+
"type": "object"
|
|
1525
|
+
},
|
|
1526
|
+
{
|
|
1527
|
+
"additionalProperties": false,
|
|
1528
|
+
"description": "Idle in the kernel, below the scheduler's oldest run queue.",
|
|
1529
|
+
"properties": {
|
|
1530
|
+
"kind": {
|
|
1531
|
+
"const": "idle",
|
|
1532
|
+
"type": "string"
|
|
1533
|
+
}
|
|
1534
|
+
},
|
|
1535
|
+
"required": [
|
|
1536
|
+
"kind"
|
|
1537
|
+
],
|
|
1538
|
+
"type": "object"
|
|
1539
|
+
},
|
|
1540
|
+
{
|
|
1541
|
+
"additionalProperties": false,
|
|
1542
|
+
"description": "A state this kernel wrote that Radar does not name.",
|
|
1543
|
+
"properties": {
|
|
1544
|
+
"kind": {
|
|
1545
|
+
"const": "other",
|
|
1546
|
+
"type": "string"
|
|
1547
|
+
},
|
|
1548
|
+
"value": {
|
|
1549
|
+
"maxLength": 1,
|
|
1550
|
+
"minLength": 1,
|
|
1551
|
+
"type": "string"
|
|
1552
|
+
}
|
|
1553
|
+
},
|
|
1554
|
+
"required": [
|
|
1555
|
+
"kind",
|
|
1556
|
+
"value"
|
|
1557
|
+
],
|
|
1558
|
+
"type": "object"
|
|
1559
|
+
}
|
|
1560
|
+
]
|
|
1561
|
+
},
|
|
1562
|
+
"Provenance": {
|
|
1563
|
+
"description": "Who made the container.",
|
|
1564
|
+
"oneOf": [
|
|
1565
|
+
{
|
|
1566
|
+
"const": "created",
|
|
1567
|
+
"description": "This daemon created it, so its recipe and its reload are ours.",
|
|
1568
|
+
"type": "string"
|
|
1569
|
+
},
|
|
1570
|
+
{
|
|
1571
|
+
"const": "observed",
|
|
1572
|
+
"description": "Only observed in the backend. Never recorded as ours, never reloaded\nfrom an invented recipe.",
|
|
1573
|
+
"type": "string"
|
|
1574
|
+
}
|
|
1575
|
+
]
|
|
1576
|
+
},
|
|
1577
|
+
"PublicChannelFacts": {
|
|
1578
|
+
"additionalProperties": false,
|
|
1579
|
+
"description": "A channel read for a reader that is not its writer: the same identity,\nfreshness and report facts as [`PublicChannel`], with the fencing handle\ndropped because it is a credential rather than a fact.",
|
|
1580
|
+
"properties": {
|
|
1581
|
+
"channel": {
|
|
1582
|
+
"$ref": "#/$defs/Channel"
|
|
1583
|
+
},
|
|
1584
|
+
"registration_id": {
|
|
1585
|
+
"type": "string"
|
|
1586
|
+
},
|
|
1587
|
+
"snapshot": {
|
|
1588
|
+
"anyOf": [
|
|
1589
|
+
{
|
|
1590
|
+
"$ref": "#/$defs/PublicSnapshotFacts"
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"type": "null"
|
|
1594
|
+
}
|
|
1595
|
+
]
|
|
1596
|
+
},
|
|
1597
|
+
"version": {
|
|
1598
|
+
"format": "uint32",
|
|
1599
|
+
"minimum": 0,
|
|
1600
|
+
"type": "integer"
|
|
1601
|
+
},
|
|
1602
|
+
"writer": {
|
|
1603
|
+
"$ref": "#/$defs/PublicWriterFacts"
|
|
1604
|
+
}
|
|
1605
|
+
},
|
|
1606
|
+
"required": [
|
|
1607
|
+
"version",
|
|
1608
|
+
"registration_id",
|
|
1609
|
+
"channel",
|
|
1610
|
+
"writer"
|
|
1611
|
+
],
|
|
1612
|
+
"type": "object"
|
|
1613
|
+
},
|
|
1614
|
+
"PublicContainer": {
|
|
1615
|
+
"additionalProperties": false,
|
|
1616
|
+
"description": "One container as a consumer reads it.",
|
|
1617
|
+
"properties": {
|
|
1618
|
+
"binding": {
|
|
1619
|
+
"anyOf": [
|
|
1620
|
+
{
|
|
1621
|
+
"$ref": "#/$defs/Binding2"
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
"type": "null"
|
|
1625
|
+
}
|
|
1626
|
+
]
|
|
1627
|
+
},
|
|
1628
|
+
"container_id": {
|
|
1629
|
+
"type": "string"
|
|
1630
|
+
},
|
|
1631
|
+
"created_at": {
|
|
1632
|
+
"type": "string"
|
|
1633
|
+
},
|
|
1634
|
+
"created_by": {
|
|
1635
|
+
"description": "The operation that created it, for a caller reconciling its own requests.",
|
|
1636
|
+
"type": [
|
|
1637
|
+
"string",
|
|
1638
|
+
"null"
|
|
1639
|
+
]
|
|
1640
|
+
},
|
|
1641
|
+
"kind": {
|
|
1642
|
+
"$ref": "#/$defs/Kind"
|
|
1643
|
+
},
|
|
1644
|
+
"label": {
|
|
1645
|
+
"type": [
|
|
1646
|
+
"string",
|
|
1647
|
+
"null"
|
|
1648
|
+
]
|
|
1649
|
+
},
|
|
1650
|
+
"observed_at": {
|
|
1651
|
+
"type": [
|
|
1652
|
+
"string",
|
|
1653
|
+
"null"
|
|
1654
|
+
]
|
|
1655
|
+
},
|
|
1656
|
+
"parent": {
|
|
1657
|
+
"type": [
|
|
1658
|
+
"string",
|
|
1659
|
+
"null"
|
|
1660
|
+
]
|
|
1661
|
+
},
|
|
1662
|
+
"provenance": {
|
|
1663
|
+
"$ref": "#/$defs/Provenance"
|
|
1664
|
+
},
|
|
1665
|
+
"recipe": {
|
|
1666
|
+
"description": "Whether a recipe is held for this container's pane, so a caller knows the\nslot can be reloaded without reading private storage.",
|
|
1667
|
+
"type": "boolean"
|
|
1668
|
+
},
|
|
1669
|
+
"removed_at": {
|
|
1670
|
+
"type": [
|
|
1671
|
+
"string",
|
|
1672
|
+
"null"
|
|
1673
|
+
]
|
|
1674
|
+
},
|
|
1675
|
+
"unresolved": {
|
|
1676
|
+
"type": [
|
|
1677
|
+
"string",
|
|
1678
|
+
"null"
|
|
1679
|
+
]
|
|
1680
|
+
}
|
|
1681
|
+
},
|
|
1682
|
+
"required": [
|
|
1683
|
+
"container_id",
|
|
1684
|
+
"kind",
|
|
1685
|
+
"parent",
|
|
1686
|
+
"label",
|
|
1687
|
+
"created_by",
|
|
1688
|
+
"recipe",
|
|
1689
|
+
"provenance",
|
|
1690
|
+
"binding",
|
|
1691
|
+
"created_at",
|
|
1692
|
+
"observed_at",
|
|
1693
|
+
"unresolved",
|
|
1694
|
+
"removed_at"
|
|
1695
|
+
],
|
|
1696
|
+
"type": "object"
|
|
1697
|
+
},
|
|
1698
|
+
"PublicContext": {
|
|
1699
|
+
"additionalProperties": false,
|
|
1700
|
+
"description": "One agent record's context as a client reads it. A `None` read of this whole\nrecord means never published; a present record with a null session means no\ncurrent session.",
|
|
1701
|
+
"properties": {
|
|
1702
|
+
"context": {
|
|
1703
|
+
"$ref": "#/$defs/PublicSession"
|
|
1704
|
+
},
|
|
1705
|
+
"registration_id": {
|
|
1706
|
+
"type": "string"
|
|
1707
|
+
},
|
|
1708
|
+
"version": {
|
|
1709
|
+
"format": "uint32",
|
|
1710
|
+
"minimum": 0,
|
|
1711
|
+
"type": "integer"
|
|
1712
|
+
},
|
|
1713
|
+
"writer": {
|
|
1714
|
+
"$ref": "#/$defs/PublicWriterFacts"
|
|
1715
|
+
}
|
|
1716
|
+
},
|
|
1717
|
+
"required": [
|
|
1718
|
+
"version",
|
|
1719
|
+
"registration_id",
|
|
1720
|
+
"writer",
|
|
1721
|
+
"context"
|
|
1722
|
+
],
|
|
1723
|
+
"type": "object"
|
|
1724
|
+
},
|
|
1725
|
+
"PublicLaunch": {
|
|
1726
|
+
"additionalProperties": false,
|
|
1727
|
+
"description": "What a public read says about private launch information: that something is\nheld, and which revision of it.",
|
|
1728
|
+
"properties": {
|
|
1729
|
+
"available": {
|
|
1730
|
+
"type": "boolean"
|
|
1731
|
+
},
|
|
1732
|
+
"revision": {
|
|
1733
|
+
"type": [
|
|
1734
|
+
"string",
|
|
1735
|
+
"null"
|
|
1736
|
+
]
|
|
1737
|
+
}
|
|
1738
|
+
},
|
|
1739
|
+
"required": [
|
|
1740
|
+
"available"
|
|
1741
|
+
],
|
|
1742
|
+
"type": "object"
|
|
1743
|
+
},
|
|
1744
|
+
"PublicRegistration": {
|
|
1745
|
+
"additionalProperties": false,
|
|
1746
|
+
"description": "A registration as a client reads it. The private launch fields are absent by\nconstruction, not by redaction: there is no field here to forget to strip.",
|
|
1747
|
+
"properties": {
|
|
1748
|
+
"incarnation": {
|
|
1749
|
+
"type": "string"
|
|
1750
|
+
},
|
|
1751
|
+
"label": {
|
|
1752
|
+
"type": [
|
|
1753
|
+
"string",
|
|
1754
|
+
"null"
|
|
1755
|
+
]
|
|
1756
|
+
},
|
|
1757
|
+
"launch": {
|
|
1758
|
+
"$ref": "#/$defs/PublicLaunch"
|
|
1759
|
+
},
|
|
1760
|
+
"location": {
|
|
1761
|
+
"anyOf": [
|
|
1762
|
+
{
|
|
1763
|
+
"$ref": "#/$defs/RegistryLocation"
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
"type": "null"
|
|
1767
|
+
}
|
|
1768
|
+
]
|
|
1769
|
+
},
|
|
1770
|
+
"owner": {
|
|
1771
|
+
"type": [
|
|
1772
|
+
"string",
|
|
1773
|
+
"null"
|
|
1774
|
+
]
|
|
1775
|
+
},
|
|
1776
|
+
"process_claimed": {
|
|
1777
|
+
"description": "Whether a process identity was supplied. Its verification is a separate\nanswer and is never asserted by this record.",
|
|
1778
|
+
"type": "boolean"
|
|
1779
|
+
},
|
|
1780
|
+
"registered_at": {
|
|
1781
|
+
"type": "string"
|
|
1782
|
+
},
|
|
1783
|
+
"registration_id": {
|
|
1784
|
+
"type": "string"
|
|
1785
|
+
},
|
|
1786
|
+
"run": {
|
|
1787
|
+
"type": [
|
|
1788
|
+
"string",
|
|
1789
|
+
"null"
|
|
1790
|
+
]
|
|
1791
|
+
},
|
|
1792
|
+
"session": {
|
|
1793
|
+
"type": [
|
|
1794
|
+
"string",
|
|
1795
|
+
"null"
|
|
1796
|
+
]
|
|
1797
|
+
},
|
|
1798
|
+
"source": {
|
|
1799
|
+
"type": "string"
|
|
1800
|
+
},
|
|
1801
|
+
"version": {
|
|
1802
|
+
"format": "uint32",
|
|
1803
|
+
"minimum": 0,
|
|
1804
|
+
"type": "integer"
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1807
|
+
"required": [
|
|
1808
|
+
"version",
|
|
1809
|
+
"registration_id",
|
|
1810
|
+
"registered_at",
|
|
1811
|
+
"source",
|
|
1812
|
+
"incarnation",
|
|
1813
|
+
"process_claimed",
|
|
1814
|
+
"launch"
|
|
1815
|
+
],
|
|
1816
|
+
"type": "object"
|
|
1817
|
+
},
|
|
1818
|
+
"PublicSession": {
|
|
1819
|
+
"additionalProperties": false,
|
|
1820
|
+
"description": "The last accepted context as a client reads it.\n\nThere is no handle and no serving epoch here by construction, and no other\nfield a private path or argument could be forgotten into.",
|
|
1821
|
+
"properties": {
|
|
1822
|
+
"expires_at": {
|
|
1823
|
+
"type": "string"
|
|
1824
|
+
},
|
|
1825
|
+
"freshness": {
|
|
1826
|
+
"$ref": "#/$defs/Freshness"
|
|
1827
|
+
},
|
|
1828
|
+
"generation": {
|
|
1829
|
+
"format": "uint64",
|
|
1830
|
+
"minimum": 0,
|
|
1831
|
+
"type": "integer"
|
|
1832
|
+
},
|
|
1833
|
+
"incarnation": {
|
|
1834
|
+
"type": "string"
|
|
1835
|
+
},
|
|
1836
|
+
"lease_ms": {
|
|
1837
|
+
"format": "int64",
|
|
1838
|
+
"type": "integer"
|
|
1839
|
+
},
|
|
1840
|
+
"observed_at": {
|
|
1841
|
+
"type": [
|
|
1842
|
+
"string",
|
|
1843
|
+
"null"
|
|
1844
|
+
]
|
|
1845
|
+
},
|
|
1846
|
+
"received_at": {
|
|
1847
|
+
"type": "string"
|
|
1848
|
+
},
|
|
1849
|
+
"reporting_owner": {
|
|
1850
|
+
"type": [
|
|
1851
|
+
"string",
|
|
1852
|
+
"null"
|
|
1853
|
+
]
|
|
1854
|
+
},
|
|
1855
|
+
"restored": {
|
|
1856
|
+
"type": "boolean"
|
|
1857
|
+
},
|
|
1858
|
+
"sequence": {
|
|
1859
|
+
"format": "uint64",
|
|
1860
|
+
"minimum": 0,
|
|
1861
|
+
"type": "integer"
|
|
1862
|
+
},
|
|
1863
|
+
"session": {
|
|
1864
|
+
"description": "The current session, or an explicit null for \"no current session\".\n\nWritten even when null: a present record is what distinguishes \"no\ncurrent session\" from \"never published\", which is no context record at\nall.",
|
|
1865
|
+
"type": [
|
|
1866
|
+
"string",
|
|
1867
|
+
"null"
|
|
1868
|
+
]
|
|
1869
|
+
},
|
|
1870
|
+
"source": {
|
|
1871
|
+
"type": "string"
|
|
1872
|
+
}
|
|
1873
|
+
},
|
|
1874
|
+
"required": [
|
|
1875
|
+
"source",
|
|
1876
|
+
"incarnation",
|
|
1877
|
+
"generation",
|
|
1878
|
+
"sequence",
|
|
1879
|
+
"lease_ms",
|
|
1880
|
+
"received_at",
|
|
1881
|
+
"expires_at",
|
|
1882
|
+
"restored",
|
|
1883
|
+
"freshness",
|
|
1884
|
+
"session"
|
|
1885
|
+
],
|
|
1886
|
+
"type": "object"
|
|
1887
|
+
},
|
|
1888
|
+
"PublicSnapshotFacts": {
|
|
1889
|
+
"additionalProperties": false,
|
|
1890
|
+
"description": "The last accepted report as an unrelated reader may see it, leaving out the\nhandle that fences further writes.",
|
|
1891
|
+
"properties": {
|
|
1892
|
+
"expires_at": {
|
|
1893
|
+
"type": "string"
|
|
1894
|
+
},
|
|
1895
|
+
"freshness": {
|
|
1896
|
+
"$ref": "#/$defs/Freshness"
|
|
1897
|
+
},
|
|
1898
|
+
"generation": {
|
|
1899
|
+
"format": "uint64",
|
|
1900
|
+
"minimum": 0,
|
|
1901
|
+
"type": "integer"
|
|
1902
|
+
},
|
|
1903
|
+
"incarnation": {
|
|
1904
|
+
"type": "string"
|
|
1905
|
+
},
|
|
1906
|
+
"lease_ms": {
|
|
1907
|
+
"format": "int64",
|
|
1908
|
+
"type": "integer"
|
|
1909
|
+
},
|
|
1910
|
+
"observed_at": {
|
|
1911
|
+
"type": [
|
|
1912
|
+
"string",
|
|
1913
|
+
"null"
|
|
1914
|
+
]
|
|
1915
|
+
},
|
|
1916
|
+
"received_at": {
|
|
1917
|
+
"type": "string"
|
|
1918
|
+
},
|
|
1919
|
+
"reporting_owner": {
|
|
1920
|
+
"type": [
|
|
1921
|
+
"string",
|
|
1922
|
+
"null"
|
|
1923
|
+
]
|
|
1924
|
+
},
|
|
1925
|
+
"restored": {
|
|
1926
|
+
"type": "boolean"
|
|
1927
|
+
},
|
|
1928
|
+
"sequence": {
|
|
1929
|
+
"format": "uint64",
|
|
1930
|
+
"minimum": 0,
|
|
1931
|
+
"type": "integer"
|
|
1932
|
+
},
|
|
1933
|
+
"snapshot": {
|
|
1934
|
+
"$ref": "#/$defs/Report"
|
|
1935
|
+
},
|
|
1936
|
+
"source": {
|
|
1937
|
+
"type": "string"
|
|
1938
|
+
}
|
|
1939
|
+
},
|
|
1940
|
+
"required": [
|
|
1941
|
+
"source",
|
|
1942
|
+
"incarnation",
|
|
1943
|
+
"generation",
|
|
1944
|
+
"sequence",
|
|
1945
|
+
"lease_ms",
|
|
1946
|
+
"received_at",
|
|
1947
|
+
"expires_at",
|
|
1948
|
+
"restored",
|
|
1949
|
+
"freshness",
|
|
1950
|
+
"snapshot"
|
|
1951
|
+
],
|
|
1952
|
+
"type": "object"
|
|
1953
|
+
},
|
|
1954
|
+
"PublicWriterFacts": {
|
|
1955
|
+
"additionalProperties": false,
|
|
1956
|
+
"description": "The current writer as an unrelated reader may see it: provenance and\ngeneration, without the opaque handle an update must present.",
|
|
1957
|
+
"properties": {
|
|
1958
|
+
"generation": {
|
|
1959
|
+
"format": "uint64",
|
|
1960
|
+
"minimum": 0,
|
|
1961
|
+
"type": "integer"
|
|
1962
|
+
},
|
|
1963
|
+
"incarnation": {
|
|
1964
|
+
"type": "string"
|
|
1965
|
+
},
|
|
1966
|
+
"reporting_owner": {
|
|
1967
|
+
"type": [
|
|
1968
|
+
"string",
|
|
1969
|
+
"null"
|
|
1970
|
+
]
|
|
1971
|
+
},
|
|
1972
|
+
"retired_at": {
|
|
1973
|
+
"type": [
|
|
1974
|
+
"string",
|
|
1975
|
+
"null"
|
|
1976
|
+
]
|
|
1977
|
+
},
|
|
1978
|
+
"sequence": {
|
|
1979
|
+
"format": "uint64",
|
|
1980
|
+
"minimum": 0,
|
|
1981
|
+
"type": "integer"
|
|
1982
|
+
},
|
|
1983
|
+
"source": {
|
|
1984
|
+
"type": "string"
|
|
1985
|
+
}
|
|
1986
|
+
},
|
|
1987
|
+
"required": [
|
|
1988
|
+
"source",
|
|
1989
|
+
"incarnation",
|
|
1990
|
+
"generation",
|
|
1991
|
+
"sequence"
|
|
1992
|
+
],
|
|
1993
|
+
"type": "object"
|
|
1994
|
+
},
|
|
1995
|
+
"RegistryAgent": {
|
|
1996
|
+
"additionalProperties": false,
|
|
1997
|
+
"description": "One registered agent as the daemon's `agent.list` serves it.",
|
|
1998
|
+
"properties": {
|
|
1999
|
+
"assignment": {
|
|
2000
|
+
"anyOf": [
|
|
2001
|
+
{
|
|
2002
|
+
"$ref": "#/$defs/PublicChannelFacts"
|
|
2003
|
+
},
|
|
2004
|
+
{
|
|
2005
|
+
"type": "null"
|
|
2006
|
+
}
|
|
2007
|
+
]
|
|
2008
|
+
},
|
|
2009
|
+
"claim_standing": {
|
|
2010
|
+
"anyOf": [
|
|
2011
|
+
{
|
|
2012
|
+
"$ref": "#/$defs/Standing"
|
|
2013
|
+
},
|
|
2014
|
+
{
|
|
2015
|
+
"type": "null"
|
|
2016
|
+
}
|
|
2017
|
+
],
|
|
2018
|
+
"description": "Durable claim decision, if this registration has claimed a session."
|
|
2019
|
+
},
|
|
2020
|
+
"context": {
|
|
2021
|
+
"anyOf": [
|
|
2022
|
+
{
|
|
2023
|
+
"$ref": "#/$defs/PublicContext"
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
"type": "null"
|
|
2027
|
+
}
|
|
2028
|
+
],
|
|
2029
|
+
"description": "Mutable current-session context, kept separate from registration identity."
|
|
2030
|
+
},
|
|
2031
|
+
"execution": {
|
|
2032
|
+
"anyOf": [
|
|
2033
|
+
{
|
|
2034
|
+
"$ref": "#/$defs/PublicChannelFacts"
|
|
2035
|
+
},
|
|
2036
|
+
{
|
|
2037
|
+
"type": "null"
|
|
2038
|
+
}
|
|
2039
|
+
]
|
|
2040
|
+
},
|
|
2041
|
+
"facts": {
|
|
2042
|
+
"anyOf": [
|
|
2043
|
+
{
|
|
2044
|
+
"$ref": "#/$defs/PublicChannelFacts"
|
|
2045
|
+
},
|
|
2046
|
+
{
|
|
2047
|
+
"type": "null"
|
|
2048
|
+
}
|
|
2049
|
+
]
|
|
2050
|
+
},
|
|
2051
|
+
"process": {
|
|
2052
|
+
"$ref": "#/$defs/ProcessEvidence"
|
|
2053
|
+
},
|
|
2054
|
+
"registration": {
|
|
2055
|
+
"$ref": "#/$defs/PublicRegistration"
|
|
2056
|
+
}
|
|
2057
|
+
},
|
|
2058
|
+
"required": [
|
|
2059
|
+
"registration",
|
|
2060
|
+
"process",
|
|
2061
|
+
"context",
|
|
2062
|
+
"execution",
|
|
2063
|
+
"assignment",
|
|
2064
|
+
"facts"
|
|
2065
|
+
],
|
|
2066
|
+
"type": "object"
|
|
2067
|
+
},
|
|
2068
|
+
"RegistryLocation": {
|
|
2069
|
+
"additionalProperties": false,
|
|
2070
|
+
"description": "Where an agent's incarnation lives on one backend, in that backend's own\ncoordinates.\n\nThe backend name is free-form so a source Radar does not ship yet is\npreserved rather than rejected; the rest are the coordinates as reported, and\neach is optional because a backend need not name every level.",
|
|
2071
|
+
"properties": {
|
|
2072
|
+
"backend": {
|
|
2073
|
+
"type": "string"
|
|
2074
|
+
},
|
|
2075
|
+
"instance": {
|
|
2076
|
+
"type": [
|
|
2077
|
+
"string",
|
|
2078
|
+
"null"
|
|
2079
|
+
]
|
|
2080
|
+
},
|
|
2081
|
+
"pane": {
|
|
2082
|
+
"type": [
|
|
2083
|
+
"string",
|
|
2084
|
+
"null"
|
|
2085
|
+
]
|
|
2086
|
+
},
|
|
2087
|
+
"tab": {
|
|
2088
|
+
"type": [
|
|
2089
|
+
"string",
|
|
2090
|
+
"null"
|
|
2091
|
+
]
|
|
2092
|
+
},
|
|
2093
|
+
"workspace": {
|
|
2094
|
+
"type": [
|
|
2095
|
+
"string",
|
|
2096
|
+
"null"
|
|
2097
|
+
]
|
|
2098
|
+
}
|
|
2099
|
+
},
|
|
2100
|
+
"required": [
|
|
2101
|
+
"backend"
|
|
2102
|
+
],
|
|
2103
|
+
"type": "object"
|
|
2104
|
+
},
|
|
2105
|
+
"RegistryView": {
|
|
2106
|
+
"additionalProperties": false,
|
|
2107
|
+
"description": "A registered agent with its binding, carried on the agent it projects to.",
|
|
2108
|
+
"properties": {
|
|
2109
|
+
"agent": {
|
|
2110
|
+
"$ref": "#/$defs/RegistryAgent"
|
|
2111
|
+
},
|
|
2112
|
+
"binding": {
|
|
2113
|
+
"$ref": "#/$defs/Binding"
|
|
2114
|
+
},
|
|
2115
|
+
"managed": {
|
|
2116
|
+
"anyOf": [
|
|
2117
|
+
{
|
|
2118
|
+
"$ref": "#/$defs/ManagedSubject"
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
"type": "null"
|
|
2122
|
+
}
|
|
2123
|
+
]
|
|
2124
|
+
},
|
|
2125
|
+
"spawn": {
|
|
2126
|
+
"anyOf": [
|
|
2127
|
+
{
|
|
2128
|
+
"$ref": "#/$defs/SpawnBinding"
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"type": "null"
|
|
2132
|
+
}
|
|
2133
|
+
]
|
|
2134
|
+
}
|
|
2135
|
+
},
|
|
2136
|
+
"required": [
|
|
2137
|
+
"agent",
|
|
2138
|
+
"binding",
|
|
2139
|
+
"spawn",
|
|
2140
|
+
"managed"
|
|
2141
|
+
],
|
|
2142
|
+
"type": "object"
|
|
2143
|
+
},
|
|
2144
|
+
"Report": {
|
|
2145
|
+
"anyOf": [
|
|
2146
|
+
{
|
|
2147
|
+
"$ref": "#/$defs/Snapshot"
|
|
2148
|
+
},
|
|
2149
|
+
{
|
|
2150
|
+
"$ref": "#/$defs/AssignmentSnapshot"
|
|
2151
|
+
},
|
|
2152
|
+
{
|
|
2153
|
+
"$ref": "#/$defs/FactsSnapshot"
|
|
2154
|
+
}
|
|
2155
|
+
],
|
|
2156
|
+
"description": "One complete accepted snapshot, typed by the channel that carries it. Each\nvariant is strict about its own fields, so a field from another channel is\nrefused rather than silently dropped."
|
|
2157
|
+
},
|
|
2158
|
+
"RetainedBasis": {
|
|
2159
|
+
"description": "Why a retained association is reported as not current.",
|
|
2160
|
+
"enum": [
|
|
2161
|
+
"shell_foreground",
|
|
2162
|
+
"unverified"
|
|
2163
|
+
],
|
|
2164
|
+
"type": "string"
|
|
2165
|
+
},
|
|
2166
|
+
"RetainedObservation": {
|
|
2167
|
+
"additionalProperties": false,
|
|
2168
|
+
"description": "Retained agent facts carried across an idle-shell gap.",
|
|
2169
|
+
"properties": {
|
|
2170
|
+
"basis": {
|
|
2171
|
+
"$ref": "#/$defs/RetainedBasis"
|
|
2172
|
+
},
|
|
2173
|
+
"observation": {
|
|
2174
|
+
"$ref": "#/$defs/AgentObservation"
|
|
2175
|
+
}
|
|
2176
|
+
},
|
|
2177
|
+
"required": [
|
|
2178
|
+
"observation",
|
|
2179
|
+
"basis"
|
|
2180
|
+
],
|
|
2181
|
+
"type": "object"
|
|
2182
|
+
},
|
|
2183
|
+
"RuntimeStatus": {
|
|
2184
|
+
"description": "Runtime lifecycle exactly as the source reports it.\n\nThis is not a semantic control state: `Idle` says nothing about\navailability for new work, result delivery or safe lifecycle actions.\nUnrecognized values are preserved verbatim in [`RuntimeStatus::Other`] so a\nsource change never fails an otherwise valid inventory.",
|
|
2185
|
+
"oneOf": [
|
|
2186
|
+
{
|
|
2187
|
+
"enum": [
|
|
2188
|
+
"idle",
|
|
2189
|
+
"working",
|
|
2190
|
+
"done",
|
|
2191
|
+
"unknown"
|
|
2192
|
+
],
|
|
2193
|
+
"type": "string"
|
|
2194
|
+
},
|
|
2195
|
+
{
|
|
2196
|
+
"additionalProperties": false,
|
|
2197
|
+
"properties": {
|
|
2198
|
+
"other": {
|
|
2199
|
+
"type": "string"
|
|
2200
|
+
}
|
|
2201
|
+
},
|
|
2202
|
+
"required": [
|
|
2203
|
+
"other"
|
|
2204
|
+
],
|
|
2205
|
+
"type": "object"
|
|
2206
|
+
}
|
|
2207
|
+
]
|
|
2208
|
+
},
|
|
2209
|
+
"SemanticState": {
|
|
2210
|
+
"description": "Herdsman's projection of an agent's state, as an owner publishes it.\n\nThis is a control projection, not a lifecycle: `Working` says a model turn\nor tool call is in flight, `Blocked` says the assignment waits on its owner,\nand `Waiting` says the turn has yielded while work it depends on is\nunresolved. Values are additive, so an unrecognised one is preserved.",
|
|
2211
|
+
"oneOf": [
|
|
2212
|
+
{
|
|
2213
|
+
"enum": [
|
|
2214
|
+
"idle",
|
|
2215
|
+
"working",
|
|
2216
|
+
"waiting",
|
|
2217
|
+
"blocked",
|
|
2218
|
+
"settling",
|
|
2219
|
+
"unknown",
|
|
2220
|
+
"lost"
|
|
2221
|
+
],
|
|
2222
|
+
"type": "string"
|
|
2223
|
+
},
|
|
2224
|
+
{
|
|
2225
|
+
"additionalProperties": false,
|
|
2226
|
+
"properties": {
|
|
2227
|
+
"other": {
|
|
2228
|
+
"type": "string"
|
|
2229
|
+
}
|
|
2230
|
+
},
|
|
2231
|
+
"required": [
|
|
2232
|
+
"other"
|
|
2233
|
+
],
|
|
2234
|
+
"type": "object"
|
|
2235
|
+
}
|
|
2236
|
+
]
|
|
2237
|
+
},
|
|
2238
|
+
"SessionIdentity": {
|
|
2239
|
+
"description": "Reported session identity for an agent observation.\n\nIdentity is separate from [`Location`]: the same session may move between\npanes, and a pane may host different sessions over time.",
|
|
2240
|
+
"oneOf": [
|
|
2241
|
+
{
|
|
2242
|
+
"additionalProperties": false,
|
|
2243
|
+
"description": "An explicit UUID identity, reported as `agent_session.kind == \"id\"`.",
|
|
2244
|
+
"properties": {
|
|
2245
|
+
"kind": {
|
|
2246
|
+
"const": "uuid",
|
|
2247
|
+
"type": "string"
|
|
2248
|
+
},
|
|
2249
|
+
"value": {
|
|
2250
|
+
"$ref": "#/$defs/SessionUuid"
|
|
2251
|
+
}
|
|
2252
|
+
},
|
|
2253
|
+
"required": [
|
|
2254
|
+
"kind",
|
|
2255
|
+
"value"
|
|
2256
|
+
],
|
|
2257
|
+
"type": "object"
|
|
2258
|
+
},
|
|
2259
|
+
{
|
|
2260
|
+
"additionalProperties": false,
|
|
2261
|
+
"description": "A source-qualified reference (typically a session file path).\n\nKept exactly as reported: a path-like reference is never promoted to a\nUUID, however UUID-like the value looks.",
|
|
2262
|
+
"properties": {
|
|
2263
|
+
"kind": {
|
|
2264
|
+
"const": "reported",
|
|
2265
|
+
"type": "string"
|
|
2266
|
+
},
|
|
2267
|
+
"value": {
|
|
2268
|
+
"additionalProperties": false,
|
|
2269
|
+
"properties": {
|
|
2270
|
+
"source": {
|
|
2271
|
+
"type": [
|
|
2272
|
+
"string",
|
|
2273
|
+
"null"
|
|
2274
|
+
]
|
|
2275
|
+
},
|
|
2276
|
+
"value": {
|
|
2277
|
+
"type": "string"
|
|
2278
|
+
}
|
|
2279
|
+
},
|
|
2280
|
+
"required": [
|
|
2281
|
+
"source",
|
|
2282
|
+
"value"
|
|
2283
|
+
],
|
|
2284
|
+
"type": "object"
|
|
2285
|
+
}
|
|
2286
|
+
},
|
|
2287
|
+
"required": [
|
|
2288
|
+
"kind",
|
|
2289
|
+
"value"
|
|
2290
|
+
],
|
|
2291
|
+
"type": "object"
|
|
2292
|
+
}
|
|
2293
|
+
]
|
|
2294
|
+
},
|
|
2295
|
+
"SessionUuid": {
|
|
2296
|
+
"description": "A validated canonical UUID (lowercase `8-4-4-4-12` hex).\n\nOnly explicitly supplied UUID metadata is ever turned into this type —\nsession file paths are never scanned for embedded UUIDs.",
|
|
2297
|
+
"type": "string"
|
|
2298
|
+
},
|
|
2299
|
+
"Snapshot": {
|
|
2300
|
+
"additionalProperties": false,
|
|
2301
|
+
"description": "One complete snapshot for one channel. Vocabulary is free-form; shape is\nstrict. Unknown state/reason/action words survive, unknown fields do not.",
|
|
2302
|
+
"properties": {
|
|
2303
|
+
"actions": {
|
|
2304
|
+
"items": {
|
|
2305
|
+
"type": "string"
|
|
2306
|
+
},
|
|
2307
|
+
"type": "array"
|
|
2308
|
+
},
|
|
2309
|
+
"activity": {
|
|
2310
|
+
"type": "string"
|
|
2311
|
+
},
|
|
2312
|
+
"last_outcome": {
|
|
2313
|
+
"anyOf": [
|
|
2314
|
+
{
|
|
2315
|
+
"$ref": "#/$defs/Outcome"
|
|
2316
|
+
},
|
|
2317
|
+
{
|
|
2318
|
+
"type": "null"
|
|
2319
|
+
}
|
|
2320
|
+
]
|
|
2321
|
+
},
|
|
2322
|
+
"waiting_reason": {
|
|
2323
|
+
"type": [
|
|
2324
|
+
"string",
|
|
2325
|
+
"null"
|
|
2326
|
+
]
|
|
2327
|
+
}
|
|
2328
|
+
},
|
|
2329
|
+
"required": [
|
|
2330
|
+
"activity"
|
|
2331
|
+
],
|
|
2332
|
+
"type": "object"
|
|
2333
|
+
},
|
|
2334
|
+
"SpawnBinding": {
|
|
2335
|
+
"additionalProperties": false,
|
|
2336
|
+
"description": "The spawn edge that binds this registration as a child, when one exists.\n\nParentage and the edge's own state come from the topology read. The edge's\nstate is never a process-exit claim: an unresolved child is shown as such.",
|
|
2337
|
+
"properties": {
|
|
2338
|
+
"child_incarnation": {
|
|
2339
|
+
"type": [
|
|
2340
|
+
"string",
|
|
2341
|
+
"null"
|
|
2342
|
+
]
|
|
2343
|
+
},
|
|
2344
|
+
"child_source": {
|
|
2345
|
+
"type": [
|
|
2346
|
+
"string",
|
|
2347
|
+
"null"
|
|
2348
|
+
]
|
|
2349
|
+
},
|
|
2350
|
+
"parent": {
|
|
2351
|
+
"type": "string"
|
|
2352
|
+
},
|
|
2353
|
+
"request_id": {
|
|
2354
|
+
"type": "string"
|
|
2355
|
+
},
|
|
2356
|
+
"state": {
|
|
2357
|
+
"$ref": "#/$defs/SpawnState"
|
|
2358
|
+
},
|
|
2359
|
+
"subject_id": {
|
|
2360
|
+
"type": [
|
|
2361
|
+
"string",
|
|
2362
|
+
"null"
|
|
2363
|
+
]
|
|
2364
|
+
}
|
|
2365
|
+
},
|
|
2366
|
+
"required": [
|
|
2367
|
+
"parent",
|
|
2368
|
+
"request_id",
|
|
2369
|
+
"subject_id",
|
|
2370
|
+
"child_source",
|
|
2371
|
+
"child_incarnation",
|
|
2372
|
+
"state"
|
|
2373
|
+
],
|
|
2374
|
+
"type": "object"
|
|
2375
|
+
},
|
|
2376
|
+
"SpawnState": {
|
|
2377
|
+
"description": "The state of one edge in the recorded topology: the strongest statement a\nread can make about it, and nothing beyond the records and this read's own\nevidence.",
|
|
2378
|
+
"oneOf": [
|
|
2379
|
+
{
|
|
2380
|
+
"const": "unbound",
|
|
2381
|
+
"description": "No child has presented this edge's token. The edge may still be pending,\nor its launch may never have reached a shell.",
|
|
2382
|
+
"type": "string"
|
|
2383
|
+
},
|
|
2384
|
+
{
|
|
2385
|
+
"const": "bound",
|
|
2386
|
+
"description": "A child registered with this edge's token, so the edge names its exact\nidentity. Observation does not revise this.",
|
|
2387
|
+
"type": "string"
|
|
2388
|
+
},
|
|
2389
|
+
{
|
|
2390
|
+
"const": "unresolved",
|
|
2391
|
+
"description": "The recorded location is not in the backend's own report: the record and\nthe world disagree. This is never a statement that the child stopped — a\nread observes panes, and a pane's absence is not a process's death.",
|
|
2392
|
+
"type": "string"
|
|
2393
|
+
}
|
|
2394
|
+
]
|
|
2395
|
+
},
|
|
2396
|
+
"Standing": {
|
|
2397
|
+
"enum": [
|
|
2398
|
+
"pending",
|
|
2399
|
+
"granted",
|
|
2400
|
+
"duplicate",
|
|
2401
|
+
"released"
|
|
2402
|
+
],
|
|
2403
|
+
"type": "string"
|
|
2404
|
+
},
|
|
2405
|
+
"State": {
|
|
2406
|
+
"oneOf": [
|
|
2407
|
+
{
|
|
2408
|
+
"const": "pending",
|
|
2409
|
+
"description": "Launch recorded; no process has claimed it yet.",
|
|
2410
|
+
"type": "string"
|
|
2411
|
+
},
|
|
2412
|
+
{
|
|
2413
|
+
"const": "captured",
|
|
2414
|
+
"description": "The bootstrap's process is captured and released to exec.",
|
|
2415
|
+
"type": "string"
|
|
2416
|
+
},
|
|
2417
|
+
{
|
|
2418
|
+
"const": "bound",
|
|
2419
|
+
"description": "A registration presented the token with the captured identity.",
|
|
2420
|
+
"type": "string"
|
|
2421
|
+
},
|
|
2422
|
+
{
|
|
2423
|
+
"const": "revoked",
|
|
2424
|
+
"description": "Cancelled before binding: no registration may bind it.",
|
|
2425
|
+
"type": "string"
|
|
2426
|
+
}
|
|
2427
|
+
]
|
|
2428
|
+
},
|
|
2429
|
+
"Tab": {
|
|
2430
|
+
"additionalProperties": false,
|
|
2431
|
+
"description": "A Herdr tab within a workspace; shown as location detail, not a tree level.",
|
|
2432
|
+
"properties": {
|
|
2433
|
+
"label": {
|
|
2434
|
+
"type": [
|
|
2435
|
+
"string",
|
|
2436
|
+
"null"
|
|
2437
|
+
]
|
|
2438
|
+
},
|
|
2439
|
+
"number": {
|
|
2440
|
+
"format": "uint32",
|
|
2441
|
+
"minimum": 0,
|
|
2442
|
+
"type": [
|
|
2443
|
+
"integer",
|
|
2444
|
+
"null"
|
|
2445
|
+
]
|
|
2446
|
+
},
|
|
2447
|
+
"tab_id": {
|
|
2448
|
+
"type": "string"
|
|
2449
|
+
},
|
|
2450
|
+
"workspace_id": {
|
|
2451
|
+
"type": "string"
|
|
2452
|
+
}
|
|
2453
|
+
},
|
|
2454
|
+
"required": [
|
|
2455
|
+
"tab_id",
|
|
2456
|
+
"workspace_id",
|
|
2457
|
+
"label",
|
|
2458
|
+
"number"
|
|
2459
|
+
],
|
|
2460
|
+
"type": "object"
|
|
2461
|
+
},
|
|
2462
|
+
"TerminalMode": {
|
|
2463
|
+
"description": "Whether a foreground program has taken the terminal over.\n\nA terminal cannot see a program's intentions, but it does see the line\ndiscipline: a full-screen program turns canonical mode and echo off, and a\ncommand that prints and exits leaves them alone however long it runs. That\nis the difference between an editor someone is working in and a build in\nprogress, and it is the only signal of the kind the kernel offers.",
|
|
2464
|
+
"oneOf": [
|
|
2465
|
+
{
|
|
2466
|
+
"const": "full_screen",
|
|
2467
|
+
"description": "Raw mode, no echo: the program is drawing the screen itself.",
|
|
2468
|
+
"type": "string"
|
|
2469
|
+
},
|
|
2470
|
+
{
|
|
2471
|
+
"const": "line",
|
|
2472
|
+
"description": "The shell's line discipline is intact: output scrolls, input is echoed.",
|
|
2473
|
+
"type": "string"
|
|
2474
|
+
},
|
|
2475
|
+
{
|
|
2476
|
+
"const": "unknown",
|
|
2477
|
+
"description": "Unreadable: a process with no terminal, one that is already gone, or a\nplatform whose terminal state Radar cannot read.",
|
|
2478
|
+
"type": "string"
|
|
2479
|
+
}
|
|
2480
|
+
]
|
|
2481
|
+
},
|
|
2482
|
+
"Total": {
|
|
2483
|
+
"description": "A total over processes, and what it actually covers.\n\nA sum is not a measurement by itself: it can be small because its members\nwere idle, or because the scan could not read them. The variant keeps that\ndifference, so an incomplete total can never be read as a complete zero, and\nthe reason travels with it because the reader has to know which members are\nmissing to know what the number is worth.",
|
|
2484
|
+
"oneOf": [
|
|
2485
|
+
{
|
|
2486
|
+
"additionalProperties": false,
|
|
2487
|
+
"description": "Every member of the set contributed to it.",
|
|
2488
|
+
"properties": {
|
|
2489
|
+
"kind": {
|
|
2490
|
+
"const": "complete",
|
|
2491
|
+
"type": "string"
|
|
2492
|
+
},
|
|
2493
|
+
"value": {
|
|
2494
|
+
"format": "uint64",
|
|
2495
|
+
"minimum": 0,
|
|
2496
|
+
"type": "integer"
|
|
2497
|
+
}
|
|
2498
|
+
},
|
|
2499
|
+
"required": [
|
|
2500
|
+
"kind",
|
|
2501
|
+
"value"
|
|
2502
|
+
],
|
|
2503
|
+
"type": "object"
|
|
2504
|
+
},
|
|
2505
|
+
{
|
|
2506
|
+
"additionalProperties": false,
|
|
2507
|
+
"description": "A lower bound: some members could not contribute, for the reason given.",
|
|
2508
|
+
"properties": {
|
|
2509
|
+
"kind": {
|
|
2510
|
+
"const": "partial",
|
|
2511
|
+
"type": "string"
|
|
2512
|
+
},
|
|
2513
|
+
"value": {
|
|
2514
|
+
"maxItems": 2,
|
|
2515
|
+
"minItems": 2,
|
|
2516
|
+
"prefixItems": [
|
|
2517
|
+
{
|
|
2518
|
+
"format": "uint64",
|
|
2519
|
+
"minimum": 0,
|
|
2520
|
+
"type": "integer"
|
|
2521
|
+
},
|
|
2522
|
+
{
|
|
2523
|
+
"type": "string"
|
|
2524
|
+
}
|
|
2525
|
+
],
|
|
2526
|
+
"type": "array"
|
|
2527
|
+
}
|
|
2528
|
+
},
|
|
2529
|
+
"required": [
|
|
2530
|
+
"kind",
|
|
2531
|
+
"value"
|
|
2532
|
+
],
|
|
2533
|
+
"type": "object"
|
|
2534
|
+
},
|
|
2535
|
+
{
|
|
2536
|
+
"additionalProperties": false,
|
|
2537
|
+
"description": "Nothing could be totalled, for the reason given.",
|
|
2538
|
+
"properties": {
|
|
2539
|
+
"kind": {
|
|
2540
|
+
"const": "unknown",
|
|
2541
|
+
"type": "string"
|
|
2542
|
+
},
|
|
2543
|
+
"value": {
|
|
2544
|
+
"type": "string"
|
|
2545
|
+
}
|
|
2546
|
+
},
|
|
2547
|
+
"required": [
|
|
2548
|
+
"kind",
|
|
2549
|
+
"value"
|
|
2550
|
+
],
|
|
2551
|
+
"type": "object"
|
|
2552
|
+
}
|
|
2553
|
+
]
|
|
2554
|
+
},
|
|
2555
|
+
"Total2": {
|
|
2556
|
+
"description": "A total over processes, and what it actually covers.\n\nA sum is not a measurement by itself: it can be small because its members\nwere idle, or because the scan could not read them. The variant keeps that\ndifference, so an incomplete total can never be read as a complete zero, and\nthe reason travels with it because the reader has to know which members are\nmissing to know what the number is worth.",
|
|
2557
|
+
"oneOf": [
|
|
2558
|
+
{
|
|
2559
|
+
"additionalProperties": false,
|
|
2560
|
+
"description": "Every member of the set contributed to it.",
|
|
2561
|
+
"properties": {
|
|
2562
|
+
"kind": {
|
|
2563
|
+
"const": "complete",
|
|
2564
|
+
"type": "string"
|
|
2565
|
+
},
|
|
2566
|
+
"value": {
|
|
2567
|
+
"$ref": "#/$defs/CpuPercent"
|
|
2568
|
+
}
|
|
2569
|
+
},
|
|
2570
|
+
"required": [
|
|
2571
|
+
"kind",
|
|
2572
|
+
"value"
|
|
2573
|
+
],
|
|
2574
|
+
"type": "object"
|
|
2575
|
+
},
|
|
2576
|
+
{
|
|
2577
|
+
"additionalProperties": false,
|
|
2578
|
+
"description": "A lower bound: some members could not contribute, for the reason given.",
|
|
2579
|
+
"properties": {
|
|
2580
|
+
"kind": {
|
|
2581
|
+
"const": "partial",
|
|
2582
|
+
"type": "string"
|
|
2583
|
+
},
|
|
2584
|
+
"value": {
|
|
2585
|
+
"maxItems": 2,
|
|
2586
|
+
"minItems": 2,
|
|
2587
|
+
"prefixItems": [
|
|
2588
|
+
{
|
|
2589
|
+
"$ref": "#/$defs/CpuPercent"
|
|
2590
|
+
},
|
|
2591
|
+
{
|
|
2592
|
+
"type": "string"
|
|
2593
|
+
}
|
|
2594
|
+
],
|
|
2595
|
+
"type": "array"
|
|
2596
|
+
}
|
|
2597
|
+
},
|
|
2598
|
+
"required": [
|
|
2599
|
+
"kind",
|
|
2600
|
+
"value"
|
|
2601
|
+
],
|
|
2602
|
+
"type": "object"
|
|
2603
|
+
},
|
|
2604
|
+
{
|
|
2605
|
+
"additionalProperties": false,
|
|
2606
|
+
"description": "Nothing could be totalled, for the reason given.",
|
|
2607
|
+
"properties": {
|
|
2608
|
+
"kind": {
|
|
2609
|
+
"const": "unknown",
|
|
2610
|
+
"type": "string"
|
|
2611
|
+
},
|
|
2612
|
+
"value": {
|
|
2613
|
+
"type": "string"
|
|
2614
|
+
}
|
|
2615
|
+
},
|
|
2616
|
+
"required": [
|
|
2617
|
+
"kind",
|
|
2618
|
+
"value"
|
|
2619
|
+
],
|
|
2620
|
+
"type": "object"
|
|
2621
|
+
}
|
|
2622
|
+
]
|
|
2623
|
+
},
|
|
2624
|
+
"Unjoined": {
|
|
2625
|
+
"description": "Why a registration did not join a pane.",
|
|
2626
|
+
"oneOf": [
|
|
2627
|
+
{
|
|
2628
|
+
"const": "no_location",
|
|
2629
|
+
"description": "No pane is named, or the registration names no location at all.",
|
|
2630
|
+
"type": "string"
|
|
2631
|
+
},
|
|
2632
|
+
{
|
|
2633
|
+
"const": "no_claim",
|
|
2634
|
+
"description": "The registration claimed no process identity to compare.",
|
|
2635
|
+
"type": "string"
|
|
2636
|
+
},
|
|
2637
|
+
{
|
|
2638
|
+
"const": "pane_absent",
|
|
2639
|
+
"description": "The named pane is not in this inventory.",
|
|
2640
|
+
"type": "string"
|
|
2641
|
+
},
|
|
2642
|
+
{
|
|
2643
|
+
"const": "location_mismatch",
|
|
2644
|
+
"description": "The backend, instance, tab or workspace differ from the pane's.",
|
|
2645
|
+
"type": "string"
|
|
2646
|
+
},
|
|
2647
|
+
{
|
|
2648
|
+
"const": "foreground_unreadable",
|
|
2649
|
+
"description": "The pane's foreground identity was not sampled or could not be read.",
|
|
2650
|
+
"type": "string"
|
|
2651
|
+
},
|
|
2652
|
+
{
|
|
2653
|
+
"const": "identity_mismatch",
|
|
2654
|
+
"description": "The pane's foreground is a different process incarnation.",
|
|
2655
|
+
"type": "string"
|
|
2656
|
+
},
|
|
2657
|
+
{
|
|
2658
|
+
"const": "ambiguous",
|
|
2659
|
+
"description": "Two registrations claim the same pane's foreground identity.",
|
|
2660
|
+
"type": "string"
|
|
2661
|
+
}
|
|
2662
|
+
]
|
|
2663
|
+
},
|
|
2664
|
+
"Workspace": {
|
|
2665
|
+
"additionalProperties": false,
|
|
2666
|
+
"description": "A Herdr workspace: the first display grouping for the fleet tree.",
|
|
2667
|
+
"properties": {
|
|
2668
|
+
"label": {
|
|
2669
|
+
"type": [
|
|
2670
|
+
"string",
|
|
2671
|
+
"null"
|
|
2672
|
+
]
|
|
2673
|
+
},
|
|
2674
|
+
"number": {
|
|
2675
|
+
"format": "uint32",
|
|
2676
|
+
"minimum": 0,
|
|
2677
|
+
"type": [
|
|
2678
|
+
"integer",
|
|
2679
|
+
"null"
|
|
2680
|
+
]
|
|
2681
|
+
},
|
|
2682
|
+
"session_path": {
|
|
2683
|
+
"description": "tmux's workspace directory, used as the default target for a new launch.",
|
|
2684
|
+
"type": [
|
|
2685
|
+
"string",
|
|
2686
|
+
"null"
|
|
2687
|
+
]
|
|
2688
|
+
},
|
|
2689
|
+
"workspace_id": {
|
|
2690
|
+
"type": "string"
|
|
2691
|
+
}
|
|
2692
|
+
},
|
|
2693
|
+
"required": [
|
|
2694
|
+
"workspace_id",
|
|
2695
|
+
"label",
|
|
2696
|
+
"number"
|
|
2697
|
+
],
|
|
2698
|
+
"type": "object"
|
|
2699
|
+
}
|
|
2700
|
+
},
|
|
2701
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2702
|
+
"additionalProperties": false,
|
|
2703
|
+
"description": "One immutable observation revision on the public wire.",
|
|
2704
|
+
"properties": {
|
|
2705
|
+
"collected_at": {
|
|
2706
|
+
"type": [
|
|
2707
|
+
"string",
|
|
2708
|
+
"null"
|
|
2709
|
+
]
|
|
2710
|
+
},
|
|
2711
|
+
"epoch": {
|
|
2712
|
+
"type": "string"
|
|
2713
|
+
},
|
|
2714
|
+
"observation": {
|
|
2715
|
+
"$ref": "#/$defs/ObservationProjection"
|
|
2716
|
+
},
|
|
2717
|
+
"revision": {
|
|
2718
|
+
"format": "uint64",
|
|
2719
|
+
"maximum": 9007199254740991,
|
|
2720
|
+
"minimum": 0,
|
|
2721
|
+
"type": "integer"
|
|
2722
|
+
},
|
|
2723
|
+
"sources": {
|
|
2724
|
+
"items": {
|
|
2725
|
+
"$ref": "#/$defs/ObservationSource"
|
|
2726
|
+
},
|
|
2727
|
+
"type": "array"
|
|
2728
|
+
},
|
|
2729
|
+
"tasks": true
|
|
2730
|
+
},
|
|
2731
|
+
"required": [
|
|
2732
|
+
"epoch",
|
|
2733
|
+
"revision",
|
|
2734
|
+
"collected_at",
|
|
2735
|
+
"sources",
|
|
2736
|
+
"tasks",
|
|
2737
|
+
"observation"
|
|
2738
|
+
],
|
|
2739
|
+
"title": "observation-snapshot-serialize",
|
|
2740
|
+
"type": "object"
|
|
2741
|
+
}
|