EKOSdocs
Docs / Plugins Build

Source Plugins

Implement the Observer trait to add a knowledge source.

#[async_trait]
pub trait Observer: Send + Sync {
    fn name(&self) -> &str;
    async fn scan(&self, ctx: &ScanContext) -> Result<ObservationPackage, ObserveError>;
}

Contract:

  • scan must not modify the workspace and is safe to call repeatedly; identical workspace state produces identical artifact ids.
  • Observers collect; they never interpret. Return ObservationArtifacts (ObservationArtifact::new(source, name, json)), each content-addressed.
  • Honour ctx.is_ignored(path) for the configured ignore patterns.
  • Pass any content you read through ekos_common::redaction before returning it.

Real examples live under ekos/plugins/: file, git, github, confluence, localdocs, pentaho, python, rust, elixir, javascript, perl, clickhouse, crypto.