yams/docs/spec
Trevon 72647bbaf7
chore: stabilize CI, faiss, metadata, docker, and simeon (#25)
- CI warm: ccache dep, continue-on-error, 60min timeout, YAMS_DISABLE_FAISS
- Faiss: YAMS_HAS_FAISS guard, Apple Clang disable, OpenMP detection
- Metadata: retry constraint failures, deduplicate batch UPSERT entries
- Docker: wget for Zig, gfortran, YAMS_DISABLE_FAISS=1
- CI config: free-disk-space v1.3.1, libomp-18-dev, experimental trigger
- Weekly benchmarks: faiss disable, ccache, diagnostics capture
- Simeon: bump to 7763a97, EntropyRouter, concept_count
- CorpusStats: extraction readiness fields
- Remove committed artifacts (.wrangler, .artifacts, dispatcher_external)
- Fix .vscode/settings.json hardcoded path

Signed-off-by: trvon <git@trevon.dev>
2026-05-07 21:07:59 -04:00
..
schemas stagging v0.7.0 2025-09-25 16:40:56 -04:00
wit stagging v0.7.0 2025-09-25 16:40:56 -04:00
external_plugin_jsonrpc_protocol.md chore: stabilize CI, faiss, metadata, docker, and simeon (#25) 2026-05-07 21:07:59 -04:00
interface_versions.json v0.7.5 2025-10-11 00:34:31 -04:00
plugin_metadata.schema.json v0.6.12 experiemental 2025-09-11 11:28:42 -04:00
plugin_spec.md weekly update staged. 2025-10-18 00:39:19 -04:00
README.md build(ci,tests): cleaning build system and updates related to ci test failures and compat 2026-04-25 14:48:44 -04:00

YAMS Interfaces & Versions

This directory contains interface specifications and schemas for YAMS plugins and public surfaces.

  • wit/ – WIT definitions for WASM components (e.g., object_storage_v1.wit, dr_provider_v1.wit).
  • New: graph_adapter_v1.wit defines a read-focused property-graph interface with cursor-based iteration and optional import/export and delta-apply.
  • schemas/ – JSON Schemas describing manifests and interface payloads.
  • interface_versions.json – authoritative version registry for public interfaces:
    • Keys: plugin_abi, object_storage_v1, dr_provider_v1, model_provider_v1, etc.
    • New: graph_adapter_v1, graphjson_v1, graph_delta_v1, provenance_v1, card_anchor_v1.
    • Bump the corresponding version when changing WIT/schemas/headers for that interface.

Daemon IPC Note

  • Daemon-managed download jobs are now implemented as an internal IPC surface with:
    • guarded start via DownloadRequest
    • job status
    • job listing
    • job cancel
  • This surface is policy-gated, disabled by default, and not yet treated as a stable external versioned interface in the same way as plugin WIT/schema specs. Policy
  • Any change to public surfaces requires either:
    • A version bump in docs/spec/interface_versions.json for the affected interfaces, or
    • A CHANGELOG/stability note explicitly acknowledging the change.
  • CI enforces this via scripts/ci/check_yams_semver.py during build.

Plugin Naming Policy (ABI)

  • ABI plugins have a configurable naming policy that controls how the daemon chooses a display identity and deduplicates multiple file variants (e.g., libyams_foo_plugin.* and yams_foo_plugin.*) across Linux and macOS:

    • relaxed (default):
      • Canonicalize derived names from filenames when a manifest name is not present.
      • Prefer non-lib prefixes when both variants exist in the same directory.
      • De-duplicate providers by logical name with a path priority of user > system locations.
    • spec:
      • Respect the plugin’s manifest name verbatim for display and selection.
      • Still de-duplicate file variants that provide the same provider.
  • Configuration:

    • Env: YAMS_PLUGIN_NAME_POLICY=spec|relaxed
    • Daemon config: plugin_name_policy: spec|relaxed (if supported by your deployment)

Security and Trust

  • Plugins are only loaded from trusted paths. The canonical trust file is <data_dir>/plugins.trust (default ~/.local/share/yams/plugins.trust, one absolute path per line). CLI helpers: yams plugin trust add|remove ....
  • For development, YAMS_PLUGIN_TRUST_ALL=1 can be set to trust directories discovered in the standard search order; do not use this in production.

Notes

  • Keep WIT and schema filenames aligned with the version keys (e.g., object_storage_v1.wit, object_storage_v1.schema.json) so automated mapping is accurate.
  • For new interfaces, add an entry to interface_versions.json when introducing the first version.
  • GraphAdapter v1 provides read-first APIs. Write operations are intentionally scoped to import and delta-apply to keep implementations simple and deterministic.