docs(33-01): complete persistent-memory memory-service plan
- SUMMARY.md with 17 passing tests, 2 deviations documented - STATE.md advanced to plan 2, progress 80% - ROADMAP.md updated: Phase 33 1/3 plans complete - REQUIREMENTS.md: ASST-01 and ASST-02 marked complete
This commit is contained in:
parent
664392e9eb
commit
1d222e3e8a
4 changed files with 102 additions and 17 deletions
|
|
@ -31,8 +31,8 @@
|
|||
|
||||
### Personal AI Assistant
|
||||
|
||||
- [ ] **ASST-01**: User has persistent memory across chat sessions (summary-based, injected into system prompts)
|
||||
- [ ] **ASST-02**: Memory content sanitized at write time to prevent prompt injection
|
||||
- [x] **ASST-01**: User has persistent memory across chat sessions (summary-based, injected into system prompts)
|
||||
- [x] **ASST-02**: Memory content sanitized at write time to prevent prompt injection
|
||||
- [ ] **ASST-03**: User can hand off an assistant conversation to a PM agent with one click, transferring context
|
||||
- [ ] **ASST-04**: Assistant and Project Builder modes work standalone or together
|
||||
|
||||
|
|
@ -81,8 +81,8 @@
|
|||
| ONBD-04 | Phase 32 | Complete |
|
||||
| ONBD-05 | Phase 32 | Complete |
|
||||
| ONBD-06 | Phase 32 | Complete |
|
||||
| ASST-01 | Phase 33 | Pending |
|
||||
| ASST-02 | Phase 33 | Pending |
|
||||
| ASST-01 | Phase 33 | Complete |
|
||||
| ASST-02 | Phase 33 | Complete |
|
||||
| ASST-03 | Phase 33 | Pending |
|
||||
| ASST-04 | Phase 33 | Pending |
|
||||
| VOICE-01 | Phase 34 | Pending |
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ Plans:
|
|||
**Plans**: 3 plans
|
||||
|
||||
Plans:
|
||||
- [ ] 33-01-PLAN.md — Memory sanitizer, assistant memory service, REST routes, and unit tests
|
||||
- [x] 33-01-PLAN.md — Memory sanitizer, assistant memory service, REST routes, and unit tests
|
||||
- [ ] 33-02-PLAN.md — PersonalAssistantPage, useNexusMode hook, sidebar navigation, route wiring
|
||||
- [ ] 33-03-PLAN.md — Real AI streaming with memory injection, assistant-to-PM handoff route and UI
|
||||
**UI hint**: yes
|
||||
|
|
@ -232,6 +232,6 @@ All 21 v1.5 requirements are mapped to exactly one phase. No orphans.
|
|||
| 30. Hardware Detection + Mode Selection | v1.5 | 2/2 | Complete | 2026-04-03 |
|
||||
| 31. Puter.js Zero-Config Cloud | v1.5 | 4/4 | Complete | 2026-04-03 |
|
||||
| 32. Multi-Step Onboarding Wizard | v1.5 | 1/1 | Complete | 2026-04-03 |
|
||||
| 33. Persistent Memory + Personal Assistant Mode | v1.5 | 0/3 | Planning complete | - |
|
||||
| 33. Persistent Memory + Personal Assistant Mode | v1.5 | 1/3 | In Progress| |
|
||||
| 34. Voice | v1.5 | 0/TBD | Not started | - |
|
||||
| 35. npx buildthis CLI | v1.5 | 0/TBD | Not started | - |
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
gsd_state_version: 1.0
|
||||
milestone: v1.5
|
||||
milestone_name: Smart Onboarding + Personal AI Assistant
|
||||
status: verifying
|
||||
stopped_at: Completed 32-multi-step-onboarding-wizard/32-01
|
||||
last_updated: "2026-04-03T21:38:15.887Z"
|
||||
status: executing
|
||||
stopped_at: Completed 33-persistent-memory/33-01
|
||||
last_updated: "2026-04-03T21:57:17.177Z"
|
||||
last_activity: 2026-04-03
|
||||
progress:
|
||||
total_phases: 6
|
||||
completed_phases: 3
|
||||
total_plans: 7
|
||||
completed_plans: 7
|
||||
total_plans: 10
|
||||
completed_plans: 8
|
||||
percent: 0
|
||||
---
|
||||
|
||||
|
|
@ -21,13 +21,13 @@ progress:
|
|||
See: .planning/PROJECT.md (updated 2026-04-02)
|
||||
|
||||
**Core value:** A fresh onboard asks for ONE thing (root directory), auto-creates PM + Engineer agents, and drops you in the dashboard.
|
||||
**Current focus:** Phase 32 — multi-step-onboarding-wizard
|
||||
**Current focus:** Phase 33 — persistent-memory
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 33
|
||||
Plan: Not started
|
||||
Status: Phase complete — ready for verification
|
||||
Phase: 33 (persistent-memory) — EXECUTING
|
||||
Plan: 2 of 3
|
||||
Status: Ready to execute
|
||||
Last activity: 2026-04-03
|
||||
|
||||
Progress: [__________] 0%
|
||||
|
|
@ -59,6 +59,7 @@ Progress: [__________] 0%
|
|||
| Phase 31-puter.js-zero-config-cloud P03 | 5 | 2 tasks | 6 files |
|
||||
| Phase 31-puter.js-zero-config-cloud P04 | 1 | 1 tasks | 0 files |
|
||||
| Phase 32-multi-step-onboarding-wizard P01 | 4 | 2 tasks | 3 files |
|
||||
| Phase 33 P01 | 4 | 2 tasks | 6 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
|
|
@ -85,6 +86,8 @@ Key constraints for v1.5 (established at roadmap):
|
|||
- [Phase 31-puter.js-zero-config-cloud]: Plan 04 is verification-only — auto-approved under workflow.auto_advance=true; full UAT deferred to manual QA session
|
||||
- [Phase 32-multi-step-onboarding-wizard]: createWorkspace() helper extracted so both handleSubmit and handleStartChat share workspace creation without duplication
|
||||
- [Phase 32-multi-step-onboarding-wizard]: Step 4 form submit removed — replaced with button advancing to step 5; actual workspace creation deferred to summary CTA
|
||||
- [Phase 33]: Removed zod dependency from assistant-memory.ts — replaced with manual type guard due to worktree node_modules not having zod symlink
|
||||
- [Phase 33]: GitHub PAT regex changed from {36} to {36,} to handle tokens longer than the minimum expected length
|
||||
|
||||
### Pending Todos
|
||||
|
||||
|
|
@ -99,6 +102,6 @@ None yet.
|
|||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-04-03T21:37:28.248Z
|
||||
Stopped at: Completed 32-multi-step-onboarding-wizard/32-01
|
||||
Last session: 2026-04-03T21:57:17.174Z
|
||||
Stopped at: Completed 33-persistent-memory/33-01
|
||||
Resume file: None
|
||||
|
|
|
|||
82
.planning/phases/33-persistent-memory/33-01-SUMMARY.md
Normal file
82
.planning/phases/33-persistent-memory/33-01-SUMMARY.md
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
---
|
||||
phase: 33-persistent-memory
|
||||
plan: 01
|
||||
subsystem: server/services
|
||||
tags: [memory, sanitization, file-backed, rest-api, credentials]
|
||||
provides:
|
||||
- File-backed assistant memory service (get/append/clear per companyId)
|
||||
- Credential sanitizer scrubbing sk-/ghp_/AIza/JWT/key=value patterns
|
||||
- REST endpoints GET/PATCH/DELETE at /api/assistant-memory/:companyId
|
||||
affects: [33-persistent-memory, chat-routes, assistant]
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [file-backed JSON service, FIFO eviction, write-time sanitization]
|
||||
key-files:
|
||||
created:
|
||||
- server/src/services/memory-sanitizer.ts
|
||||
- server/src/services/assistant-memory.ts
|
||||
- server/src/routes/assistant-memory.ts
|
||||
- server/src/__tests__/33-memory-sanitization.test.ts
|
||||
- server/src/__tests__/33-assistant-memory.test.ts
|
||||
modified:
|
||||
- server/src/app.ts
|
||||
key-decisions:
|
||||
- "Removed zod dependency from assistant-memory.ts — zod is not installed in the worktree node_modules, replaced with manual type guard parsing"
|
||||
- "GitHub PAT regex changed from {36} to {36,} to handle tokens longer than expected minimum length"
|
||||
duration: 4min
|
||||
completed: 2026-04-01
|
||||
---
|
||||
|
||||
# Phase 33 Plan 01: Persistent Memory Foundation Summary
|
||||
|
||||
**File-backed assistant memory service with write-time credential sanitization and REST endpoints mounted in app.ts.**
|
||||
|
||||
## Performance
|
||||
- **Duration:** 4 minutes
|
||||
- **Tasks:** 2 completed
|
||||
- **Files modified:** 6
|
||||
|
||||
## Accomplishments
|
||||
- `sanitizeMemoryFact` scrubs OpenAI (sk-), GitHub PAT (ghp_), Google API (AIza), JWT-shaped tokens, and key=value credential patterns at write time
|
||||
- `assistantMemoryService` provides file-backed get/append/clear scoped per companyId at `data/assistant-memory/<companyId>.json`
|
||||
- 50-fact FIFO cap enforced in append()
|
||||
- REST routes at `/api/assistant-memory/:companyId` with assertBoard + assertCompanyAccess auth on all three verbs
|
||||
- 17 unit tests pass (10 sanitizer, 7 service)
|
||||
|
||||
## Task Commits
|
||||
1. **Task 1 (RED): Failing tests** - `378d1c11`
|
||||
2. **Task 1 (GREEN): Memory sanitizer + service** - `fb3c1578`
|
||||
3. **Task 2: Routes + app.ts wiring** - `eba57c5c`
|
||||
|
||||
## Files Created/Modified
|
||||
- `server/src/services/memory-sanitizer.ts` - `sanitizeMemoryFact` with CREDENTIAL_INLINE_RE and SENSITIVE_KEY_VALUE_RE
|
||||
- `server/src/services/assistant-memory.ts` - `assistantMemoryService()` with get/append/clear, resolveMemoryPath, 50-fact cap
|
||||
- `server/src/routes/assistant-memory.ts` - `assistantMemoryRoutes()` GET/PATCH/DELETE with auth guards
|
||||
- `server/src/app.ts` - Added import + `api.use(assistantMemoryRoutes())` mount
|
||||
- `server/src/__tests__/33-memory-sanitization.test.ts` - 10 sanitizer tests
|
||||
- `server/src/__tests__/33-assistant-memory.test.ts` - 7 service tests with os.tmpdir() isolation
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Auto-fixed Issues
|
||||
|
||||
**1. [Rule 1 - Bug] GitHub PAT regex too strict**
|
||||
- **Found during:** Task 1 (TDD GREEN)
|
||||
- **Issue:** `ghp_[A-Za-z0-9]{36}` matched exactly 36 chars, leaving trailing chars unredacted (`[REDACTED]k`)
|
||||
- **Fix:** Changed to `{36,}` to match minimum 36 chars
|
||||
- **Files modified:** `server/src/services/memory-sanitizer.ts`
|
||||
- **Commit:** fb3c1578
|
||||
|
||||
**2. [Rule 3 - Blocking] Zod not resolvable in worktree vitest context**
|
||||
- **Found during:** Task 1 (TDD GREEN)
|
||||
- **Issue:** Worktree's server `node_modules` has no zod symlink; vitest cannot resolve `zod` during test collection
|
||||
- **Fix:** Removed zod import from `assistant-memory.ts`, replaced schema validation with manual type guard
|
||||
- **Files modified:** `server/src/services/assistant-memory.ts`
|
||||
- **Commit:** fb3c1578
|
||||
|
||||
## Known Stubs
|
||||
None — all data paths are fully wired.
|
||||
|
||||
## Next Phase Readiness
|
||||
- `assistantMemoryService` ready for injection into chat route (`server/src/services/chat.ts`) in Plan 02
|
||||
- Routes already mounted; API is live on server start
|
||||
Loading…
Add table
Reference in a new issue