Commit Graph
96 Commits
Author SHA1 Message Date
HumbleTurtleandClaude Opus 5.5 eed1d1d3f2 Provision the E2E memory secret into the local vault
`nap gateway vault setup` unwraps the project memory secret once (prompt
on a terminal, or the existing argument/env paths) and stores the
secret, never the passphrase, in memory-secrets.vault.json under the
existing 0600 local vault key. The CLI and MCP workers load it
automatically and MCP never prompts, per
/decisions/local-gateway-no-interactive-unlock and
/decisions/2026-09-29-memory-secret-local-vault. Older versions stay
readable; a rotated active version reports memory_secret_rotated with
the setup next action. `vault forget` revokes local access, including
for running workers. Env passphrases still work, are persisted into the
vault, and are reported as deprecated. Search warns
e2e_index_not_provisioned instead of e2e_index_locked. Local key
creation is 0600 from the start and never replaces a published key.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 00:49:48 -03:00
HumbleTurtleandClaude Opus 5.5 611a4571f3 Move tool profiles to a root file and version the release as 0.5.0
- Tool profiles come from a committed `.napseer-tools.json` at the
  project root (schema napseer.tools.v1). The unreleased tool_profiles
  field in .napseer/project.json is removed: released clients reject
  unknown locator fields, and 0.4.0 treats any extra file inside .napseer/
  as private state needing migration (a test loads the released 0.4.0
  check from c427e24 to prove the root file is invisible to it).
  Environment still overrides; unusable files warn and fall back to core.
- CLI release 0.5.0 with distribution contract 2026-09-29; the minimum
  supported contract stays 2026-09-10. The newer-contract rejection test
  now derives its date from the installer's own contract.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 23:33:22 -03:00
HumbleTurtleandClaude Opus 5.5 d86610da8e Search end-to-end encrypted nodes through an encrypted local index
- Crypto backend: use native AES-GCM from `cryptography` when importable
  (~1.5 GiB/s), falling back to the pure-Python implementation with a
  byte-identical format and identical authentication failures.
- E2E shard: decrypted E2E text is indexed in an in-memory SQLite
  database, persisted only as serialize() -> AES-256-GCM with an HKDF key
  bound to the project and memory-secret identity, authenticated header,
  fresh nonce, 0600 atomic writes. It loads only while the project is
  unlocked; tampered, foreign, wrong-key or rotated shards fail closed and
  rebuild. Search merges shard hits (search_source local_e2e) and reports
  locked/unavailable/slow states explicitly.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 22:56:38 -03:00
HumbleTurtle bf6acaacc8 Merge branch 'search-quality' into agent-coordination-reliability 2026-09-28 22:09:12 -03:00
HumbleTurtleandClaude Opus 5.5 0938b3026e Keep the local index fresh from the change feed and improve ranking
- Track a feed cursor in the local index: reindex takes the head cursor
  before listing and commits it with the snapshot; reads refresh from
  /changes (bounded, throttled) and apply creates, updates, archives,
  restores and hard deletes atomically with the cursor. Existing
  cursorless indexes bootstrap tracking on first read. Failures answer
  locally with explicit freshness warnings; 400 triggers a full
  reindex, 404 falls back to timestamp sync.
- Rank by a weighted score: exact identity (including aliases and
  paths), term coverage including body, intent, bm25, authority, a
  status penalty for superseded/completed records and mild recency.
- Return query-centred FTS5 snippets (never for E2E nodes).
- FTS schema v2: porter stemming, prefix index, title column, rowid
  deletes, two-character terms, domain words no longer stopwords;
  v1 indexes upgrade in place.
- Hyphenated alias/path literals match as adjacent-token phrases and
  rank as exact identity.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 22:09:12 -03:00
HumbleTurtleandClaude Opus 5.5 c6bc28442a Rebind the committed project on login instead of forcing project consent
In a checkout whose private project credential had been revoked, `nap
auth login` refreshed only the account login while the dead project
override kept being selected, and attach fell through to a second,
project-scoped browser consent. Login now proves an OAuth project grant
dead (tombstoned, expired, or refresh rejected; unknown outcomes keep
it), selects the account login for this worktree, and attaches the
project named by .napseer/project.json without another consent. A
still-valid override is kept and reported. Attach takes the same fast
path, and a rejected project grant names the recovery step.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 21:47:36 -03:00
HumbleTurtleandClaude Opus 5.5 7eaaffb63f Make MCP writes retry-safe and coordination state visible to agents
- Send Idempotency-Key on node create/patch/update writes (including bulk,
  link, move, kanban and agent-node tools) and return the key used, so an
  ambiguous failure can be retried without duplicating the write.
- Record a non-secret marker when login renewal is rejected; nap_whoami
  reports auth_required ahead of gateway state, and local-index answers
  carry stale warnings instead of silently serving old memory.
- Add nap_kanban_claim_next: pick and claim in one call, skipping cards
  held by another operation, never replaying an ambiguous claim.
- Add nap_changes_since over /v1/projects/{id}/changes with a
  per-worktree cursor that only advances after a successful read.
- Report real links_count/backlinks_count from indexed edges.
- Accept optional tool_profiles in .napseer/project.json when
  NAPSEER_TOOL_PROFILES is unset.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 21:34:35 -03:00
