Skip to content

Releases: majorcontext/keep

v0.6.0

Choose a tag to compare

@dpup dpup released this 22 Jun 19:23
16e0f7c

Added

  • Whole-body hasSecretshasSecrets now accepts a map or list in addition to a string, scanning every string leaf recursively (map values only — keys are field names). hasSecrets(params.body) now works over a parsed JSON request body instead of returning false; previously only a scalar field (hasSecrets(params.body.token)) was detected. Recursion uses the original-case value via the existing _originalParams rewrite, so case normalization does not weaken detection.

v0.5.0

Choose a tag to compare

@dpup dpup released this 18 Jun 22:10
5f4b5d4

Added

  • Request body inspection helpers for HTTP policy evaluation
    • NewHTTPCallWithBody(method, host, path, body) constructs a Call with the decoded request body exposed under params.body, so rules can match on body contents (e.g. params.body.model == 'gpt-4' or hasSecrets(params.body.prompt)). body is typed any, accepting a JSON object, array, or scalar. The existing NewHTTPCall is unchanged.
    • Engine.RequiresBody(scope) reports, from compile-time analysis of the scope's rules, whether any rule references params.body. Gatekeepers can use this as a trigger to decide whether to buffer and parse the request body before evaluating. It fails safe: every idiomatic body reference is detected, and an unrecognized use of the params map (or an unknown scope) returns true so the body is buffered rather than silently skipped.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 11 May 23:41

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

Choose a tag to compare

@github-actions github-actions released this 03 Apr 05:12

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

Choose a tag to compare

@github-actions github-actions released this 27 Mar 20:12

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

Choose a tag to compare

@github-actions github-actions released this 26 Mar 22:33

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

Choose a tag to compare

@github-actions github-actions released this 26 Mar 18:27

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

Choose a tag to compare

@github-actions github-actions released this 26 Mar 00:17

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

Choose a tag to compare

@github-actions github-actions released this 24 Mar 18:23

Changelog

Features

Bug Fixes

Read more