Skip to content

Releases: majorcontext/keep

v0.4.0

11 May 23:41

Choose a tag to compare

Changelog

Features

  • 3b1c02d: feat(cli): add judge verdict support to test fixtures (@dpup)
  • 49c0cbd: feat(cli): add keep eval command for judge quality measurement (@dpup)
  • af42ca9: feat(config): add judge action type and validation (@dpup)
  • 5212568: feat(engine): add context.Context to Evaluate and judge action dispatch (@dpup)
  • e2c75ac: feat(examples): add judge demo rule file and gateway config (@dpup)
  • 15e0f41: feat(examples): add vibe-check judge demo script (@dpup)
  • 9bf9443: feat(judge): add Anthropic provider with model shortcuts (@dpup)
  • bab2ea0: feat(judge): add Cached field to JudgeAudit and populate from JudgeResult (@dpup)
  • b899b52: feat(judge): add Cached field to Verdict type (@dpup)
  • 02aa002: feat(judge): add OpenAI provider with model shortcuts (@dpup)
  • 90bbcb6: feat(judge): add provider interface and types (@dpup)
  • 4bf7b67: feat(judge): implement verdict cache with oldest-first eviction (@dpup)
  • f3a7062: feat(judge): propagate Cached field through JudgeResult and adapter (@dpup)
  • 51052eb: feat(judge): wire verdict cache in gateway, relay, and demo (@dpup)

Bug Fixes

  • fcda727: fix(examples): increase judge timeout to 15s for large context blocks (@dpup)
  • 78deb34: fix(examples): use max-turns 3 in judge demo to match gateway demo (@dpup)
  • d915853: fix(examples): use self-contained prompt for allowed scenario (@dpup)
  • ec42641: fix(judge): bound response body reads and reject unknown decisions (@dpup)
  • f7043f6: fix(judge): harden cache and provider implementations (@dpup)
  • c5f8f88: fix(judge): use structured outputs instead of free-text JSON parsing (@dpup)

Others

  • e66c7a5: docs(examples): add vibe-check judge demo plan (@dpup)
  • 5f25f87: docs(judge): add LLM-as-judge implementation plan (@dpup)
  • bc36f08: docs(judge): add verdict cache design spec (@dpup)
  • 5e0108b: docs(judge): add verdict cache implementation plan (@dpup)
  • 9d3d8a7: docs(judge): address plan review findings (@dpup)
  • e08aa95: docs(plans): add LLM-as-judge design spec (@dpup)
  • 10cb99a: docs(plans): address spec review feedback for LLM-as-judge (@dpup)
  • 775e76d: feat(gateway,relay): add judge provider config (@dpup)
  • 3757577: test(engine): add comprehensive judge action tests (@dpup)

Full Changelog: v0.3.0...v0.4.0

v0.3.0

03 Apr 05:12

Choose a tag to compare

Changelog

Features

  • 66b0e25: feat(config): add version field to rule file schema (@dpup)
  • 521e75c: feat: add SafeEvaluate, NewHTTPCall, NewMCPCall helpers (@dpup)

Bug Fixes

Others

  • 867b2dd: docs(llm): add LLM evaluation library guide (@dpup)
  • c59af5b: docs(plans): add v1.0.0 design spec (@dpup)
  • 8d32239: docs(plans): address spec review feedback (@dpup)
  • 664e465: test(engine): add benchmark suite for evaluation (@dpup)

Full Changelog: v0.2.3...v0.3.0

v0.2.3

27 Mar 20:12

Choose a tag to compare

Changelog

Features

  • 4b9a2a7: feat(llm): add Codec interface and pipeline types (@dpup)
  • 432c889: feat(llm): implement Anthropic codec for llm.Codec interface (@dpup)
  • aa1c872: feat(llm): implement provider-agnostic evaluation pipeline (@dpup)

Refactoring

  • 3569261: refactor(gateway): use llm pipeline for policy evaluation (@dpup)
  • fd4ef3c: refactor(llm): move Anthropic types to public llm/anthropic package (@dpup)
  • 2d424d5: refactor(llm): polish library API surface (@dpup)
  • affd9a7: refactor(sse): promote internal/sse to public sse/ package (@dpup)

Others

  • 546e102: test(llm): add end-to-end pipeline tests with Anthropic codec (@dpup)

Full Changelog: v0.2.2...v0.2.3

v0.2.2

26 Mar 22:33

Choose a tag to compare

Changelog

Features

  • f3bb492: feat(cel): expose context.operation in CEL environment (@dpup)
  • 904f572: feat(engine): add ValidateRuleBytes and RuleSet builder (@dpup)

Full Changelog: v0.2.1...v0.2.2

v0.2.1

26 Mar 18:27

Choose a tag to compare

Changelog

Features

  • d91b78b: feat(engine): add LoadFromBytes for embedded use (@dpup)
  • 0ae80a7: feat(engine): add WithAuditHook for embedded audit callbacks (@dpup)
  • f4d34af: feat(engine): add WithMode option to override scope mode (@dpup)

Full Changelog: v0.2.0...v0.2.1

v0.2.0

26 Mar 00:17

Choose a tag to compare

Changelog

Features

  • 55244da: feat(cel): thread originalParams to hasSecrets for case-sensitive secret detection (@dpup)
  • b19c46e: feat(config): add uppercase literal linter for case-insensitive mode (@dpup)
  • dd448a0: feat(engine): add case normalization helpers, config field, and wiring (@dpup)
  • cf4f311: feat(engine): normalize inputs for case-insensitive matching (@dpup)

Bug Fixes

  • c62e2da: fix(cel): scope hasSecrets detection to the named field, not all params (@dpup)
  • 92336ec: fix(engine): use original-case params in audit ParamsSummary for deny paths (@dpup)
  • e320947: fix(gateway): add bounds check for response block map access (@dpup)
  • d4ef943: fix(gateway): use consistent read-then-unmarshal pattern in connection-refused test (@dpup)
  • 4630ffa: fix(rate): capture clock.Now() before acquiring lock in Increment (@dpup)
  • e03750f: fix(rate): protect stopCh with mutex in StartGC/StopGC (@dpup)
  • e426556: fix(relay): use atomic.Bool for mcp server initialized flag (@dpup)
  • c0cc073: fix: add actionable context to audit logger and pack resolver errors (@dpup)
  • dde88bb: fix: address review findings from round 1 (@dpup)
  • 778a219: fix: harden engine, relay, gateway, and test infrastructure (@dpup)

Refactoring

  • fc378c7: refactor(engine): improve case-insensitive normalization maintainability (@dpup)

Others

  • ed91ec3: docs(concepts): add limitations page (@dpup)
  • 8c44610: docs(engine): add case-insensitive matching design spec (@dpup)
  • d4455ba: docs(engine): add case-insensitive matching implementation plan (@dpup)

Full Changelog: v0.1.0...v0.2.0

v0.1.0

24 Mar 18:23

Choose a tag to compare

Changelog

Features

Bug Fixes

Read more