hippo-memory 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -260
- package/dist/api.d.ts +29 -6
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +168 -42
- package/dist/api.js.map +1 -1
- package/dist/audit.d.ts +1 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +20 -4
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +405 -6
- package/dist/cli.js.map +1 -1
- package/dist/connectors/slack/deletion.d.ts +10 -0
- package/dist/connectors/slack/deletion.d.ts.map +1 -1
- package/dist/connectors/slack/deletion.js +21 -10
- package/dist/connectors/slack/deletion.js.map +1 -1
- package/dist/connectors/slack/dlq.d.ts +59 -1
- package/dist/connectors/slack/dlq.d.ts.map +1 -1
- package/dist/connectors/slack/dlq.js +204 -6
- package/dist/connectors/slack/dlq.js.map +1 -1
- package/dist/connectors/slack/idempotency.d.ts +12 -0
- package/dist/connectors/slack/idempotency.d.ts.map +1 -1
- package/dist/connectors/slack/idempotency.js +16 -0
- package/dist/connectors/slack/idempotency.js.map +1 -1
- package/dist/connectors/slack/ingest.d.ts +7 -1
- package/dist/connectors/slack/ingest.d.ts.map +1 -1
- package/dist/connectors/slack/ingest.js +40 -6
- package/dist/connectors/slack/ingest.js.map +1 -1
- package/dist/connectors/slack/signature.d.ts +7 -0
- package/dist/connectors/slack/signature.d.ts.map +1 -1
- package/dist/connectors/slack/signature.js +16 -9
- package/dist/connectors/slack/signature.js.map +1 -1
- package/dist/connectors/slack/tenant-routing.d.ts +15 -7
- package/dist/connectors/slack/tenant-routing.d.ts.map +1 -1
- package/dist/connectors/slack/tenant-routing.js +28 -8
- package/dist/connectors/slack/tenant-routing.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +147 -1
- package/dist/db.js.map +1 -1
- package/dist/goals.d.ts +73 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +227 -0
- package/dist/goals.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +73 -30
- package/dist/mcp/server.js.map +1 -1
- package/dist/raw-archive-mirror-cleanup.d.ts +20 -0
- package/dist/raw-archive-mirror-cleanup.d.ts.map +1 -0
- package/dist/raw-archive-mirror-cleanup.js +53 -0
- package/dist/raw-archive-mirror-cleanup.js.map +1 -0
- package/dist/raw-archive.d.ts +8 -0
- package/dist/raw-archive.d.ts.map +1 -1
- package/dist/raw-archive.js +21 -7
- package/dist/raw-archive.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +142 -18
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +1 -0
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +6 -1
- package/dist/shared.js.map +1 -1
- package/dist/src/api.js +168 -42
- package/dist/src/api.js.map +1 -1
- package/dist/src/audit.js.map +1 -1
- package/dist/src/auth.js +20 -4
- package/dist/src/auth.js.map +1 -1
- package/dist/src/cli.js +405 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/connectors/slack/deletion.js +21 -10
- package/dist/src/connectors/slack/deletion.js.map +1 -1
- package/dist/src/connectors/slack/dlq.js +204 -6
- package/dist/src/connectors/slack/dlq.js.map +1 -1
- package/dist/src/connectors/slack/idempotency.js +16 -0
- package/dist/src/connectors/slack/idempotency.js.map +1 -1
- package/dist/src/connectors/slack/ingest.js +40 -6
- package/dist/src/connectors/slack/ingest.js.map +1 -1
- package/dist/src/connectors/slack/signature.js +16 -9
- package/dist/src/connectors/slack/signature.js.map +1 -1
- package/dist/src/connectors/slack/tenant-routing.js +28 -8
- package/dist/src/connectors/slack/tenant-routing.js.map +1 -1
- package/dist/src/db.js +147 -1
- package/dist/src/db.js.map +1 -1
- package/dist/src/goals.js +227 -0
- package/dist/src/goals.js.map +1 -0
- package/dist/src/mcp/server.js +73 -30
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/raw-archive-mirror-cleanup.js +53 -0
- package/dist/src/raw-archive-mirror-cleanup.js.map +1 -0
- package/dist/src/raw-archive.js +21 -7
- package/dist/src/raw-archive.js.map +1 -1
- package/dist/src/server.js +142 -18
- package/dist/src/server.js.map +1 -1
- package/dist/src/shared.js +6 -1
- package/dist/src/shared.js.map +1 -1
- package/dist/src/store.js +50 -26
- package/dist/src/store.js.map +1 -1
- package/dist/store.d.ts +24 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +50 -26
- package/dist/store.js.map +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,33 +5,57 @@
|
|
|
5
5
|
[](https://npmjs.com/package/hippo-memory)
|
|
6
6
|
[](./LICENSE)
|
|
7
7
|
|
|
8
|
+
A memory layer for AI agents. Modeled on the hippocampus. Decay by default, strength through use, provenance on every memory. SQLite under the hood, zero runtime deps, works with every CLI agent you have.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install -g hippo-memory && hippo init --scan ~
|
|
8
12
|
```
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
One command. Every git repo on your machine gets memory.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Works with: Claude Code, Codex, Cursor, OpenClaw, OpenCode, Pi, any MCP client
|
|
18
|
+
Imports from: ChatGPT, Claude (CLAUDE.md), Cursor (.cursorrules), Slack, markdown
|
|
19
|
+
Storage: SQLite backbone with markdown mirrors. Git-trackable, human-readable.
|
|
20
|
+
Dependencies: Zero runtime deps. Node.js 22.5+. Optional embeddings via @xenova/transformers.
|
|
13
21
|
```
|
|
14
22
|
|
|
15
23
|
---
|
|
16
24
|
|
|
17
|
-
##
|
|
25
|
+
## Why this exists
|
|
26
|
+
|
|
27
|
+
Most "AI memory" systems save everything and search later. That's storage with semantic search bolted on. It's why your agent kept hitting the same deploy bug last week. And the week before. The system saw the failure four times. It had no way to know it should remember.
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
Hippo applies the thing brains have been getting right for 500 million years. Memories decay over time. Retrieval makes them stronger. Three biological layers (buffer, episodic, semantic) consolidate during sleep. Hard lessons stick because you used them. Trivia fades because you didn't.
|
|
20
30
|
|
|
21
|
-
|
|
31
|
+
It also fixes the portability problem. Your ChatGPT memories don't travel to Claude. Your `.cursorrules` don't travel to Codex. Hippo is one process behind every agent. CLAUDE.md, Cursor rules, ChatGPT exports, Slack history, all in one SQLite store, all queryable from any tool that speaks MCP or HTTP.
|
|
22
32
|
|
|
23
33
|
---
|
|
24
34
|
|
|
25
|
-
##
|
|
35
|
+
## Receipts
|
|
36
|
+
|
|
37
|
+
Numbers, not adjectives. Every claim links to the benchmark or the test that proves it.
|
|
26
38
|
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
39
|
+
- **78% → 14% trap rate.** [Sequential Learning Benchmark](benchmarks/sequential-learning/). 50 tasks, 10 buried traps. Measures whether agents actually learn from past mistakes, not just retrieve text.
|
|
40
|
+
- **R@5 = 74.0%** on [LongMemEval](benchmarks/longmemeval/). 500-question industry retrieval benchmark, BM25 only, no embeddings.
|
|
41
|
+
- **10 of 10 incident scenarios beat transcript replay** on a staged Slack corpus ([benchmarks/e1.3/](benchmarks/e1.3/)). Recall surfaces the cause faster than scrolling the last N messages.
|
|
42
|
+
- **0 outbound HTTP** on the 1000-event ingestion smoke. Proven by a `globalThis.fetch` spy that throws on call, not a hardcoded zero.
|
|
43
|
+
- **926 tests, real DB, zero mocks.** Project rule. The one mocks-vs-prod divergence that bit us early is now the constraint that kept the next ten releases honest.
|
|
44
|
+
- **dlPFC goal-conditioned cluster discrimination, 3/3 queries pass** — full goal stack with policy weighting and lifespan-windowed outcome propagation. Per-goal lift on a 3-cluster fixture where BM25 alone cannot discriminate; deterministic test in [`benchmarks/micro/results/b3-depth.json`](benchmarks/micro/results/b3-depth.json).
|
|
31
45
|
|
|
32
46
|
---
|
|
33
47
|
|
|
34
|
-
##
|
|
48
|
+
## What it does for your agent
|
|
49
|
+
|
|
50
|
+
- **Stops repeating mistakes.** Tag a failure with `--tag error` once, the lesson surfaces every time the agent walks back into that part of the code. Errors decay slower than ordinary observations.
|
|
51
|
+
- **Survives tool switches.** Use Claude Code on Monday, Cursor on Tuesday, Codex on Wednesday. Same `.hippo/` store. Same memories. Pick up exactly where you left off.
|
|
52
|
+
- **Ingests systems of record.** Slack today (`POST /v1/connectors/slack/events`). GitHub, Jira, Notion next. Webhooks land as `kind='raw'` memories with full provenance and GDPR-correct deletion.
|
|
53
|
+
- **Knows where every memory came from.** Every row carries `kind`, `scope`, `owner`, and `artifact_ref`. Right-to-be-forgotten is a single API call, not an audit nightmare.
|
|
54
|
+
- **Plays nice with multi-tenant.** API keys, scrypt-hashed. Audit log on every mutation. Tenant A literally cannot see tenant B's memories. Proven by negative test.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Quick start
|
|
35
59
|
|
|
36
60
|
```bash
|
|
37
61
|
npm install -g hippo-memory
|
|
@@ -43,14 +67,15 @@ hippo init
|
|
|
43
67
|
hippo init --scan ~
|
|
44
68
|
```
|
|
45
69
|
|
|
46
|
-
`--scan` finds every git repo under your home directory, creates a `.hippo/` store in each one, and seeds it with lessons from
|
|
70
|
+
`--scan` finds every git repo under your home directory, creates a `.hippo/` store in each one, and seeds it with lessons from the last 30 days of commit history. One command, instant memory across all your projects.
|
|
71
|
+
|
|
72
|
+
After setup, `hippo sleep` runs at session end (via auto-installed agent hooks) and does five things:
|
|
47
73
|
|
|
48
|
-
After setup, `hippo sleep` runs automatically at session end (via agent hooks) and does five things:
|
|
49
74
|
1. **Learns** from today's git commits
|
|
50
75
|
2. **Imports** new entries from Claude Code MEMORY.md files
|
|
51
76
|
3. **Consolidates** memories (decay, merge, prune)
|
|
52
|
-
4. **Deduplicates** near-identical memories
|
|
53
|
-
5. **Shares** high-value lessons to
|
|
77
|
+
4. **Deduplicates** near-identical memories, keeping the stronger copy
|
|
78
|
+
5. **Shares** high-value lessons to a global store so they surface in every project
|
|
54
79
|
|
|
55
80
|
```bash
|
|
56
81
|
# Manual usage
|
|
@@ -60,256 +85,27 @@ hippo recall "data pipeline issues" --budget 2000
|
|
|
60
85
|
|
|
61
86
|
---
|
|
62
87
|
|
|
63
|
-
### What's new in v0.
|
|
64
|
-
|
|
65
|
-
- **Slack ingestion (E1.3).** First end-to-end ingestion connector. `POST /v1/connectors/slack/events` accepts HMAC-signed Events API webhooks; messages land as `kind='raw'` memories with `slack://team/channel/ts` provenance and a `slack:public:*` or `slack:private:*` scope. Source deletions route through `archiveRawMemory` (GDPR). Backfill via `hippo slack backfill --channel <id>`; malformed events to `hippo slack dlq list`.
|
|
66
|
-
- **Schema v17.** New tables: `slack_event_log` (idempotency), `slack_cursors` (backfill resume), `slack_dlq` (parse failures), `slack_workspaces` (team_id to tenant_id routing).
|
|
67
|
-
- **PUBLIC_ROUTES allow-list + HIPPO_REQUIRE_AUTH knob.** Slack webhook is the first explicit public `/v1/*` route (HMAC-signed, no Bearer). Every other `/v1/*` route returns 401 without auth when `HIPPO_REQUIRE_AUTH=1`.
|
|
68
|
-
- **Recall default-deny on private scopes.** No-scope queries cannot see `slack:private:*` memories. Frontend callers passing undefined scope no longer leak private content.
|
|
69
|
-
- **api.remember afterWrite hook.** Connectors stamp idempotency rows atomically with the memory row via a SAVEPOINT-scoped callback.
|
|
70
|
-
|
|
71
|
-
### What's new in v0.36.0
|
|
72
|
-
|
|
73
|
-
- **`hippo serve` daemon.** Persistent HTTP server on 127.0.0.1:6789. CLI auto-detects and becomes a thin client; one process owns the SQLite DB.
|
|
74
|
-
- **MCP-over-HTTP.** MCP clients can now connect over HTTP/SSE in addition to stdio. Same tool surface.
|
|
75
|
-
- **Bearer-token auth + loopback trust.** Set HIPPO_API_KEY for remote calls; loopback connections work without a key. Server refuses to bind to non-loopback host without auth.
|
|
76
|
-
- **Audit log fix.** Mutations on non-default tenants are now correctly attributed in the audit log (was using HIPPO_TENANT env, now uses the row's tenant_id).
|
|
77
|
-
- **Tenant deny on archive/forget.** A valid Bearer for tenant A can no longer affect tenant B's memories, cross-tenant requests return "memory not found".
|
|
78
|
-
- **Known issue:** p99 recall latency is 58.4ms on a 10k store, target is 50ms. Architecture ships; latency hardening in v0.37.0.
|
|
79
|
-
|
|
80
|
-
### What's new in v0.35.0
|
|
81
|
-
|
|
82
|
-
- **Stub auth landed.** API keys + audit log + per-tenant data isolation. `hippo auth create` mints a scrypt-hashed key shown plaintext exactly once. `hippo audit list` exposes the mutation trail.
|
|
83
|
-
- **Cross-tenant safety.** Set `HIPPO_TENANT=acme` (or pass an API key) and recall, explain, context, MCP, and dashboard all filter by that tenant. Tenant A cannot see tenant B's memories, proven by negative test.
|
|
84
|
-
- **Audit trail.** Every mutation writes to `audit_log`: remember, recall, promote, supersede, forget, archive, auth_revoke. Query with `hippo audit list --op recall --since 2026-04-01 --json`.
|
|
85
|
-
- **Schema v16.** `tenant_id` columns added to memories and four other tables, default 'default'. Existing data is unaffected.
|
|
86
|
-
- **SSO/SCIM stubs.** Hook points exist (throw `NotImplementedError`); full multi-tenant + OAuth deferred to v2.
|
|
87
|
-
|
|
88
|
-
### What's new in v0.34.0
|
|
89
|
-
|
|
90
|
-
- **Provenance envelope on every memory.** `kind` (raw / distilled / superseded), `scope`, `owner`, `artifact_ref` columns now ride alongside content. `hippo recall --why` shows them; `hippo remember --kind --scope --owner --artifact-ref` sets them. Foundation for ingestion connectors and right-to-be-forgotten.
|
|
91
|
-
- **Append-only invariant on raw memories.** `kind='raw'` rows can only leave the store via `archiveRawMemory(db, id, { reason, who })`, which audits into the new `raw_archive` table. Direct DELETE aborts via trigger. Sets up A4 lifecycle compliance.
|
|
92
|
-
- **Schema v14 + v15.** Auto-migrates on first open. Backwards compatible.
|
|
93
|
-
- **Pineal salience v2.** `--salience-threshold` for tuning the recall salience gate.
|
|
94
|
-
- **Enterprise execution roadmap.** New `ROADMAP-RESEARCH.md` re-sequences the 90-day plan after Codex + eng-review pass. Provenance first, then auth stub, then server mode, then first ingestion connector.
|
|
95
|
-
|
|
96
|
-
### What's new in v0.33.0
|
|
97
|
-
|
|
98
|
-
- **Fact extraction at sleep time.** `hippo sleep` now extracts standalone facts from episodic memories via LLM, stored as semantic-layer entries that score 1.3x higher and auto-deduplicate against their raw source in search results.
|
|
99
|
-
- **DAG summarization.** Extracted facts cluster by entity similarity into summary nodes. When a summary matches your query, its children drill down into results automatically.
|
|
100
|
-
- **Multi-hop retrieval.** `hippo recall --multihop` chains two search passes via entity tags discovered in the first pass, finding connections that single-pass search misses.
|
|
101
|
-
- **`hippo dag --stats`** shows how your memory is organized across DAG levels.
|
|
102
|
-
- **Performance fix.** Temporal scoring refactored from O(N^2) to O(N), eliminating stack overflow risk on large stores.
|
|
103
|
-
|
|
104
|
-
### What's new in v0.32.0
|
|
105
|
-
|
|
106
|
-
- **Correction without deletion.** `hippo supersede <old-id> "<new content>"` links the old memory as historical truth and creates a successor. Default recall shows only current beliefs; the old one stays in the store so you can audit what changed and when.
|
|
107
|
-
- **`--include-superseded`** on `recall` and `explain` surfaces historical memories with a `[superseded]` marker. Useful for "what did I used to think about X?"
|
|
108
|
-
- **`--as-of <ISO-date>`** returns the set of beliefs that were current at a past moment. Invalid dates exit with a clear format hint.
|
|
109
|
-
- **Schema v11, zero breaking changes.** Adds `valid_from` + `superseded_by` columns. Existing v10 stores upgrade on first open, no data loss, no manual migration.
|
|
110
|
-
- **Physics search ablation: CUT.** Benchmarked over 60 LongMemEval-oracle questions: physics-on is statistically worse than plain BM25 + embeddings on MRR, Recall@5, and NDCG@5 (paired bootstrap, 5000 iters, 95% CI excludes zero). Full results in `benchmarks/physics-ablation/`. Physics stays in the codebase this release; removal is a separate decision.
|
|
111
|
-
|
|
112
|
-
### What's new in v0.31.0
|
|
113
|
-
|
|
114
|
-
- **Scope-aware corrections.** Tag a memory with `hippo remember --scope plan-eng-review` and it only surfaces strongly when that scope is active again. Matching scope gets 1.5x boost, mismatching scope is suppressed 0.5x, unscoped memories stay neutral. Corrections said during one skill stop polluting unrelated contexts.
|
|
115
|
-
- **Auto-detect from env.** `HIPPO_SCOPE`, `GSTACK_SKILL`, `OPENCLAW_SKILL` populate the scope automatically. Explicit `--scope` on any command overrides.
|
|
116
|
-
- **`hippo explain --why`** now shows the `scope:` multiplier when it fires, so you can see why a memory got ranked up or down.
|
|
117
|
-
|
|
118
|
-
### What's new in v0.30.1
|
|
119
|
-
|
|
120
|
-
- **`hippo recall --layer <L>` is now a strict filter.** Previously the flag was accepted but silently dropped; other layers leaked into results. The RSI demo's `recall --layer trace` now does what it says.
|
|
121
|
-
- **`hippo status` prints a `Trace:` counter.** The new layer is visible in status output.
|
|
122
|
-
- **`hippo --version` / `-v`** works as expected. Previously errored.
|
|
123
|
-
|
|
124
|
-
### What's new in v0.30.0
|
|
125
|
-
|
|
126
|
-
- **Sequence binding for recursive-self-improvement agents.** New `Layer.Trace` memories store ordered `A → B → C → outcome` traces. Agents can `hippo trace record` explicitly, or just call `hippo session complete --outcome success` and let `hippo sleep` auto-promote completed sessions into queryable traces.
|
|
127
|
-
- **`hippo recall --outcome success`** — retrieve only successful prior strategies. The missing RSI primitive: "what worked last time I tried this?"
|
|
128
|
-
- **`examples/rsi-demo/`** — a minimal self-improving agent, deterministic and CI-runnable. Uses traces to learn. Current seed: 20% success on tasks 1-10 rising to 100% on tasks 41-50. Non-zero exit if the learning curve collapses — the demo is also the integration test.
|
|
129
|
-
- **Schema v3 migration, with a regression test that preserves existing data.** Idempotent auto-promotion via indexed `source_session_id`. Four inheritance smoke tests lock the claim that traces get decay / search / replay / physics "for free."
|
|
130
|
-
|
|
131
|
-
### What's new in v0.29.3
|
|
132
|
-
|
|
133
|
-
- **Post-install banner for Claude Code users.** After `npm install -g hippo-memory`, if Claude Code is detected but the Hippo hook isn't wired yet, a three-line message points the user at `hippo init`. Silent on reinstalls or machines without Claude Code. Opt out via `HIPPO_SKIP_POSTINSTALL=1`.
|
|
134
|
-
|
|
135
|
-
### What's new in v0.29.2
|
|
136
|
-
|
|
137
|
-
- **Fix UserPromptSubmit hook in fresh directories.** In v0.29.0/0.29.1, the `hippo context --pinned-only` hook errored with "No .hippo directory found" every time Claude Code opened a session in a cwd without a local hippo store, and would silently auto-create `.hippo/` there. Fixed: pinned-only falls back to global-only, leaves cwd untouched.
|
|
138
|
-
|
|
139
|
-
### What's new in v0.29.1
|
|
140
|
-
|
|
141
|
-
- **Raise default `pinnedInject.budget` to 1500.** Smoke-testing on a real 10-pinned-memory store showed 500 tokens truncated new invariants off the bottom. 1500 matches `defaultContextBudget` and fits typical mature installs. Explicit `.hippo/config.json` overrides are untouched; only the default changes.
|
|
142
|
-
|
|
143
|
-
### What's new in v0.29.0
|
|
144
|
-
|
|
145
|
-
- **Mid-session pinned re-injection (Claude Code).** Pinned memories now re-enter context every turn via a new `UserPromptSubmit` hook — not just at SessionStart — so invariants survive long sessions where Opus 4.7 might otherwise forget them. `hippo context --pinned-only --format additional-context` is the command the hook runs; it's read-only so retrieval_count doesn't inflate. Existing users must re-run `hippo hook install claude-code` to pick it up. Opt out with `{"pinnedInject":{"enabled":false}}` in `.hippo/config.json`.
|
|
146
|
-
- **Replay consolidation pass.** `hippo sleep` now rehearses 5 high-value memories per cycle (weighted by outcome feedback, emotional valence, under-rehearsal, idle time, strength). Closes the "replay" gap in the 7 hippocampal mechanisms. Non-destructive; opt out with `{"replay":{"count":0}}`.
|
|
147
|
-
- **Model profile benchmark (null result).** New reusable eval harness at `evals/model-profile-bench.json` + `scripts/run-model-profile-bench.mjs` measures invariant honor, hallucination guard, noise rejection, and contradiction rejection. 4.6 and 4.7 both score 100% with hippo context injection — no per-model profile tuning needed. See `docs/plans/2026-04-21-phase-a-decision.md`.
|
|
148
|
-
- **Physics soak test harness.** `scripts/soak-test.mjs` + 10 synthetic workload profiles. All 10 bounded at 100-tick smoke scale; grant-scale 100hr runs are separate follow-up work.
|
|
149
|
-
|
|
150
|
-
### What's new in v0.28.0
|
|
151
|
-
|
|
152
|
-
- **Budget saturation fix.** Large memories (14k+ chars) no longer starve retrieval. New `minResults` option guarantees at least N results regardless of token budget. `hippo recall <q> --min-results 5`.
|
|
153
|
-
- **LongMemEval parity restored.** The 35pp R@10 gap vs v0.11 was a benchmark methodology issue (budget-limited vs unlimited comparison). Corrected: v0.28 R@3 67.0% (+0.4pp), answer_in_content@5 49.6% (+3.0pp), R@10 81.0% (-1.6pp). Top-5 results now more often contain the actual answer.
|
|
154
|
-
- **MMR performance.** Re-ranking capped at top-100 candidates, dropping per-query time from ~50s to ~9s. `preparedCorpus` option skips per-query tokenization for batch callers.
|
|
155
|
-
- **RRF scoring option.** `hybridSearch` accepts `scoring: 'rrf'` for reciprocal rank fusion as an alternative to score blending.
|
|
156
|
-
- **`hippo refine` command.** LLM-powered semantic rewrite of memories for improved recall quality.
|
|
157
|
-
|
|
158
|
-
### What's new in v0.27.0
|
|
159
|
-
|
|
160
|
-
- **Recall is now debuggable.** `hippo explain <query>` prints the full score breakdown for each retrieved memory: BM25 + cosine, every multiplier (strength, recency, decision, path, source-bump, outcome), age, and final composite. Read-only so it's safe to run as a diagnostic.
|
|
161
|
-
- **`hippo trace <id>`** gives a one-page dossier per memory: decay trajectory projected to 30/90 days, effective half-life, retrieval staleness, outcome counts, consolidation parents, open conflicts.
|
|
162
|
-
- **MMR diversity** re-ranks near-duplicate results so you don't get five paraphrases at the top. Default `lambda=0.7`, tunable via config or `--no-mmr` / `--mmr-lambda`.
|
|
163
|
-
- **Outcome feedback is immediate.** `hippo outcome --good` now nudges that memory up on the very next recall (not just via slow half-life decay). Bounded at +/-15%.
|
|
164
|
-
- **`hippo eval`** measures recall quality against a test corpus (MRR, Recall@K, NDCG@K). Gate CI with `--min-mrr`. A real 15-case corpus ships at `evals/real-corpus.json`; baseline numbers in `evals/README.md`.
|
|
165
|
-
|
|
166
|
-
### What's new in v0.26.0
|
|
167
|
-
|
|
168
|
-
- **`hippo audit` catches junk memories.** New command flags too-short entries, release/merge/WIP commit noise, fragments, and vague single-clause notes. `--fix` removes the worst offenders. `hippo sleep` now runs audit automatically so commit-noise never survives consolidation.
|
|
169
|
-
- **Conflict detector stops firing on English prepositions.** The v0.25 detector was scanning whole memory bodies and flagging 800+ bogus "polarity mismatch" conflicts anywhere the words `on` / `off` / `in` / `out` appeared together. Rewritten to use stopword-filtered Jaccard, a rare-token gate, and an opening-window polarity check.
|
|
170
|
-
- **`hippo remember` rejects tiny inputs.** Content under 3 characters is blocked at the CLI with a clear error.
|
|
171
|
-
|
|
172
|
-
### What's new in v0.24.2
|
|
173
|
-
|
|
174
|
-
- **One daily runner per machine, not one task per project.** `hippo init` now registers each workspace and installs a machine-level `hippo daily-runner` job that sweeps every registered Hippo project at 6:15am.
|
|
175
|
-
- **OpenClaw session-end autosleep no longer blocks shutdown.** The native OpenClaw plugin now detaches `hippo sleep` on `session_end` when `autoSleep` is enabled.
|
|
176
|
-
- **Retrieval and refresh are now documented separately across tools.** Query-time recall still uses local plus global memory, while session-end hooks and the daily runner handle consolidation on their own paths.
|
|
177
|
-
|
|
178
|
-
### What's new in v0.24.1
|
|
88
|
+
### What's new in v0.39.0
|
|
179
89
|
|
|
180
|
-
-
|
|
181
|
-
- **Reworded contradictions still get caught.** Hippo keeps pairs like `API auth must be enabled in prod` / `Disable API auth in prod` while dropping the false positives that triggered the review.
|
|
182
|
-
- **Broader regression coverage.** This release adds tests for the exact false-positive examples from the migrated store plus extra polarity cases like `must` vs `should not` and `available` vs `missing`.
|
|
90
|
+
- Security hardening release: 5 CRITICAL cross-tenant fixes (CVE candidates), GDPR Path A on archive (true RTBF), MCP per-client isolation, Slack ingestion race + idempotency hardening, auth timing leak reduction.
|
|
183
91
|
|
|
184
|
-
### What's new in v0.
|
|
92
|
+
### What's new in v0.38.0
|
|
185
93
|
|
|
186
|
-
- **
|
|
187
|
-
- **
|
|
188
|
-
- **
|
|
94
|
+
- **B3 dlPFC persistent goal stack (depth 3).** Schema v18 adds `goal_stack`, `retrieval_policy`, `goal_recall_log`. New CLI subcommands: `hippo goal push|list|complete|suspend|resume`. With `HIPPO_SESSION_ID` set, `hippo recall` auto-boosts memories tagged with the active goal (final multiplier hard-capped at 3.0x). Retrieval policies (`error-prioritized`, `schema-fit-biased`, `recency-first`, `hybrid`) further shape ranking.
|
|
95
|
+
- **Outcome propagation with lifespan window.** `hippo goal complete --outcome <score>` adjusts strength only on memories actually recalled while the goal was alive. `outcome >= 0.7` boosts (×1.10), `outcome < 0.3` decays (×0.85), neutral band leaves strength alone. UNIQUE(memory_id, goal_id) prevents double-propagation.
|
|
96
|
+
- **B3 cluster-discrimination micro-benchmark.** `benchmarks/micro/fixtures/dlpfc_depth.json` — 3 disjoint memory clusters under 3 named goals. Each query asserts the active goal's cluster is in top-3 AND the other two clusters are NOT, a deterministic test BM25 alone cannot pass. Receipt: 3/3 queries pass in [`benchmarks/micro/results/b3-depth.json`](benchmarks/micro/results/b3-depth.json).
|
|
97
|
+
- **Deferred to v0.39:** sequential-learning trap-rate lift (needs adapter contract change), MCP/REST `session_id` plumbing, vlPFC interference handling, `--no-propagate` flag.
|
|
189
98
|
|
|
190
|
-
### What's new in v0.
|
|
191
|
-
|
|
192
|
-
- **SessionEnd no longer gets killed by TUI teardown.** Claude Code / OpenCode send SIGTERM to hook children as the TUI shuts down. The old 0.22.x split entries (`hippo sleep` + `hippo capture`) ran in parallel and were both killed before completion, so the log rarely had the completion markers. 0.23.0 installs a single `hippo session-end --log-file <path>` entry that spawns a fully detached Node child (via `spawn({detached:true, stdio:'ignore', windowsHide:true}).unref()`), returns in <100ms, and lets the worker run sleep → capture to completion independently. Cross-platform — Windows, macOS, Linux.
|
|
193
|
-
- **Auto-migration** collapses the old 0.22.x two-entry form into the new single entry on re-run of `hippo setup` / `hippo hook install <target>`.
|
|
194
|
-
|
|
195
|
-
### What's new in v0.22.1
|
|
196
|
-
|
|
197
|
-
- **SessionEnd capture output actually shows up.** 0.22.0 installed `hippo capture --last-session` without a log tee, so its output was swallowed by the TUI teardown. 0.22.1 adds `--log-file` to `hippo capture` and the installer now wires capture into the same log file as `hippo sleep` — you see both "sleep complete" and "capture complete" on the next session start via `hippo last-sleep`. Existing installs auto-migrate to the new form on re-run.
|
|
198
|
-
|
|
199
|
-
### What's new in v0.22.0
|
|
200
|
-
|
|
201
|
-
- **`hippo capture --last-session` works.** The placeholder from earlier releases is now implemented. It reads the JSONL transcript of the most recent agent session and extracts actionable memories (decisions, rules, errors, preferences). Resolves the transcript from `--transcript <path>`, stdin JSON payload (the shape SessionEnd hooks pass), or auto-discovery under `~/.claude/projects/`.
|
|
202
|
-
- **SessionEnd auto-runs `hippo capture`.** `hippo init` / `hippo setup` now installs a second SessionEnd entry alongside `hippo sleep` — one summary per `/exit`, not per turn. Existing installs pick it up on re-run (idempotent).
|
|
203
|
-
- **Claude Code plugin moved off `Stop`.** The plugin's `hooks.json` now fires sleep + capture + outcome on `SessionEnd`, matching the JSON-hook install path.
|
|
204
|
-
|
|
205
|
-
```bash
|
|
206
|
-
npm install -g hippo-memory
|
|
207
|
-
hippo setup # picks up the new SessionEnd capture hook
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### What's new in v0.21.0
|
|
211
|
-
|
|
212
|
-
- **`hippo setup` — one command, every tool.** Detects Claude Code, OpenCode, OpenClaw, Codex, Cursor, and Pi on your machine and installs all available SessionEnd + SessionStart hooks in one pass. It also repairs the machine-level daily runner. Idempotent — safe to re-run.
|
|
213
|
-
- **OpenCode hooks.** SessionEnd + SessionStart install into `~/.config/opencode/opencode.json` (OpenCode added Claude-Code-compatible hooks in Jan 2026).
|
|
214
|
-
- **You actually see consolidation output now.** New `SessionStart` hook prints the previous session's `hippo sleep` output between banners on the next startup. Previously, SessionEnd output was invisible because the TUI was tearing down when it ran.
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
npm install -g hippo-memory
|
|
218
|
-
hippo setup # or: hippo hook install claude-code
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### What's new in v0.20.3
|
|
222
|
-
|
|
223
|
-
- **Visible confirmation on session-end sleep.** The installed `SessionEnd` hook now echoes `[hippo] consolidating memory...` before running and `[hippo] sleep complete` / `[hippo] sleep failed` after, so you can see consolidation actually ran. Existing installs need a reinstall (`hippo hook uninstall claude-code && hippo hook install claude-code`) to pick up the new command.
|
|
224
|
-
|
|
225
|
-
### What's new in v0.20.2
|
|
226
|
-
|
|
227
|
-
- **Claude Code hook uses `SessionEnd`, not `Stop`.** Earlier versions ran `hippo sleep` after every assistant turn; now it runs once at session exit. Re-running `hippo hook install claude-code` migrates existing `Stop` entries automatically.
|
|
228
|
-
- **No more accidental `CLAUDE.md` files.** `hippo hook install` and `hippo init` only patch agent-instruction files that already exist — they no longer create fresh ones in unrelated directories.
|
|
229
|
-
|
|
230
|
-
### What's new in v0.20
|
|
231
|
-
|
|
232
|
-
- **`hippo dedup`.** Scans for near-duplicate memories, shows you what's duplicated and why (redundant semantic patterns, same lesson from multiple sources, cross-layer overlap), and removes the weaker copy. Runs automatically during `hippo sleep`.
|
|
233
|
-
- **MEMORY.md import.** `hippo init` and `hippo sleep` now scan Claude Code memory files and import new entries. Your agent memories from Claude Code flow into hippo automatically.
|
|
234
|
-
|
|
235
|
-
### What's new in v0.19.1
|
|
236
|
-
|
|
237
|
-
- **Configured embedding models now work end to end.** `hippo embed`, hybrid search, and physics search all respect `embeddings.model` from `.hippo/config.json`.
|
|
238
|
-
- **Safe rebuild on model change.** If you switch embedding models, rerun `hippo embed`. Hippo now rebuilds cached embeddings and resets physics state so old vectors are not mixed with the new model.
|
|
239
|
-
|
|
240
|
-
### What's new in v0.18
|
|
241
|
-
|
|
242
|
-
- **Multi-project auto-discovery.** `hippo init --scan [dir]` finds all git repos under a directory and initializes each one. Seeds with a full year of git history by default. One command to set up memory across all your projects.
|
|
243
|
-
|
|
244
|
-
### What's new in v0.17
|
|
245
|
-
|
|
246
|
-
- **Auto-share to global.** `hippo sleep` now promotes high-value memories to the global store automatically. Universal lessons travel across projects; project-specific memories stay local. No manual `hippo promote` needed.
|
|
247
|
-
|
|
248
|
-
### What's new in v0.16
|
|
249
|
-
|
|
250
|
-
- **Auto-learn from git.** `hippo init` seeds the store with 30 days of commit history. `hippo sleep` captures today's commits before consolidation. New users get instant memory; existing users get continuous learning. Both skippable with `--no-learn`.
|
|
251
|
-
|
|
252
|
-
### What's new in v0.15
|
|
253
|
-
|
|
254
|
-
- **Adaptive decay for intermittent agents.** Memories now decay based on how often the agent actually runs, not wall-clock time. A weekly agent's memories persist ~7x longer automatically. Three modes via `decayBasis` in `.hippo/config.json`: `"adaptive"` (default), `"session"`, or `"clock"`.
|
|
255
|
-
|
|
256
|
-
### What's new in v0.14
|
|
257
|
-
|
|
258
|
-
- **OpenClaw backup cleanup.** Plugin updates no longer leave `hippo-memory.bak-*` directories that cause duplicate plugin ID errors. Cleanup runs automatically at boot.
|
|
259
|
-
|
|
260
|
-
### What's new in v0.13
|
|
261
|
-
|
|
262
|
-
- **Security: command injection fixed.** OpenClaw plugin now uses `execFileSync` (no shell). All user input is passed as array args, eliminating shell injection vectors.
|
|
263
|
-
- **25+ bug fixes** across search, embeddings, physics, MCP server, store, and CLI: NaN propagation, token budget accuracy, atomic writes, FTS/LIKE escaping, Buffer-based MCP parsing, protocol compliance, and more. See [CHANGELOG](./CHANGELOG.md) for the full list.
|
|
264
|
-
|
|
265
|
-
### What's new in v0.12
|
|
266
|
-
|
|
267
|
-
- **Configurable global store.** Set `$HIPPO_HOME` or use XDG (`$XDG_DATA_HOME/hippo`) to put the global store wherever you want. Falls back to `~/.hippo/` if neither is set.
|
|
268
|
-
|
|
269
|
-
### What's new in v0.11
|
|
270
|
-
|
|
271
|
-
- **OpenClaw error capture filtering.** The `autoLearn` hook now applies three filters before storing tool errors: noise pattern filter, per-session rate limiting (max 5), and deduplication. Prevents memory pollution from infrastructure noise.
|
|
272
|
-
- **Orphaned embedding pruning.** `hippo embed` removes cached vectors for deleted memories.
|
|
273
|
-
- **Cross-platform path handling.** OpenClaw plugin uses `path/posix` for consistent `.hippo` detection on Unix with Windows-style paths.
|
|
274
|
-
|
|
275
|
-
### What's new in v0.11.0
|
|
276
|
-
|
|
277
|
-
- **Reward-proportional decay.** Outcome feedback now modulates decay rate continuously instead of fixed half-life deltas. Memories with consistent positive outcomes decay up to 1.5x slower; consistent negatives decay up to 2x faster. Mixed outcomes converge toward neutral. Inspired by R-STDP in spiking neural networks. `hippo inspect` now shows cumulative outcome counts and the computed reward factor.
|
|
278
|
-
- **Public benchmarks.** Two benchmarks in `benchmarks/`: a [Sequential Learning Benchmark](benchmarks/sequential-learning/) (50 tasks, 10 traps, measures agent improvement over time) and a [LongMemEval integration](benchmarks/longmemeval/) (industry-standard 500-question retrieval benchmark, R@5=74.0% with BM25 only). The sequential learning benchmark is unique: no other public benchmark tests whether memory systems produce learning curves.
|
|
279
|
-
|
|
280
|
-
### What's new in v0.10.0
|
|
281
|
-
|
|
282
|
-
- **Active invalidation.** `hippo learn --git` detects migration and breaking-change commits and actively weakens memories referencing the old pattern. Manual invalidation via `hippo invalidate "REST API" --reason "migrated to GraphQL"`.
|
|
283
|
-
- **Architectural decisions.** `hippo decide` stores one-off decisions with 90-day half-life and verified confidence. Supports `--context` for reasoning and `--supersedes` to chain decisions when the architecture evolves.
|
|
284
|
-
- **Path-based memory triggers.** Memories auto-tagged with `path:<segment>` from your working directory. Recall boosts memories from the same location (up to 1.3x). Working in `src/api/`? API-related memories surface first.
|
|
285
|
-
- **OpenCode integration.** `hippo hook install opencode` patches AGENTS.md. Auto-detected during `hippo init`. Integration guide with MCP config and skill for progressive discovery.
|
|
286
|
-
- **`hippo export`** outputs all memories as JSON or markdown.
|
|
287
|
-
- **Decision recall boost.** 1.2x scoring multiplier for decision-tagged memories so they surface despite low retrieval frequency.
|
|
288
|
-
|
|
289
|
-
### What's new in v0.9.1
|
|
290
|
-
|
|
291
|
-
- **Auto-sleep on session exit.** `hippo hook install claude-code` now installs a Stop hook in `~/.claude/settings.json` so `hippo sleep` runs automatically when Claude Code exits. `hippo init` does this too when Claude Code is detected. No cron needed, no manual sleep.
|
|
292
|
-
|
|
293
|
-
### What's new in v0.9.0
|
|
99
|
+
### What's new in v0.37.0
|
|
294
100
|
|
|
295
|
-
- **
|
|
296
|
-
- **
|
|
297
|
-
-
|
|
298
|
-
- **
|
|
299
|
-
- **`
|
|
300
|
-
- **SQLite lock hardening**: `busy_timeout=5000`, `synchronous=NORMAL`, `wal_autocheckpoint=100`. Concurrent plugin calls no longer hit `SQLITE_BUSY`.
|
|
301
|
-
- **Consolidation batching**: all writes/deletes happen in a single transaction instead of N open/close cycles.
|
|
302
|
-
- **`--limit` flag** on `hippo recall` and `hippo context` to cap result count independently of token budget.
|
|
303
|
-
- **Plugin injection dedup guard** prevents double context injection on reconnect.
|
|
101
|
+
- **Slack ingestion (E1.3).** First end-to-end ingestion connector. `POST /v1/connectors/slack/events` accepts HMAC-signed Events API webhooks; messages land as `kind='raw'` memories with `slack://team/channel/ts` provenance and a `slack:public:*` or `slack:private:*` scope. Source deletions route through `archiveRawMemory` (GDPR). Backfill via `hippo slack backfill --channel <id>`; malformed events to `hippo slack dlq list`.
|
|
102
|
+
- **Schema v17.** New tables: `slack_event_log` (idempotency), `slack_cursors` (backfill resume), `slack_dlq` (parse failures), `slack_workspaces` (team_id to tenant_id routing).
|
|
103
|
+
- **`PUBLIC_ROUTES` allow-list + `HIPPO_REQUIRE_AUTH` knob.** The Slack webhook is the first explicit public `/v1/*` route (HMAC-signed, no Bearer). Every other `/v1/*` route returns 401 without auth when `HIPPO_REQUIRE_AUTH=1`.
|
|
104
|
+
- **Recall default-deny on private scopes.** No-scope queries cannot see `slack:private:*` memories. Frontend callers passing undefined scope no longer leak private content.
|
|
105
|
+
- **`api.remember.afterWrite` hook.** Connectors stamp idempotency rows atomically with the memory row via a SAVEPOINT-scoped callback.
|
|
304
106
|
|
|
305
|
-
|
|
107
|
+
For everything since v0.8.0, see [CHANGELOG.md](./CHANGELOG.md).
|
|
306
108
|
|
|
307
|
-
- **Hybrid search** blends BM25 keywords with cosine embedding similarity. Install `@xenova/transformers`, run `hippo embed`, recall quality jumps. Falls back to BM25 otherwise.
|
|
308
|
-
- Configure a custom embedding model with `embeddings.model` in `.hippo/config.json`. If you change models later, rerun `hippo embed` so Hippo rebuilds cached embeddings and physics state for the new vector space.
|
|
309
|
-
- **Schema acceleration** auto-computes how well new memories fit existing patterns. Familiar memories consolidate faster; novel ones decay faster if unused.
|
|
310
|
-
- **Multi-agent shared memory** with `hippo share`, `hippo peers`, and transfer scoring. Universal lessons travel between projects; project-specific config stays local.
|
|
311
|
-
- **Conflict resolution** via `hippo resolve <id> --keep <mem_id>`. Closes the detect-inspect-resolve loop.
|
|
312
|
-
- **Agent eval benchmark** validates the learning hypothesis: hippo agents drop from 78% trap rate to 14% over a 50-task sequence.
|
|
313
109
|
|
|
314
110
|
### Zero-config agent integration
|
|
315
111
|
|
package/dist/api.d.ts
CHANGED
|
@@ -73,6 +73,16 @@ export interface RecallResult {
|
|
|
73
73
|
* loader; later tasks can extend this to call the physics/hybrid scorer.
|
|
74
74
|
*/
|
|
75
75
|
export declare function recall(ctx: Context, opts: RecallOpts): RecallResult;
|
|
76
|
+
/**
|
|
77
|
+
* Apply a positive/negative outcome to a list of recently-recalled memory ids.
|
|
78
|
+
* Used by the MCP `hippo_outcome` tool. Tenant-scoped: ids that don't belong
|
|
79
|
+
* to ctx.tenantId are silently skipped (matches the prior MCP semantics —
|
|
80
|
+
* a stale id from another tenant doesn't crash the call). Each successful
|
|
81
|
+
* outcome emits one audit_log row with op='outcome' tagged with ctx.actor.
|
|
82
|
+
*/
|
|
83
|
+
export declare function outcome(ctx: Context, ids: ReadonlyArray<string>, good: boolean): {
|
|
84
|
+
applied: number;
|
|
85
|
+
};
|
|
76
86
|
/**
|
|
77
87
|
* Delete a memory by id. `deleteEntry` threads ctx.actor into its internal
|
|
78
88
|
* audit hook, so exactly one 'forget' event lands with the supplied actor.
|
|
@@ -123,14 +133,20 @@ export declare function supersede(ctx: Context, oldId: string, newContent: strin
|
|
|
123
133
|
* helpers hardcode actor='cli'). Instead we pass `ctx.actor` through as `who`,
|
|
124
134
|
* and raw-archive.ts uses that for the audit row.
|
|
125
135
|
*/
|
|
126
|
-
export
|
|
136
|
+
export interface ArchiveRawOpts {
|
|
137
|
+
/**
|
|
138
|
+
* Connector idempotency hook (v0.39 commit 3). Runs inside the same
|
|
139
|
+
* SAVEPOINT as the archive — throwing rolls the archive back. Used by the
|
|
140
|
+
* Slack deletion connector to mark the deletion event seen atomically.
|
|
141
|
+
*/
|
|
142
|
+
afterArchive?: (db: DatabaseSyncLike, archivedMemoryId: string) => void;
|
|
143
|
+
}
|
|
144
|
+
export declare function archiveRaw(ctx: Context, id: string, reason: string, opts?: ArchiveRawOpts): {
|
|
127
145
|
ok: true;
|
|
128
146
|
archivedAt: string;
|
|
129
147
|
};
|
|
130
148
|
export interface AuthCreateOpts {
|
|
131
149
|
label?: string;
|
|
132
|
-
/** Override the calling tenant (e.g. admin minting a key for tenant B). */
|
|
133
|
-
tenantId?: string;
|
|
134
150
|
}
|
|
135
151
|
export interface AuthCreateResult {
|
|
136
152
|
keyId: string;
|
|
@@ -138,9 +154,16 @@ export interface AuthCreateResult {
|
|
|
138
154
|
tenantId: string;
|
|
139
155
|
}
|
|
140
156
|
/**
|
|
141
|
-
* Mint a new API key.
|
|
142
|
-
*
|
|
143
|
-
*
|
|
157
|
+
* Mint a new API key. The new key is ALWAYS bound to `ctx.tenantId`. Callers
|
|
158
|
+
* cannot override the tenant via the opts bag — a previous `tenantId` field
|
|
159
|
+
* was removed because the HTTP layer would happily forward `body.tenantId`,
|
|
160
|
+
* letting tenant A mint a key for tenant B. The HTTP route handler at
|
|
161
|
+
* `src/server.ts` POST /v1/auth/keys mirrors this: it ignores any body
|
|
162
|
+
* `tenantId` and uses the resolved Bearer's tenant exclusively.
|
|
163
|
+
*
|
|
164
|
+
* Per A5 v2 follow-ups (TODOS.md), `auth_create` is currently unaudited —
|
|
165
|
+
* we intentionally match that behavior here for consistency. When A5 v2
|
|
166
|
+
* lands and adds the audit op, this function should mirror the cli handler.
|
|
144
167
|
*/
|
|
145
168
|
export declare function authCreate(ctx: Context, opts: AuthCreateOpts): AuthCreateResult;
|
|
146
169
|
/**
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|