Skip to content

vault layer: tess as the knowledge-base provider for agents - #10

Merged
CodeWithInferno merged 1 commit into
mainfrom
vault-layer
Aug 2, 2026
Merged

vault layer: tess as the knowledge-base provider for agents#10
CodeWithInferno merged 1 commit into
mainfrom
vault-layer

Conversation

@CodeWithInferno

Copy link
Copy Markdown
Contributor

What

A full knowledge layer over the TESS_VAULT markdown vault, agent-first: tess vault (orientation map with an explicit default write target, folders, mkdir, init <dir> workspace scaffolding), tess note (new/ls/path/show with frontmatter + {{var}} templates), tess kanban (full CRUD on Lokus-native .kanban files — app-schema-exact cards, atomic writes, mtime CAS against an open app), tess tasks (all 7 checkbox states across notes, line-exact check-off), tess base (database-style queries over frontmatter + saved .base views via a stdlib mini-YAML reader), tess links (backlinks/outlinks/--broken), tess canvas (Excalidraw), plus tess todo start + tess todo board. A new tess-vault skill, primer lines, and docs/vault.md teach agents the whole layer, including the layer-wide exit-code contract (3 = ambiguous, candidates re-runnable verbatim).

Why

Agents had no way to learn what the vault offers or where to write — no discovery, no note creation with conventions, no access to boards/tasks/bases. This makes the vault the default knowledge-base provider for every wired agent, while staying a plain-markdown tool: everything degrades gracefully on any md folder (Obsidian, plain files); Lokus formats light up when present, with zero new required config.

Verified

  • tests/smoke.sh passes — smoke: 105 passed, 0 failed (includes a ~50-case vault battery: kanban schema round-trip through json.load + required-field asserts, exit-3 contracts, [/] todo state, unconfigured-vault guidance per helper, reserved-word refusal)
  • ran the touched commands for real against a live Lokus vault (app running): vault map, tasks (271 open across all states), links backlinks, base query, and a full kanban write lifecycle — add → move → rm on a real board, file restored byte-identical minus metadata.modified
  • adversarially reviewed (correctness / data-safety / integration / agent-UX); all confirmed findings fixed, incl. symlink-hard vault confinement, malformed-board tolerance, and tess add ambiguity becoming exit 3 instead of a guess

Conventions (see CONTRIBUTING.md)

  • nothing user-specific in code, defaults, or examples — machine-specific values go through TESS_* config
  • --help stays safe: never creates a worktree, spawns an agent, or mutates state
  • non-interactive callers (agents/pipes) get inline params + fail-with-guidance, never a hang
  • positional args stay deterministic — ambiguity is an error or a picker, never a guess

- tess vault: orientation map (folders/boards/bases/templates/canvases,
  default write target), folders, mkdir, init <dir> workspace scaffold
- tess note new/ls/path/show: frontmatter + {{var}} templates, exit-3
  ambiguity contract with re-runnable path candidates
- tess kanban: full CRUD on Lokus-native .kanban files — app-schema-exact
  cards, atomic writes, mtime CAS against an open app, malformed-tolerant
- tess tasks: all 7 checkbox states across notes, line-exact check-off;
  reminders now shows every open state
- tess base: database queries over frontmatter + saved .base views
  (stdlib mini-YAML, quote-aware); tess links: backlinks/outlinks/--broken
- tess canvas: Excalidraw list/new (plain Excalidraw JSON)
- tess todo start + board: [/] in-progress state and a kanban view
- new tess-vault skill + primer/docs so agents learn the whole layer
- safety: symlink-hard vault confinement, no dot-path writes, todo id
  regex gate, tess add no longer guesses among same-named notes,
  exact note names win over the app-open fallback
- reserved words only bind at create time (existing features stay
  manageable); 105-case smoke suite
@CodeWithInferno
CodeWithInferno added this pull request to the merge queue Aug 2, 2026
Merged via the queue into main with commit bb6c840 Aug 2, 2026
1 check passed
@CodeWithInferno
CodeWithInferno deleted the vault-layer branch August 2, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant