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:
parent
f8a4c18f27
commit
d09259c42e
23
AGENTS.md
23
AGENTS.md
@ -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
|
||||
|
||||
@ -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> {
|
||||
|
||||
@ -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`)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user