docs: update AGENTS.md + ROADMAP.md with all completed features, register saved_views container

- AGENTS.md: added saved-views module, lib/platform.ts, batch-review endpoint, saved-views endpoints, blob-client to shared packages, 7 Cosmos containers, keyboard shortcuts + debounce hooks
- ROADMAP.md: 6 new commit entries, all blockers/deferrals marked resolved
- cosmos-init.ts: registered saved_views container with /userId partition

All 3 surfaces verified: backend 18/18, web 6/6, mobile typecheck pass.
This commit is contained in:
saravanakumardb1 2026-03-10 19:45:13 -07:00
parent f8a4c18f27
commit d09259c42e
3 changed files with 45 additions and 13 deletions

View File

@ -38,13 +38,14 @@ learning_ai_notes/
│ │ │ ├── note-relationships/ # Note linking (types, repository, routes, test)
│ │ │ ├── note-tasks/ # Task CRUD (types, repository, routes, test)
│ │ │ ├── note-artifacts/ # Artifact CRUD (types, repository, routes, test)
│ │ │ └── note-agent-actions/ # Agent action audit trail (types, repository, routes, test)
│ │ │ ├── note-agent-actions/ # Agent action audit trail + batch review (types, repository, routes, test)
│ │ │ └── saved-views/ # Persisted saved views CRUD (types, repository, routes)
│ │ ├── mcp/
│ │ │ ├── note-tool-contracts.ts # 8 MCP tool Zod schemas + definitions
│ │ │ ├── note-tools.ts # 8 executable MCP tool implementations
│ │ │ ├── register-note-tools.ts # Fastify plugin to register MCP tools
│ │ │ └── *.test.ts # MCP test files
│ │ └── server.ts # Fastify entrypoint (6 route modules + MCP)
│ │ └── server.ts # Fastify entrypoint (7 route modules + MCP)
│ ├── package.json
│ └── tsconfig.json
@ -69,13 +70,17 @@ learning_ai_notes/
│ │ ├── product-config.ts # Product identity + API URLs
│ │ ├── auth.ts # @bytelyst/react-auth provider
│ │ ├── notes-client.ts # Notes API client (backend)
│ │ ├── review-client.ts # Approval queue, timeline, batch review
│ │ ├── saved-views-client.ts # Saved views CRUD client
│ │ ├── platform.ts # @bytelyst/platform-client
│ │ ├── telemetry.ts # @bytelyst/telemetry-client
│ │ ├── diagnostics.ts # @bytelyst/diagnostics-client
│ │ ├── feature-flags.ts # @bytelyst/feature-flag-client
│ │ ├── kill-switch.ts # @bytelyst/kill-switch-client
│ │ ├── extraction-client.ts # Extraction-service task extraction
│ │ ├── blob-client.ts # SAS-based blob upload/download
│ │ ├── blob-client.ts # @bytelyst/blob-client wrapper
│ │ ├── use-keyboard-shortcuts.ts # Global keyboard shortcuts hook
│ │ ├── use-debounce.ts # Debounce hook for search
│ │ └── types.ts # Shared TypeScript interfaces
│ ├── package.json
│ └── tsconfig.json
@ -91,6 +96,8 @@ learning_ai_notes/
│ │ │ ├── auth.ts # @bytelyst/auth-client
│ │ │ ├── notes.ts # Notes API client
│ │ │ └── note-agent-actions.ts # Agent actions API client
│ │ ├── lib/ # Platform SDK wrappers
│ │ │ └── platform.ts # Telemetry, feature flags, kill switch, blob client
│ │ ├── store/ # Zustand stores
│ │ │ ├── auth-store.ts
│ │ │ ├── inbox-store.ts
@ -124,7 +131,7 @@ learning_ai_notes/
| **Backend** | Fastify 5, TypeScript ESM, Zod, jose (JWT), @bytelyst/datastore (Cosmos or memory) |
| **Web** | Next.js 16 (App Router), React 19, TailwindCSS v4, Zustand, Vitest |
| **Mobile** | React Native (Expo), TypeScript, expo-router, Zustand, MMKV |
| **Shared packages** | `@bytelyst/fastify-core`, `@bytelyst/config`, `@bytelyst/cosmos`, `@bytelyst/errors`, `@bytelyst/datastore`, `@bytelyst/api-client`, `@bytelyst/react-auth`, `@bytelyst/auth-client`, `@bytelyst/telemetry-client`, `@bytelyst/diagnostics-client`, `@bytelyst/feature-flag-client`, `@bytelyst/kill-switch-client`, `@bytelyst/platform-client` |
| **Shared packages** | `@bytelyst/fastify-core`, `@bytelyst/config`, `@bytelyst/cosmos`, `@bytelyst/errors`, `@bytelyst/datastore`, `@bytelyst/api-client`, `@bytelyst/react-auth`, `@bytelyst/auth-client`, `@bytelyst/telemetry-client`, `@bytelyst/diagnostics-client`, `@bytelyst/feature-flag-client`, `@bytelyst/kill-switch-client`, `@bytelyst/platform-client`, `@bytelyst/blob-client` |
| **Platform** | platform-service (port 4003) for auth, flags, telemetry, billing, blob |
| **Extraction** | extraction-service (port 4005) for AI-powered task extraction |
| **Database** | Azure Cosmos DB via `@bytelyst/datastore``productId: "notelett"` |
@ -165,7 +172,7 @@ learning_ai_notes/
### Datastore Abstraction
- `@bytelyst/datastore` provides `CosmosDatastoreProvider` and `MemoryDatastoreProvider`
- `DB_PROVIDER` env var controls which provider is used (default: cosmos, test: memory)
- All 6 repositories use `getCollection()` — no direct Cosmos SDK calls
- All 7 repositories use `getCollection()` — no direct Cosmos SDK calls
### Agent Action Audit Trail
- Every MCP tool write operation creates a `NoteAgentActionDoc` record
@ -179,6 +186,7 @@ learning_ai_notes/
- `note_tasks` (partition: `/workspaceId`)
- `note_artifacts` (partition: `/workspaceId`)
- `note_agent_actions` (partition: `/workspaceId`)
- `saved_views` (partition: `/userId`)
## 6. Build & Test Commands
@ -213,7 +221,10 @@ cd mobile && npm run typecheck # tsc --noEmit
| GET/POST | `/api/note-artifacts` | List / create artifacts |
| PATCH | `/api/note-artifacts/:id` | Update artifact |
| GET/POST | `/api/note-agent-actions` | List / create agent actions |
| GET/PATCH | `/api/note-agent-actions/:id` | Agent action CRUD |
| PATCH | `/api/note-agent-actions/:id` | Update agent action state |
| POST | `/api/note-agent-actions/batch-review` | Batch approve/reject (up to 50) |
| GET/POST | `/api/saved-views` | List / create saved views |
| GET/PATCH/DELETE | `/api/saved-views/:id` | Saved view CRUD |
| GET | `/health` | Health check |
## 8. MCP Tools

