Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

HTTP API: observatory

Co smí Observatory odnést na místo, kde neběží žádný mesh: scény meshe, které tento proces má živé, pseudonymizované pro publikaci, a nahrávka, kterou repozitář nese a kterou publikované Observatory přehrává a označuje jako přehrávku.

Vykresleno z docs/generated/openapi.json, který spustitelný soubor generuje ze svého registru schopností a CI jej odmítne, je-li zastaralý. Surový dokument je na /openapi.json; běžící server servíruje stejný dokument na vlastní /openapi.json a Swagger UI na /swagger.

observatory

Co smí Observatory odnést na místo, kde neběží žádný mesh: scény meshe, které tento proces má živé, pseudonymizované pro publikaci, a nahrávka, kterou repozitář nese a kterou publikované Observatory přehrává a označuje jako přehrávku.

GET /api/v1/observatory/capture observatory.capture

Zachycení Observatoře

Scény mesh Observatoře tak, jak je tento proces má živě, způsobilé k publikaci: stroje, runtime, relace a události podle pořadí, událost jen podle jejího druhu, logických hodin a času. Nic nezapisuje; commit odpovědi do .ai/repo/observatory/recording.json je to, co ji publikuje.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • MCP nástroj majordomus_observatory_capture

Žádné parametry.

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/observatory/capture"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 ObservatoryRecording Zachycení observatory: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/observatory/events observatory.events

Události observatoře

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
  • vyžaduje se měření výkonu
  • cache vypnuta
  • Nástroj MCP majordomus_observatory_events

Parametry dotazu

názevtyppovinnépopispříklady
po integer (uint64) ne Kurzor: jen události, jejichž logické hodiny jsou nad ním. Vynechání znamená nejnovější stránku. after a cursor: 0
limit integer (uint64) ne Nejvýše tolik (výchozí 200, nejvýše 1000). po kurzoru: 50

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/observatory/events?after=0&limit=50"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 ObservatoryEvents Události observatoře: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/observatory/replay observatory.replay

Přehrání observatoře

Záznam scén mesh, který repozitář nese v .ai/repo/observatory/recording.json, a který Observatoř kreslí, označený jako přehrání, kde žádný mesh neběží. Absence je present: false; soubor, který nelze přečíst, je chyba.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • nástroj MCP majordomus_observatory_replay

Žádné parametry.

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/observatory/replay"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 ObservatoryReplay Přehrání Observatoře: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.

Schémata

Komponenty, které používají jen operace tohoto tagu. Každý řádek je pole daného typu, jeho doc komentář je popis; typ vlastněný jinou stránkou na ni odkazuje.

ObservatoryEvents

object
Události Observatoře nad kurzorem tak, jak je kreslí scéna aktivity.

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");
vlastnosttyppovinné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 (uint64) 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.
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.
events pole any ano Události nad kurzorem, nejnovější první, jako značky: identita, druh, uzel, logické hodiny a čas, nikdy tělo.

Používá observatory.events

ObservatoryRecording

object
Scény meshe jednoho procesu v jednom okamžiku, vhodné k publikaci.

use majordomus_cli::capability::builtin::observatory::ObservatoryRecording;
let r: ObservatoryRecording = serde_json::from_value(serde_json::json!({
    "schema": "observatory-recording/v1", "recorded_at": "2026-10-14T05:00:00Z", "scenes": {},
    "manifest": { "sources": [], "removed": [] },
})).unwrap();
assert!(r.scenes.is_empty() && r.revision.is_none());
vlastnosttyppovinnépopis
schema string ano RECORDING_SCHEMA.
recorded_at string ano Kdy byly scény přečteny.
revize string | null ne Commit, na kterém záznamový proces stál, zkráceně; chybí, když to neuměl říct.
scény object ano Model každé zaznamenané scény podle id scény; scéna, pro kterou proces neměl nic živého, chybí, nikdy není prázdná.
manifest RecordingManifest → RecordingManifest ano Čeho je záznam záznamem a co vynechává.

Používá observatory.capture ObservatoryReplay

ObservatoryReplay

object
Záznam, který repozitář nese, nebo že žádný nenese.

use majordomus_cli::capability::builtin::observatory::{replay_at, ObservatoryReplay, RECORDING};
let dir = tempfile::tempdir().unwrap();
let none: ObservatoryReplay = replay_at(dir.path()).unwrap();
assert!(!none.present && none.recording.is_none());
assert_eq!(none.path, RECORDING);
vlastnosttyppovinnépopis
přítomno boolean ano Zda repozitář nese záznam.
path string ano Soubor, ze kterého se čte.
zaznamenávání ObservatoryRecording | null → ObservatoryRecording ne Nahrávka.

Používá observatory.replay

RecordingManifest

object
Čeho je záznam záznamem: přečtených schopností, okna událostí, které drží, a co bylo z jejich odpovědí odstraněno, s důvodem.

use majordomus_cli::capability::builtin::observatory::RecordingManifest;
let m: RecordingManifest = serde_json::from_value(serde_json::json!({
    "sources": ["mesh.events"], "removed": ["event bodies"],
})).unwrap();
assert!(m.window.is_none(), "a recording that holds no event has no window");
vlastnosttyppovinnépopis
zdroje array of string ano Schopnosti, jejichž odpovědi byly zaznamenané scény promítnuty.
okno RecordingWindow | null → RecordingWindow ne První a poslední událost, kterou záznam drží, podle času a podle logických hodin; chybí, když žádnou nedrží.
odstraněno array of string ano Každý druh věcí odstraněný před publikací a proč.

Používá ObservatoryRecording

RecordingWindow

object
Události, které záznam drží, od první k poslední.

use majordomus_cli::capability::builtin::observatory::RecordingWindow;
let w = RecordingWindow { events: 2, from_at: Some(100), to_at: Some(160), from_lamport: Some(9), to_lamport: Some(10) };
assert_eq!(w.to_at.unwrap() - w.from_at.unwrap(), 60, "a minute of the journal");
vlastnosttyppovinnépopis
events integer (uint) ano Kolik událostí.
from_at integer | null ne Čas nejstarší události, v sekundách od epochy.
to_at integer | null ne Čas poslední události v sekundách od epochy.
from_lamport integer | null ne Nejmenší logické hodiny.
to_lamport integer | null ne Největší logické hodiny.

Používá RecordingManifest

Prohledává názvy a popisy všech stránek, které tento web publikuje.