Skip to content

feat(tags): officially surface tags_match=exact in UI, docs, and clients - #2230

Merged
nicoloboschi merged 1 commit into
mainfrom
feat/tags-match-exact-2159
Jun 16, 2026
Merged

feat(tags): officially surface tags_match=exact in UI, docs, and clients#2230
nicoloboschi merged 1 commit into
mainfrom
feat/tags-match-exact-2159

Conversation

@nicoloboschi

Copy link
Copy Markdown
Collaborator

Summary

The tags_match=exact set-equality match mode was added to the API and the generated clients in #2149 (alongside the /observations/scopes endpoint), but it was never:

  • exposed in the control plane UI,
  • documented, or
  • added to the hand-maintained SDK wrappers.

This PR completes the feature so exact is a first-class, discoverable option everywhere tags_match is. It supersedes #2159 (which was docs-only) and folds those doc edits in.

Changes

Control plane

  • lib/api.ts: add exact to the TagsMatch type and the recall/reflect inline unions
  • think-view.tsx, search-debug-view.tsx: local type + dropdown item
  • mental-models-view.tsx: both trigger-config dropdowns
  • All 10 locale files: translated labels for thinkView.tagsMatchExact, searchDebug.tagsMatchExact, mentalModels.optionsTagsMatchExact (locale-parity test enforces this)

Docs (supersedes #2159)

  • recall.mdx: exact row in the tags_match table, a dedicated exact — set equality section, and exact added to the tag_groups match values
  • reflect.mdx: exact in the tags_match value list
  • observations.mdx: scope-listing guidance pointing to tags_match: "exact"
  • regenerated the docs skill mirror (generate-docs-skill.sh)

Clients

  • python/hindsight_client/hindsight_client.py: exact in the 4 Literal[...] annotations + docstrings
  • typescript/src/index.ts: exact in the 2 unions + JSDoc
  • Rust needs no change — its enum is generated from openapi.json (already contains exact) at build time; the generated clients/OpenAPI spec were already in sync from feat(observations): enumerate + filter + visualize observation scopes #2149.

Verification

  • npx vitest run tests/messages/messages.test.ts — locale parity green (20/20)
  • ./scripts/hooks/lint.sh — green
  • No new tsc errors introduced (the 2 pre-existing ones are in unrelated routes)

The `exact` set-equality match mode landed in the API + generated clients
in #2149 but was never exposed in the control plane, documented, or added
to the hand-maintained SDK wrappers. This completes the feature.

Control plane: add `exact` to the TagsMatch type/unions and to the
tags_match dropdowns in think-view, search-debug-view, and both
mental-model trigger forms; add translated labels to all 10 locales.

Docs: document `exact` in the recall tags_match table + tag_groups,
the reflect tags value list, and the observations scope-listing guide;
regenerate the docs skill mirror.

Clients: add `exact` to the hand-maintained Python and TypeScript wrapper
Literals/unions and docstrings (generated clients already had it; Rust is
generated from openapi.json at build time).

Supersedes #2159.
@nicoloboschi
nicoloboschi merged commit 2f075de into main Jun 16, 2026
167 of 168 checks passed
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