HumbleTurtle c427e2432a Move private runtime state outside checkouts and isolate worktrees 2026-09-21 13:19:27 -03:00
HumbleTurtle 2a78262754 chore: move CLI source metadata to Gitea 2026-09-17 09:40:02 -03:00
HumbleTurtle 2a4a054549 fix: preserve local memory across failed index rebuilds 2026-09-11 22:07:22 -03:00
HumbleTurtle c179581d58 docs: align agent discovery and project help with configured access v0.3.0 2026-09-10 04:21:04 -03:00
HumbleTurtle cec2f88375 docs: correct the shared user credential storage path 2026-09-10 04:17:19 -03:00
HumbleTurtle 1cedc1b927 fix: make the published stdin bootstrap install the runtime bundle 2026-09-10 04:10:40 -03:00
HumbleTurtle 3dfedd1f35 test: isolate session fixtures from developer project credentials 2026-09-10 03:34:46 -03:00
HumbleTurtle 6c29a318e8 feat: configure agents with durable user sessions and scoped access 2026-09-10 03:29:48 -03:00
HumbleTurtle e8c6a5109e fix: bound MCP request cancellation and recovery 2026-09-05 02:20:58 -03:00
HumbleTurtle f8594bd3d8 feat: add portable project locator 2026-08-27 19:11:33 -03:00
HumbleTurtle 7eace14042 fix: expose local index rebuild command 2026-08-27 00:41:28 -03:00
HumbleTurtle 35acd72e4e feat: add anchor shortcut navigation 2026-08-26 19:20:06 -03:00
HumbleTurtle 6b308d5a49 fix: harden node patch contract diagnostics 2026-08-26 07:59:16 -03:00
HumbleTurtle 66ca3ab9be fix: make memory graph results actionable 2026-08-26 05:09:52 -03:00
HumbleTurtle 4fa36796b4 Optimize concurrent local discovery 2026-08-23 19:48:08 -03:00
HumbleTurtle e283b6b62f feat(mcp): report search projection coverage 2026-08-22 22:45:58 -03:00
HumbleTurtle f47459ba9b perf(mcp): plan and rank memory queries once 2026-08-22 20:15:33 -03:00
HumbleTurtle e410b5d4a5 fix(mcp): align discovery identity guidance 2026-08-22 19:39:39 -03:00
HumbleTurtle 4254cac826 perf(mcp): keep local read flows local 2026-08-22 19:28:41 -03:00
HumbleTurtle 2f61616a6f feat(mcp): add dependency-aware parallel batch 2026-08-22 18:42:31 -03:00
HumbleTurtle cc53da1dc7 fix: align local and server graph depth semantics 2026-08-21 22:42:31 -03:00
HumbleTurtle a9a682dee0 fix: gate hybrid graph reads on complete local indexes 2026-08-21 22:37:05 -03:00
HumbleTurtle 8921b131ef fix: reload MCP launchers when runtime changes 2026-08-21 22:33:56 -03:00
HumbleTurtle 7ca30e690d fix: harden MCP and auth runtime lifecycles 2026-08-19 23:35:13 -03:00
HumbleTurtle 829d54b080 fix: align pruned identity inventory 2026-08-16 04:31:38 -03:00
HumbleTurtle 9429b7039f feat: streamline agent memory surface 2026-08-16 04:29:39 -03:00
HumbleTurtle 5574faace0 Fix account login project creation lifecycle 2026-08-03 01:16:15 -03:00
HumbleTurtle 7ac412a335 Make gateway lifecycle help specific 2026-08-01 04:28:39 -03:00
HumbleTurtle ffbe28798b Serialize gateway log compaction safely 2026-08-01 04:21:56 -03:00
HumbleTurtle 5289965772 Keep CLI log compaction on live inode 2026-08-01 04:20:45 -03:00
HumbleTurtle fccdfd58df Preserve live gateway log during compaction 2026-08-01 04:18:00 -03:00
HumbleTurtle 39adc19510 Allow compatible CLI release upgrades 2026-08-01 04:15:09 -03:00
HumbleTurtle 0e552497b2 Use one relay listener lane by default 2026-08-01 04:03:01 -03:00
HumbleTurtle b555779bef Clear stale worker identity on project attach 2026-08-01 03:59:52 -03:00
HumbleTurtle 463caec13b Remove legacy CLI and MCP aliases 2026-08-01 03:53:02 -03:00
HumbleTurtle bfda22f59b Repair MCP diagnostics and gateway lifecycle 2026-08-01 03:50:28 -03:00
HumbleTurtle ffd31cf568 Fix project attach reload before MCP discovery 2026-07-30 19:57:47 -03:00
HumbleTurtle 5f864eab06 Remove duplicate bootstrap installers 2026-07-30 00:27:22 -03:00
HumbleTurtle a70cb7c46c Release resilient atomic Napseer CLI runtime 2026-07-30 00:21:50 -03:00
HumbleTurtle a88930ce69 fix(auth): reload attached credentials in live MCP 2026-07-21 01:51:38 -03:00
HumbleTurtle 590d10b7da feat(memory): resolve paths in context reads 2026-07-19 15:18:29 -03:00
HumbleTurtle 7e4002579b fix(auth): recover anonymous projects after token expiry 2026-07-19 14:36:27 -03:00
HumbleTurtle a2958b108f fix(auth): preserve OAuth project sessions 2026-07-18 19:32:29 -03:00