nexus/.planning/STATE.md
Nexus Dev af8562c818 docs(31-03): complete provider selection UI plan summary and state updates
- 2 tasks, 6 files, 4 requirements marked complete (CLOUD-01/03/04/05)
- State advanced to plan 4 of 4; progress at 83%
2026-04-04 03:55:49 +00:00

99 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
gsd_state_version: 1.0
milestone: v1.5
milestone_name: Smart Onboarding + Personal AI Assistant
status: executing
stopped_at: Completed 31-puter.js-zero-config-cloud/31-03 (2 tasks, 6 files, provider selection UI complete)
last_updated: "2026-04-03T00:44:22.867Z"
last_activity: 2026-04-03
progress:
total_phases: 6
completed_phases: 1
total_plans: 6
completed_plans: 5
percent: 0
---
# Project State
## Project Reference
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 31 — puter.js-zero-config-cloud
## Current Position
Phase: 31 (puter.js-zero-config-cloud) — EXECUTING
Plan: 4 of 4
Status: Ready to execute
Last activity: 2026-04-03
Progress: [__________] 0%
## Performance Metrics
**Velocity:**
- Total plans completed: 0 (v1.5)
- Average duration: -
- Total execution time: 0 hours
**By Phase:**
| Phase | Plans | Total | Avg/Plan |
|-------|-------|-------|----------|
| - | - | - | - |
**Recent Trend:**
- Last 5 plans: none yet (v1.5)
- Trend: -
*Updated after each plan completion*
| Phase 30-hardware-detection-mode-selection P01 | 15 | 2 tasks | 8 files |
| Phase 30-hardware-detection-mode-selection P02 | 15 | 2 tasks | 6 files |
| Phase 31-puter.js-zero-config-cloud P01 | 4 | 2 tasks | 4 files |
| Phase 31-puter.js-zero-config-cloud P02 | 202 | 3 tasks | 4 files |
| Phase 31-puter.js-zero-config-cloud P03 | 5 | 2 tasks | 6 files |
## Accumulated Context
### Decisions
Decisions are logged in PROJECT.md Key Decisions table.
Key constraints for v1.5 (established at roadmap):
- No DB schema changes — all state in existing JSONB fields (`instance_settings.general`) and file-backed JSON (`data/memory/<companyId>.json`)
- Puter.js is server-proxied adapter only — `@heyputer/puter.js` browser import is for auth popup only; all AI calls via `POST /api/puter-proxy/chat`
- OAuth tokens (Google, Puter) stored server-side via `secretService` — never in localStorage
- Memory sanitization blocklist applied at write time, not retrieval time
- Apple Silicon: use `os.freemem()` × 0.75 for VRAM estimate; label as "unified memory" not "VRAM"; use `systeminformation` v5 (not v6)
- Unauthenticated `GET /system/providers` endpoint required for pre-auth hardware probe
- Google OAuth cloud tier: include but flag policy risk (Gemini CLI abuse detection issue #21866)
- Skip-all minimum valid state: one working agent with a valid provider must be created when user skips all steps
- [Phase 30-hardware-detection-mode-selection]: Hardware routes mounted before api Router to bypass boardMutationGuard; Apple Silicon detection via process.platform + cpuModel.startsWith('Apple') without calling si.graphics(); Promise.race 3s timeout on GPU probe for cpu_only fallback
- [Phase 30-hardware-detection-mode-selection]: Hardware probe is non-blocking — wizard step 1 always has an enabled Continue button regardless of probe outcome
- [Phase 30-hardware-detection-mode-selection]: Mode save on wizard completion is non-blocking — wrapped in try/catch, defaults to 'both' on failure
- [Phase 31-puter.js-zero-config-cloud]: agentId is optional in puterProxyService.chatStream — cost recording skipped when null/undefined to avoid FK violation in cost_events
- [Phase 31-puter.js-zero-config-cloud]: pendingPkce stores only verifier (no companyId) — company does not exist at authorize time during onboarding
- [Phase 31-puter.js-zero-config-cloud]: pendingTokens pattern: callback parks tokens by stateId, claim endpoint links to real companyId post-company-creation
- [Phase 31-puter.js-zero-config-cloud]: Provider heading in wizard wrapper (not ProviderSelectionStep) for consistency with ModeSelector pattern; credentials captured in React state and posted after company creation
### Pending Todos
None yet.
### Blockers/Concerns
- [Phase 31] Puter.js Node.js server-side streaming API surface unverified — confirm `stream: true` works server-side before designing `puterProxyService`; plan-phase should include a research spike
- [Phase 31] Puter.js ToS on server-side request relaying unverified — attribute costs to user's Puter account in all UI copy as mitigation
- [Phase 33] Chat route injection point needs codebase inspection — confirm correct hook location in `server/src/services/chat.ts` during plan-phase
- [Phase 34] smart-whisper Apple Silicon acceleration claim unverified on Mac Mini M4 — fall back to `tiny.en` if `base.en` acceleration not confirmed on device
## Session Continuity
Last session: 2026-04-03T00:44:22.863Z
Stopped at: Completed 31-puter.js-zero-config-cloud/31-03 (2 tasks, 6 files, provider selection UI complete)
Resume file: None