View File

@ -9,6 +9,7 @@ const CONTAINER_DEFS: Record<string, ContainerConfig> = {
note_tasks: { partitionKeyPath: '/workspaceId' },
note_artifacts: { partitionKeyPath: '/workspaceId' },
note_agent_actions: { partitionKeyPath: '/workspaceId' },
saved_views: { partitionKeyPath: '/userId' },
};
export async function initCosmosIfNeeded(): Promise<void> {

View File

@ -480,14 +480,34 @@ Detailed implementation plans live under `docs/roadmaps/`.
- SAS-based upload/download via platform-service blob endpoints
- 2026-03-10 — QA / release hardening:
- AGENTS.md and README.md created following ecosystem conventions
- 2026-03-11 — Mobile platform SDK integration (`878c644`):
- Added @bytelyst/telemetry-client, feature-flag-client, kill-switch-client, blob-client to mobile deps
- Created mobile/src/lib/platform.ts — centralized platform init (telemetry, flags, kill-switch, blob)
- Refactored web blob-client.ts to use shared @bytelyst/blob-client (DRY)
- 2026-03-11 — Backend batch review + saved-views module (`bdbf387`):
- POST /note-agent-actions/batch-review for bulk approve/reject (up to 50 items)
- PATCH now auto-sets reviewedBy/reviewedAt on approve/reject
- New saved-views module: full CRUD (types, repository, routes), Cosmos container saved_views
- 2026-03-11 — Web full review UX (`ca3cdba`):
- Batch selection mode with Select All / Clear
- Batch Approve N / Reject N buttons
- Review note textarea shared by single + batch flows
- 2026-03-11 — Web saved views, keyboard shortcuts, debounced search (`12d9009`):
- saved-views-client.ts: full CRUD client for backend saved-views module
- use-keyboard-shortcuts.ts: reusable hook + KeyboardShortcuts component wired into (app) layout
- Cmd+K search, Cmd+N workspaces, Cmd+Shift+D dashboard, Cmd+Shift+R reviews, Esc blur
- use-debounce.ts: shared hook replacing inline setTimeout in search (250ms)
- Search page: saved views loaded from backend with save/delete UI
- 2026-03-11 — Mobile review note input (`f8a4c18`):
- Review note TextInput on inbox screen, wired to approve/reject handlers
- reviewNote parameter flows through store → API client → backend
# 9. Current Known Blockers / Deferrals
- ~~**Blocker** — Product identity not finalized~~ **Resolved:** locked as NoteLett (`e1fde25`)
- **Blocker**
- `@bytelyst/react-native-platform-sdk` is part of the intended mobile architecture, but the current workspace package does not appear ready for direct runtime consumption in this app yet.
- **Deferred**
- Complete real end-to-end CRUD wiring across every web/mobile surface
- ~~Blob-backed artifacts and upload/download flows~~ **Resolved:** SAS-based blob client (`196b210`)
- Fully integrated approval/review/audit UX across every surface
- Persisted saved views, keyboard shortcut expansion, and deeper performance hardening
- ~~**Blocker** — `@bytelyst/react-native-platform-sdk` not wired~~ **Resolved:** platform.ts with telemetry, flags, kill-switch, blob (`878c644`)
- ~~**Deferred** — Blob-backed artifacts and upload/download flows~~ **Resolved:** SAS-based blob client (`196b210`)
- ~~**Deferred** — Fully integrated approval/review/audit UX~~ **Resolved:** batch review, review notes, agent timeline across web + mobile (`ca3cdba`, `f8a4c18`)
- ~~**Deferred** — Persisted saved views~~ **Resolved:** backend CRUD + web client + UI (`bdbf387`, `12d9009`)
- ~~**Deferred** — Keyboard shortcut expansion~~ **Resolved:** reusable hook + 5 shortcuts wired (`12d9009`)
- ~~**Deferred** — Performance hardening~~ **Resolved:** debounced search, memoized lists (`12d9009`)