observatory.events
Události žurnálu meshe nad kurzorem, tak jak je kreslí scéna aktivity Observatory: identita, druh, uzel, logické hodiny a čas, od nejnovější, nejvýše jedna stránka. Kurzor odpovědi je `after` dalšího požadavku; kurzor, kterého tento žurnál nikdy nedosáhl, vypršel a čtenář vezme novou projekci. Bez kurzoru nejnovější stránka.
Události žurnálu meshe nad kurzorem, tak jak je kreslí scéna aktivity Observatory: identita, druh, uzel, logické hodiny a čas, od nejnovější, nejvýše jedna stránka. Kurzor odpovědi je `after` dalšího požadavku; kurzor, kterého tento žurnál nikdy nedosáhl, vypršel a čtenář vezme novou projekci. Bez kurzoru nejnovější stránka.
- query
- behaviorally_verified
- module observatory
- #observatory
- #mesh
- #ui
Zpřístupnění
Kde je tato jedna definice dosažitelná. Absence je explicitní: povrch, který není uveden, ji nenese.
| povrch | jako |
|---|---|
| MCP | nástroj majordomus_observatory_events |
| HTTP | GET /api/v1/observatory/events operationId observatory.events |
| příkazová řádka | — |
Schémata
Kanonický vstup a výstup z typů Rustu; schéma nástroje MCP a parametry a odpovědi OpenAPI se odvozují z nich.
vstup · ObservatoryEventsInput
observatory.events: kurzor a velikost stránky.
use majordomus_cli::capability::builtin::observatory::ObservatoryEventsInput;
let q: ObservatoryEventsInput = serde_json::from_value(serde_json::json!({ "after": 42 })).unwrap();
assert_eq!((q.after, q.limit), (Some(42), None));
assert!(serde_json::from_value::<ObservatoryEventsInput>(serde_json::json!({ "since": 1 })).is_err());| vlastnost | typ | povinné | popis |
|---|---|---|---|
| po | integer | null | ne | Kurzor: jen události, jejichž logické hodiny jsou nad ním. Vynechání znamená nejnovější stránku. |
| limit | integer | null | ne | Nejvýše tolik (výchozí 200, nejvýše 1000). |
JSON Schema
{
"additionalProperties": false,
"description": "The input of `observatory.events`: a cursor and a page size.\n\n```\nuse majordomus_cli::capability::builtin::observatory::ObservatoryEventsInput;\nlet q: ObservatoryEventsInput = serde_json::from_value(serde_json::json!({ \"after\": 42 })).unwrap();\nassert_eq!((q.after, q.limit), (Some(42), None));\nassert!(serde_json::from_value::<ObservatoryEventsInput>(serde_json::json!({ \"since\": 1 })).is_err());\n```",
"properties": {
"after": {
"description": "The cursor: only events whose logical clock is above it. Absent is the newest page.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"limit": {
"description": "At most this many (default 200, at most 1000).",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
}
},
"title": "ObservatoryEventsInput",
"type": "object"
}výstup · ObservatoryEvents
use majordomus_cli::capability::builtin::observatory::ObservatoryEvents;
let e: ObservatoryEvents = serde_json::from_value(serde_json::json!({
"active": true, "after": 9, "cursor": 12, "expired": false, "events": [{ "id": "s:3" }],
})).unwrap();
assert!(e.cursor > e.after.unwrap(), "the next request resumes past what was read");| vlastnost | typ | povinné | popis |
|---|---|---|---|
| aktivní | boolean | ano | Zda v tomto procesu běží mesh; bez něj není žurnál, který by se dal sledovat. |
| po | integer | null | ne | Kurzor, na který se ptalo, pokud se ptalo. |
| cursor | integer | ano | Kurzor, na který se ptát příště: logické hodiny nejnovější přečtené události, nebo nejnovější hodiny žurnálu, když kurzor vypršel. |
| events | array | ano | Události nad kurzorem, nejnovější první, jako značky: identita, druh, uzel, logické hodiny a čas, nikdy tělo. |
| vypršelo | boolean | ano | Kurzor pojmenovává hodiny, kterých tento žurnál nikdy nedosáhl (žurnál jiného runtime, nebo takový, který se restartoval): nic nad ním nelze přečíst a čtenář vezme novou projekci. |
JSON Schema
{
"description": "The Observatory's events above a cursor, as the activity scene draws them.\n\n```\nuse majordomus_cli::capability::builtin::observatory::ObservatoryEvents;\nlet e: ObservatoryEvents = serde_json::from_value(serde_json::json!({\n \"active\": true, \"after\": 9, \"cursor\": 12, \"expired\": false, \"events\": [{ \"id\": \"s:3\" }],\n})).unwrap();\nassert!(e.cursor > e.after.unwrap(), \"the next request resumes past what was read\");\n```",
"properties": {
"active": {
"description": "Whether a mesh runs in this process; without one there is no journal to follow.",
"type": "boolean"
},
"after": {
"description": "The cursor that was asked, when one was.",
"format": "uint64",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"cursor": {
"description": "The cursor to ask next: the logical clock of the newest event read, or the journal's\nnewest clock when the cursor had expired.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"events": {
"description": "The events above the cursor, newest first, as marks: identity, kind, node, logical\nclock and time, never a body.",
"items": true,
"type": "array"
},
"expired": {
"description": "The cursor names a clock this journal never reached (another runtime's journal, or one\nthat restarted): nothing above it can be read, and the reader takes a fresh projection.",
"type": "boolean"
}
},
"required": [
"active",
"cursor",
"expired",
"events"
],
"title": "ObservatoryEvents",
"type": "object"
}Politiky
- benchmark
- povinné — cíl na každém transportu, který expozice deklaruje; případy jsou ty ze vstupního typu
- cache
- vypnuto — každé volání spustí handler
Cíle benchmarku
Odvozeno z registru pro tento repozitář: jeden požadavek na transport a případy, které poskytuje typ vstupu. Celá matice je na stránce měření výkonu.
| transport | state | případy | targets |
|---|---|---|---|
| direct | pokryto | 2 | nejnovější za kurzorem |
| mcp | pokryto | 2 | nejnovější za kurzorem |
| http | pokryto | 2 | nejnovější za kurzorem |