@cerefox/memory 1.6.1 → 1.7.1
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/AGENT_GUIDE.md +80 -6
- package/AGENT_QUICK_REFERENCE.md +9 -7
- package/README.md +5 -3
- package/dist/bin/cerefox.js +790 -319
- package/dist/frontend/assets/index-D8E0mTnp.js +121 -0
- package/dist/frontend/assets/index-D8E0mTnp.js.map +1 -0
- package/dist/frontend/index.html +1 -1
- package/dist/server-assets/_shared/ef-meta/index.ts +3 -3
- package/dist/server-assets/_shared/mcp-tools/_utils.ts +41 -0
- package/dist/server-assets/_shared/mcp-tools/delete-document.ts +181 -0
- package/dist/server-assets/_shared/mcp-tools/get-help-content.ts +4 -4
- package/dist/server-assets/_shared/mcp-tools/index.ts +8 -1
- package/dist/server-assets/_shared/mcp-tools/ingest.ts +75 -8
- package/dist/server-assets/_shared/mcp-tools/partial-edits.ts +43 -4
- package/dist/server-assets/_shared/mcp-tools/restore-document.ts +130 -0
- package/dist/server-assets/db/migrations/0024_mcp_delete_document.sql +26 -0
- package/dist/server-assets/db/migrations/0025_drop_orphaned_overloads.sql +15 -0
- package/dist/server-assets/db/migrations/0026_metadata_guard_and_dead_links.sql +46 -0
- package/dist/server-assets/db/rpcs.sql +355 -27
- package/dist/server-assets/db/schema.sql +10 -2
- package/dist/server-assets/supabase/functions/cerefox-ingest/index.ts +26 -0
- package/docs/guides/access-paths.md +24 -15
- package/docs/guides/cli.md +34 -7
- package/docs/guides/connect-agents.md +41 -17
- package/docs/guides/operational-cost.md +1 -1
- package/package.json +1 -1
- package/dist/frontend/assets/index-OqloGFwv.js +0 -121
- package/dist/frontend/assets/index-OqloGFwv.js.map +0 -1
package/docs/guides/cli.md
CHANGED
|
@@ -226,6 +226,12 @@ cerefox document list [OPTIONS]
|
|
|
226
226
|
|
|
227
227
|
**Purpose**: update a document's title and/or metadata in place, without re-ingesting content.
|
|
228
228
|
|
|
229
|
+
> **v1.7.1 (#212)**: a title-only edit no longer writes `metadata` at all, and
|
|
230
|
+
> the command refuses to patch a document whose stored metadata is not a JSON
|
|
231
|
+
> object (a legacy state older writes could create) instead of destroying it —
|
|
232
|
+
> repair such a row with `cerefox document set-metadata <id> --replace --json
|
|
233
|
+
> '<object>'`. `cerefox doctor` lists any rows in that state.
|
|
234
|
+
|
|
229
235
|
**Synopsis**:
|
|
230
236
|
```
|
|
231
237
|
cerefox document edit [OPTIONS] DOCUMENT_ID
|
|
@@ -341,6 +347,20 @@ cerefox document set-projects <doc-id> --clear
|
|
|
341
347
|
|
|
342
348
|
---
|
|
343
349
|
|
|
350
|
+
### `cerefox document dead-links`
|
|
351
|
+
|
|
352
|
+
**Purpose**: whole-KB sweep for `[Text](uuid)` links whose target document no longer exists (phase 2 of link integrity, #214; v1.7.1, needs schema 0.12.2).
|
|
353
|
+
|
|
354
|
+
**Synopsis**: `cerefox document dead-links [--json]`
|
|
355
|
+
|
|
356
|
+
The write-time guard (v1.7.0) validates only links a write *introduces* — deliberately, so a target purged after linking cannot make its linkers unwritable. This command finds those legacy dead links on demand. A trashed target still exists and is **not** reported; trashed **linker** documents are also excluded (inert until restored — a restore re-enters them into the next sweep). Full chunk scan server-side (one RPC call); run on demand, not part of `doctor`.
|
|
357
|
+
|
|
358
|
+
**Fix each hit** by editing the linking document: correct the id, remove the link, or backtick it as an example. Full linking overview: [`linking.md`](linking.md).
|
|
359
|
+
|
|
360
|
+
**MCP equivalent**: none (maintenance verb).
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
344
364
|
### `cerefox document restore`
|
|
345
365
|
|
|
346
366
|
**Purpose**: restore a soft-deleted (trashed) document back to active.
|
|
@@ -351,10 +371,13 @@ cerefox document set-projects <doc-id> --clear
|
|
|
351
371
|
|
|
352
372
|
| Flag | Type | Default | Description |
|
|
353
373
|
|---|---|---|---|
|
|
374
|
+
| `--reason <text>` | str | _none_ | Optional reason recorded on the restore audit entry (v1.7.0; needs schema 0.12.0). |
|
|
354
375
|
| `--author TEXT` | str | `CEREFOX_AUTHOR_NAME` or `unknown` | Identity recorded in the audit log. |
|
|
355
376
|
| `--author-type [user\|agent]` | choice | `CEREFOX_AUTHOR_TYPE` or `user` | Caller type. |
|
|
356
377
|
|
|
357
|
-
Clears `deleted_at`, returning the document to search and `cerefox document list`, and writes a `restore` audit entry.
|
|
378
|
+
Clears `deleted_at`, returning the document to search and `cerefox document list`, and writes a `restore` audit entry. Restoring a document that is not deleted (or was already restored by a concurrent writer) is a reported no-op.
|
|
379
|
+
|
|
380
|
+
**MCP equivalent**: `cerefox_restore_document` (v1.7.0).
|
|
358
381
|
|
|
359
382
|
---
|
|
360
383
|
|
|
@@ -521,7 +544,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
|
|
|
521
544
|
|
|
522
545
|
### `cerefox document delete`
|
|
523
546
|
|
|
524
|
-
**Purpose**: **soft-delete** a document — moves it to trash, recoverable
|
|
547
|
+
**Purpose**: **soft-delete** a document — moves it to trash, recoverable with `cerefox document restore`. The CLI cannot permanently purge; see [Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the rationale.
|
|
525
548
|
|
|
526
549
|
**Synopsis**: `cerefox document delete [OPTIONS] DOCUMENT_ID`
|
|
527
550
|
|
|
@@ -530,7 +553,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
|
|
|
530
553
|
| Flag | Type | Default | Description |
|
|
531
554
|
|---|---|---|---|
|
|
532
555
|
| `--yes` | flag | off | Skip confirmation prompt. Required for non-interactive use (agents, scripts). |
|
|
533
|
-
| `--reason <text>` | str | _none_ | Optional reason recorded on the delete audit entry. |
|
|
556
|
+
| `--reason <text>` | str | _none_ | Optional reason recorded on the delete audit entry (v1.7.0; needs schema 0.12.0). |
|
|
534
557
|
| `--author <name>` (`-a`) | str | `CEREFOX_AUTHOR_NAME` or `unknown` | Identity recorded in the audit log. |
|
|
535
558
|
| `--author-type <type>` | `user`\|`agent` | `CEREFOX_AUTHOR_TYPE` or `user` | Caller type, recorded in the audit log. |
|
|
536
559
|
|
|
@@ -544,7 +567,7 @@ cerefox audit list --json --limit 1000 | jq 'select(.author_type == "agent")'
|
|
|
544
567
|
- Does NOT free database storage.
|
|
545
568
|
- Versions, chunks, and audit entries remain intact under the trash.
|
|
546
569
|
|
|
547
|
-
**Recovery**:
|
|
570
|
+
**Recovery**: restore with `cerefox document restore`, the web UI Trash view, or `cerefox_restore_document` over MCP (v1.7.0). Permanent purge is **web-UI-only** — the one action requiring human-in-the-loop confirmation. A trashed document also refuses content updates (restore first). See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model).
|
|
548
571
|
|
|
549
572
|
**Agent usage**:
|
|
550
573
|
```bash
|
|
@@ -664,7 +687,7 @@ cerefox config set relations_enabled true # tools appear in every agent's lis
|
|
|
664
687
|
cerefox config set relations_enabled false # hidden again; no data removed
|
|
665
688
|
```
|
|
666
689
|
|
|
667
|
-
Agents see
|
|
690
|
+
Agents see 15 tools with the flag off and 19 with it on. See
|
|
668
691
|
[`configuration.md`](configuration.md) for the full runtime-config surface.
|
|
669
692
|
|
|
670
693
|
### `cerefox config list` / `cerefox config get` / `cerefox config set`
|
|
@@ -782,6 +805,9 @@ Every MCP parameter has an exact-name CLI flag (kebab-cased). Short forms exist
|
|
|
782
805
|
| `cerefox_list_metadata_keys()` | `cerefox metadata keys` |
|
|
783
806
|
| `cerefox_metadata_search(metadata_filter, project_name, updated_since, created_since, limit, include_content, requestor)` | `cerefox metadata search --metadata-filter '<json>' --project-name <n> --updated-since <iso> --created-since <iso> --limit N --include-content --requestor <name>` |
|
|
784
807
|
| `cerefox_get_audit_log(document_id, author, operation, since, until, limit, requestor)` | `cerefox audit list --document-id <id> --author <a> --operation <op> --since <iso> --until <iso> --limit N --requestor <name>` |
|
|
808
|
+
| `cerefox_set_document_metadata(document_id, metadata, replace, author)` | `cerefox document set-metadata <id> --set key=value` (also `--remove key`, `--json '<json>'`, `--replace`) |
|
|
809
|
+
| `cerefox_delete_document(document_id, expected_content_hash, reason, author, requestor)` | `cerefox document delete <id> --reason <text> --author <a> --author-type <t> --yes` (confirms interactively instead of requiring the hash) |
|
|
810
|
+
| `cerefox_restore_document(document_id, reason, author, requestor)` | `cerefox document restore <id> --reason <text> --author <a> --author-type <t>` |
|
|
785
811
|
|
|
786
812
|
## CLI ↔ MCP parity matrix
|
|
787
813
|
|
|
@@ -800,8 +826,9 @@ surface).
|
|
|
800
826
|
| `document get` | `cerefox_get_document` | ✅ |
|
|
801
827
|
| `document list` | `cerefox_metadata_search` (scope by `project_name` / metadata / time) | ✅ as of this change. Unscoped whole-KB listing has no MCP path by design (scope it) |
|
|
802
828
|
| `document edit` (title / metadata in place) | — | 🔒 intentional: a human/web-parity convenience. Agents update title+metadata deterministically via `cerefox_ingest` (with `document_id`); a metadata-only edit isn't a needed agent primitive |
|
|
803
|
-
| `document
|
|
804
|
-
| `document
|
|
829
|
+
| `document dead-links` | — | 🔒 intentional: a maintenance sweep for the operator (v1.7.1, #214 phase 2); agents encounter dead links through the write-time guard instead |
|
|
830
|
+
| `document delete` (soft-delete) | `cerefox_delete_document` | ✅ v1.7.0 (#208). MCP requires the caller's read-hash; the CLI confirms interactively instead |
|
|
831
|
+
| `document restore` | `cerefox_restore_document` | ✅ v1.7.0 (#210). Permanent purge remains web-UI-only |
|
|
805
832
|
| `document version list` | `cerefox_list_versions` | ✅ |
|
|
806
833
|
| `document version archive` / `unarchive` | — | 🔒 intentional: version-retention protection is exposed only to CLI + web (a maintenance concern, not an agent primitive) |
|
|
807
834
|
| `document set-projects` | `cerefox_set_document_projects` | ✅ full-set replace of a document's project memberships (shared core; `--clear` to remove all) |
|
|
@@ -72,7 +72,7 @@ in the container.
|
|
|
72
72
|
- **Easiest:** `cerefox-local configure-agent` wires it up (registers an MCP server named
|
|
73
73
|
`cerefox-local` with Claude Code if the `claude` CLI is present, else prints the snippet).
|
|
74
74
|
- **Manual:** point the client at `command: cerefox-local, args: ["mcp"]` (stdio). That proxies
|
|
75
|
-
to `cerefox mcp` in the container; the same
|
|
75
|
+
to `cerefox mcp` in the container; the same 15 core tools, identical behavior to every other path.
|
|
76
76
|
- The cloud paths above (remote Edge Function, GPT Actions) **do not apply** to a local-only
|
|
77
77
|
install — there are no Edge Functions.
|
|
78
78
|
|
|
@@ -131,7 +131,7 @@ in the container.
|
|
|
131
131
|
|
|
132
132
|
### What it is
|
|
133
133
|
|
|
134
|
-
The local Cerefox MCP server runs on your machine and exposes the same
|
|
134
|
+
The local Cerefox MCP server runs on your machine and exposes the same 15 core tools as the remote
|
|
135
135
|
Edge Function, communicating with clients over stdio.
|
|
136
136
|
|
|
137
137
|
The local server ships as an npm package — **[`@cerefox/memory`](https://www.npmjs.com/package/@cerefox/memory)** — built with the official `@modelcontextprotocol/sdk`.
|
|
@@ -190,6 +190,10 @@ Once configured, every Path A client has these tools:
|
|
|
190
190
|
|------|-------------|
|
|
191
191
|
| `cerefox_search` | Hybrid (FTS + semantic) document-level search. Filter by `project_name` or `metadata_filter`. |
|
|
192
192
|
| `cerefox_ingest` | Save a note or document to the knowledge base. Pass `document_id` to update by ID (deterministic); or `update_if_exists: true` to update by title match. Accepts optional `author` and `project_name`. |
|
|
193
|
+
| `cerefox_insert` | Add text to a document without resending it (additive only — structurally cannot remove content) |
|
|
194
|
+
| `cerefox_edit` | Change parts of a document: 1..n operations (`insert`/`replace_section`/`delete_section`/`rename_section`) applied atomically |
|
|
195
|
+
| `cerefox_delete_document` | Soft-delete a document to the trash (requires the caller's read-hash; permanent purge is web-UI-only) |
|
|
196
|
+
| `cerefox_restore_document` | Restore a soft-deleted document from the trash (audited inverse of delete) |
|
|
193
197
|
| `cerefox_list_metadata_keys` | List all metadata keys in use across documents |
|
|
194
198
|
| `cerefox_get_document` | Retrieve the full content of a document (current or archived version) |
|
|
195
199
|
| `cerefox_list_versions` | List all archived versions of a document |
|
|
@@ -200,9 +204,13 @@ Once configured, every Path A client has these tools:
|
|
|
200
204
|
| `cerefox_set_document_projects` | Set a document's project memberships to exactly the given list (destructive replace; metadata-only, no content change). Use `cerefox_ingest` with singular `project_name` for non-destructive "add". |
|
|
201
205
|
| `cerefox_get_help` | Retrieve Cerefox conventions (the same content as `AGENT_QUICK_REFERENCE.md`) over MCP. Optional `topic` parameter does a case-insensitive H2 substring match. Call this whenever you are uncertain. |
|
|
202
206
|
|
|
203
|
-
> All
|
|
204
|
-
>
|
|
205
|
-
>
|
|
207
|
+
> All 15 core tools are available on Path A (local and remote MCP). Path B (GPT Actions via
|
|
208
|
+
> dedicated Edge Functions) exposes the 8 primitive operations: search, ingest, metadata keys,
|
|
209
|
+
> get-document, list-versions, audit log, metadata-search, and list-projects. The rest are
|
|
210
|
+
> MCP-only: the partial-edit tools (`cerefox_insert`/`cerefox_edit`),
|
|
211
|
+
> `cerefox_delete_document`/`cerefox_restore_document`, the metadata/project setters, and
|
|
212
|
+
> `cerefox_get_help`. MCP tools use `project_name` (human-readable); primitive Edge
|
|
213
|
+
> Functions (Path B) use `project_id` (UUID).
|
|
206
214
|
|
|
207
215
|
### Path A system prompt
|
|
208
216
|
|
|
@@ -226,7 +234,8 @@ For the full tool reference, search Cerefox for "How AI Agents Use Cerefox".
|
|
|
226
234
|
After setup, ask your client:
|
|
227
235
|
|
|
228
236
|
> "What tools do you have available?"
|
|
229
|
-
> Expected:
|
|
237
|
+
> Expected: 15 tools listed (`cerefox_search`, `cerefox_ingest`, `cerefox_insert`, `cerefox_edit`,
|
|
238
|
+
> `cerefox_delete_document`, `cerefox_restore_document`, `cerefox_get_document`,
|
|
230
239
|
> `cerefox_list_versions`, `cerefox_list_projects`, `cerefox_list_metadata_keys`,
|
|
231
240
|
> `cerefox_metadata_search`, `cerefox_set_document_projects`,
|
|
232
241
|
> `cerefox_set_document_metadata`, `cerefox_get_audit_log`,
|
|
@@ -321,7 +330,7 @@ pick it up automatically.
|
|
|
321
330
|
to primitive Edge Functions. This means each MCP tool call costs a single Edge Function
|
|
322
331
|
invocation.
|
|
323
332
|
|
|
324
|
-
A single HTTPS URL gives any remote-capable MCP client all
|
|
333
|
+
A single HTTPS URL gives any remote-capable MCP client all 15 core tools with full hybrid
|
|
325
334
|
search -- no Python, no `uv`, no local repository clone needed.
|
|
326
335
|
|
|
327
336
|
**URL format:**
|
|
@@ -502,7 +511,7 @@ Replace `<your-project-ref>` with your Supabase project ref.
|
|
|
502
511
|
**Step 3 — Verify:**
|
|
503
512
|
|
|
504
513
|
Launch Codex and use the `/mcp` slash command to confirm the `cerefox` server is connected
|
|
505
|
-
and all
|
|
514
|
+
and all 15 tools are listed.
|
|
506
515
|
|
|
507
516
|
**Notes:**
|
|
508
517
|
- `bearer_token_env_var` is the **name** of the env var (e.g. `"CEREFOX_ACCESS_TOKEN"`), not the
|
|
@@ -588,7 +597,11 @@ When UPDATING an existing document, first call getDocument and note its
|
|
|
588
597
|
content_hash, then pass it as expected_content_hash on ingestNote. If you get a
|
|
589
598
|
409 conflict, the document changed underneath you: call getDocument again, merge
|
|
590
599
|
your changes into the latest content, and retry with the new hash — never
|
|
591
|
-
overwrite blindly.
|
|
600
|
+
overwrite blindly. A 409 with error "document_deleted" means the target is in
|
|
601
|
+
the trash: it must be restored by the user before updating. A 422 with error
|
|
602
|
+
"unresolved_links" means the content links document id(s) that do not exist —
|
|
603
|
+
you mangled a UUID; re-check each [Text](uuid) link against its source and
|
|
604
|
+
resend, or wrap example ids in backticks. Do not retry either unchanged.
|
|
592
605
|
```
|
|
593
606
|
|
|
594
607
|
### Path B verification
|
|
@@ -625,7 +638,7 @@ In the action editor, paste this schema (replace `<your-project-ref>`):
|
|
|
625
638
|
openapi: 3.1.0
|
|
626
639
|
info:
|
|
627
640
|
title: Cerefox Knowledge Base
|
|
628
|
-
version: 3.
|
|
641
|
+
version: 3.2.0
|
|
629
642
|
servers:
|
|
630
643
|
- url: https://<your-project-ref>.supabase.co/functions/v1
|
|
631
644
|
paths:
|
|
@@ -807,9 +820,20 @@ paths:
|
|
|
807
820
|
with its content_hash.
|
|
808
821
|
'409':
|
|
809
822
|
description: >
|
|
810
|
-
Conflict
|
|
811
|
-
for the latest content + content_hash, merge your
|
|
812
|
-
retry with the new hash
|
|
823
|
+
Conflict. Either the document changed since it was read (call
|
|
824
|
+
getDocument for the latest content + content_hash, merge your
|
|
825
|
+
changes, and retry with the new hash — do not overwrite blindly),
|
|
826
|
+
or the target document is soft-deleted (error
|
|
827
|
+
"document_deleted") — restore it first, then retry, or create a
|
|
828
|
+
new document.
|
|
829
|
+
'422':
|
|
830
|
+
description: >
|
|
831
|
+
Unresolved document links (error "unresolved_links") — the content
|
|
832
|
+
contains [Text](uuid) links to document ids that do not exist,
|
|
833
|
+
almost always mangled UUIDs. Re-read the source each link was
|
|
834
|
+
copied from, correct the id(s), and resend; do not retry
|
|
835
|
+
unchanged. Deliberate example ids belong in code formatting
|
|
836
|
+
(backticks), which is not validated.
|
|
813
837
|
/cerefox-metadata:
|
|
814
838
|
post:
|
|
815
839
|
operationId: listMetadataKeys
|
|
@@ -1151,7 +1175,7 @@ user + `CEREFOX_OAUTH_OWNER_ID` pin, and register the Claude OAuth App
|
|
|
1151
1175
|
Client Secret from the pre-registered OAuth App (setup-supabase Step 7d).
|
|
1152
1176
|
5. Save. Claude runs the OAuth flow → redirects you to the **Cerefox consent page** (sign
|
|
1153
1177
|
in with the owner email/password from Step 7c, then **Allow**) → returns to Claude. The
|
|
1154
|
-
connector shows as connected with **
|
|
1178
|
+
connector shows as connected with **15 tools** (19 if you have enabled document relations). (If you've approved before, Supabase
|
|
1155
1179
|
auto-consents and the page just flashes through — that's expected.)
|
|
1156
1180
|
6. **Mobile**: connectors are account-level, so `CerefoxMCP` appears in the Claude mobile
|
|
1157
1181
|
app automatically — run one search from your phone to confirm.
|
|
@@ -1253,7 +1277,7 @@ The agent docs are written around MCP tool names. **CLI flag names match MCP par
|
|
|
1253
1277
|
| `cerefox_metadata_search` | `cerefox metadata search --metadata-filter '<json>' --project-name <n> --requestor <name>` |
|
|
1254
1278
|
| `cerefox_get_audit_log` | `cerefox audit list --document-id <id> --author <a> --operation <op> --since <iso> --until <iso> --limit N --json --requestor <name>` |
|
|
1255
1279
|
|
|
1256
|
-
> CLI verbs with no MCP equivalent: `cerefox document edit`, `cerefox
|
|
1280
|
+
> CLI verbs with no MCP equivalent: `cerefox document edit`, `cerefox project create` / `cerefox project edit`, `cerefox config list`.
|
|
1257
1281
|
|
|
1258
1282
|
### Path C verification prompts
|
|
1259
1283
|
|
|
@@ -1272,8 +1296,8 @@ After pointing your agent at the repo, ask it:
|
|
|
1272
1296
|
|
|
1273
1297
|
- **Privilege level**: the CLI uses the **service-role key** (`CEREFOX_SUPABASE_KEY`), which bypasses Row Level Security. An agent with Bash access has the same full read/write power you do. Only enable Path C for agents you trust to act on your behalf — the same trust level you'd grant Cursor/Claude Code for editing your source code.
|
|
1274
1298
|
- **Audit attribution**: Path C records `access_path = "cli"` in usage logs, distinct from `"local-mcp"` / `"remote-mcp"`. **Agents must set `--author <name> --author-type agent` on writes and `--requestor <name>` on reads** (or rely on `CEREFOX_AUTHOR_NAME` / `CEREFOX_AUTHOR_TYPE` / `CEREFOX_REQUESTOR_NAME` env vars). Without these flags, writes attribute to `"unknown"` / `"user"`, which under-reports agent activity. See the 2026-05-18 Decision Log Q2 entry for the design rationale (`author_type` is caller-declared on ambiguous channels — CLI and Edge Functions — but `access_path` is always derived from the code layer).
|
|
1275
|
-
- **Soft-delete
|
|
1276
|
-
- **Cross-doc links in content you ingest** become clickable when the user views them in the Cerefox web UI.
|
|
1299
|
+
- **Soft-delete and restore are reachable; permanent purge is not** — by design. `cerefox document delete` / `cerefox document restore` on the CLI, `cerefox_delete_document` / `cerefox_restore_document` over MCP (v1.7.0, #208/#210): both audited with author attribution. **Permanent purge** (irreversible) stays web-UI-only with human-in-the-loop confirmation. If an agent deletes or restores content, it should surface that to the user explicitly so they can follow it in the audit trail. See [`access-paths.md` → Destructive operations and the trust model](access-paths.md#destructive-operations-and-the-trust-model) for the full rationale and contributor guidance.
|
|
1300
|
+
- **Cross-doc links in content you ingest** become clickable when the user views them in the Cerefox web UI. **Always author them as `[Text](uuid)`** — the server validates these on every write (v1.7.0) and rejects links to nonexistent ids, which catches mangled UUIDs at write time. `[Text](docs/path.md)` exists for repo-ingested files; do not write title-based links (fragile, and `AGENT_GUIDE.md` says never in agent-authored content). See [`AGENT_GUIDE.md` → "Writing linkable content"](../../AGENT_GUIDE.md#writing-linkable-content) for the full set of rules.
|
|
1277
1301
|
- **CLI install per machine**: the agent needs the `cerefox` binary installed (`npm install -g @cerefox/memory`) with a resolvable `.env`. If you skip the local install entirely, Path A-Remote or Path B is the only option.
|
|
1278
1302
|
- **No sandboxing beyond the agent's existing Bash sandbox**: the CLI is just shell. If your agent's tool framework restricts which commands run, allowlist `cerefox …` explicitly.
|
|
1279
1303
|
|
|
@@ -74,7 +74,7 @@ paths go through **Edge Functions**, which the free tier caps at 500,000/month:
|
|
|
74
74
|
500K/month is generous for a single human-driven agent. But **automated or
|
|
75
75
|
high-frequency agents on the remote path** can approach it. The lever: point those
|
|
76
76
|
agents at the **local stdio MCP server** (`cerefox mcp`) instead of the remote Edge
|
|
77
|
-
Function — it exposes the identical
|
|
77
|
+
Function — it exposes the identical 15 core tools (plus the 4 relation tools when enabled), talks to the Data API directly, and
|
|
78
78
|
costs **zero** Edge Function invocations (bonus: lower latency, and it works offline
|
|
79
79
|
against a reachable database). If you do exceed the free EF quota, Supabase's Pro
|
|
80
80
|
plan ($25/mo, 2M invocations included) is the next step.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cerefox/memory",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Cerefox — user-owned shared memory for AI agents. CLI + stdio MCP server + web UI + ingestion for a knowledge base on your own Supabase project (or fully self-hosted with Cerefox Local).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/fstamatelopoulos/cerefox",
|