Commit graph

2101 commits

Author SHA1 Message Date
Nexus Dev
3796de8493 feat(31-03): add puter-proxy API client and auth/key entry components
- puterProxyApi: storeToken, getAuthUrl, claimGoogleTokens, storeApiKey
- PuterAuthButton: loads Puter CDN script, triggers signIn popup, captures token
- GoogleOAuthButton: 3-second risk warning gate, opens OAuth popup, captures stateId
- ApiKeyEntryForm: provider dropdown (OpenAI/Anthropic/Groq) + password input
2026-04-03 00:39:55 +00:00
Nexus Dev
521ebe2752 docs(31-02): complete Google OAuth PKCE plan summary and state updates 2026-04-03 00:38:00 +00:00
Nexus Dev
ad9abd2799 docs(31-01): complete puter proxy service plan summary and state update
- 31-01-SUMMARY.md: documents puterProxyService, routes, and 10 tests
- STATE.md: advance plan to 2, record metrics, session stop
- ROADMAP.md: update phase 31 progress (2/4 plans complete)
- REQUIREMENTS.md: mark CLOUD-01, CLOUD-02 complete
2026-04-03 00:37:43 +00:00
Nexus Dev
f2b38f1eb2 feat(31-01): mount puterProxyRoutes in app.ts
- Add import for puterProxyRoutes from routes/puter-proxy.js
- Mount api.use(puterProxyRoutes(db)) after costRoutes inside api Router
- Route is protected by boardMutationGuard as required
2026-04-03 00:36:31 +00:00
Nexus Dev
d750d15f49 test(31-02): add 11 unit tests for Google OAuth service and routes
- Test 1-2: PKCE generation (verifier/challenge format, auth URL params)
- Test 3: token exchange posts correct body to Google token endpoint
- Test 4-5: storeTokens create and rotate paths
- Test 6: authorize returns {url, stateId} with no companyId in pendingPkce
- Test 7: callback exchanges code and redirects with google_oauth=success
- Test 8: callback with invalid state returns 400
- Test 9: full authorize->callback->claim flow stores tokens by companyId
- Test 10: claim with missing stateId returns 404
- Test 11: api-keys/store upserts via secretService
2026-04-03 00:35:53 +00:00
Nexus Dev
13bc39b1d4 feat(31-01): implement puterProxyService, puterProxyRoutes, and unit tests
- puterProxyService with storeToken (create/rotate idempotent), resolveToken, chatStream
- chatStream relays to Puter OpenAI-compat endpoint with SSE streaming
- Cost recording with provider=puter, billingType=subscription_included, costCents=0
- Cost recording skipped when agentId is null/undefined (no FK violation)
- puterProxyRoutes with POST /puter-proxy/token and POST /puter-proxy/chat
- Board auth (assertBoard + assertCompanyAccess) on all routes
- All 10 TDD tests passing
2026-04-03 00:35:11 +00:00
Nexus Dev
c41ec162d0 feat(31-02): add googleOAuthRoutes with pendingTokens pattern and mount in app.ts
- POST /oauth/google/authorize: returns {url, stateId}, stores PKCE verifier only (no companyId)
- GET /oauth/google/callback: exchanges code, parks tokens in pendingTokens by stateId
- POST /oauth/google/claim: moves tokens from pendingTokens to secretService with real companyId
- POST /api-keys/store: upserts provider API keys (openai/anthropic/groq) via secretService
- Cleanup of entries older than 10 minutes on each request
- Mounted in app.ts via api.use(googleOAuthRoutes(db))
2026-04-03 00:34:39 +00:00
Nexus Dev
720455132a feat(31-02): add googleOAuthService with PKCE generation and token management
- generatePkce() using crypto.randomBytes base64url verifier and SHA256 challenge
- generateAuthUrl() builds Google OAuth URL with PKCE params for Gemini scopes
- exchangeCode() POSTs to Google token endpoint with code_verifier
- storeTokens() upserts google_gemini_oauth_token via secretService
- resolveTokens() retrieves and parses stored tokens by companyId
2026-04-03 00:33:46 +00:00
Nexus Dev
15f0b1c97a fix(31): revise plans based on checker feedback 2026-04-03 00:31:34 +00:00
Nexus Dev
7bc9be40ee docs(31): create phase plan for Puter.js Zero-Config Cloud
4 plans across 3 waves covering all 5 CLOUD requirements:
- Plan 01 (W1): Puter proxy service, routes, tests (CLOUD-01, CLOUD-02)
- Plan 02 (W1): Google OAuth PKCE + API key storage (CLOUD-03, CLOUD-05)
- Plan 03 (W2): Provider Selection UI, 4-step wizard (CLOUD-01/03/04/05)
- Plan 04 (W3): OAuth claim endpoint + human verification

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 00:22:37 +00:00
Nexus Dev
af1dc9cb15 docs(31): UI design contract 2026-04-03 00:15:22 +00:00
Nexus Dev
431c504dd4 docs(phase-31): add validation strategy 2026-04-03 00:12:41 +00:00
Nexus Dev
ff4f47de3b docs(31): research phase — Puter.js zero-config cloud provider integration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 00:11:45 +00:00
Nexus Dev
f4c46f39cd docs(31): auto-generated context (discuss skipped) 2026-04-03 00:00:46 +00:00
Nexus Dev
b68f632f7a docs(phase-30): complete phase execution 2026-04-03 00:00:14 +00:00
Nexus Dev
4cef5f3386 docs(30-02): mark human-verify approved, update state to complete
- 30-02-SUMMARY.md: checkpoint section updated to reflect visual verification approved
- STATE.md: status changed from verifying to complete, session updated
2026-04-02 23:55:11 +00:00
Nexus Dev
7770300628 docs(30-02): complete hardware detection UI + 3-step wizard plan
- SUMMARY.md for 30-02 (hardware API client, ModeSelector, HardwareSummaryStep, wizard refactor)
- STATE.md updated with position, decisions, and session info
- ROADMAP.md updated with phase 30 plan progress
- REQUIREMENTS.md: ONBD-07 marked complete
2026-04-02 23:30:32 +00:00
Nexus Dev
e1bdb9a800 feat(30-02): wire multi-step wizard in NexusOnboardingWizard
- Refactor to 3-step flow: hardware detection, mode selection, root directory
- Add step indicator 'Step N of 3'
- Add HardwareSummaryStep on step 1 with dynamic heading
- Add ModeSelector on step 2 with 'both' pre-selected
- Add Back buttons on steps 2 and 3
- Persist selected mode via updateNexusSettings on wizard completion
- Reset step and mode on wizard close
2026-04-02 23:28:48 +00:00
Nexus Dev
f44235460a feat(30-02): API client, hook, ModeSelector, and HardwareSummaryStep
- Add ui/src/api/hardware.ts with fetchHardwareInfo, fetchNexusSettings, updateNexusSettings
- Add ui/src/hooks/useHardwareInfo.ts with useQuery wrapper
- Add queryKeys.hardware.info to ui/src/lib/queryKeys.ts
- Add ModeSelector with three-card layout and selected state styling
- Add HardwareSummaryStep with skeleton loading, tier-appropriate labels, privacy frame
2026-04-02 23:27:21 +00:00
Nexus Dev
545edec89c docs(30-01): complete hardware detection + nexus settings plan
- Add 30-01-SUMMARY.md with execution record and deviation docs
- Update STATE.md: plan advanced to 2/2, progress 50%, decisions logged
- Update ROADMAP.md: phase 30 progress updated (1/2 plans complete)
- Update REQUIREMENTS.md: ONBD-01, ONBD-02, ONBD-03 marked complete
2026-04-02 23:24:20 +00:00
Nexus Dev
86e30e5c69 feat(30-01): hardware and nexus-settings routes, app.ts mounting
- Add hardwareRoutes with unauthenticated GET /system/providers
- Add hardwareRoutes with GET /system/providers/recommendation
- Add nexusSettingsRoutes with board-auth GET/PATCH /nexus/settings
- Mount hardwareRoutes on app before boardMutationGuard (unauthenticated)
- Mount nexusSettingsRoutes on api router (board-auth gated)
2026-04-02 23:22:20 +00:00
Nexus Dev
766460a163 feat(30-01): hardware detection, nexus-settings, extended model catalog
- Add hardwareService with Apple Silicon / GPU / cpu_only tier detection
- Add 3s Promise.race timeout for si.graphics() with cpu_only fallback
- Add nexusSettingsService with Zod validation and file-backed persistence
- Extend ollama-model-catalog.json with tier arrays on every variant
- Add qwen3:8b family to catalog
- Update getRecommendedModel to accept optional hardwareTier parameter
- All 13 unit tests pass (TDD green)
2026-04-02 23:19:09 +00:00
Nexus Dev
010014187e docs(30): create phase plan 2026-04-02 23:10:48 +00:00
Nexus Dev
c287d971e4 docs(30): UI design contract 2026-04-02 23:02:49 +00:00
Nexus Dev
b0f5ce425b docs(30): UI design contract for hardware detection + mode selection
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 22:59:09 +00:00
Nexus Dev
f8f32a29a2 docs(phase-30): add validation strategy 2026-04-02 22:56:19 +00:00
Nexus Dev
a58c99f306 [nexus] docs(30): research phase 30 — hardware detection + mode selection
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 22:55:23 +00:00
Nexus Dev
129f98b8e5 docs(30): auto-generated context (discuss skipped) 2026-04-02 22:38:48 +00:00
Nexus Dev
952845b53c docs: create milestone v1.5 roadmap (6 phases) 2026-04-02 22:37:33 +00:00
Nexus Dev
66954f3c2d docs: define milestone v1.5 requirements 2026-04-02 21:15:30 +00:00
Nexus Dev
553aa85a3d docs: complete project research 2026-04-02 20:31:00 +00:00
Nexus Dev
2862052f1a docs: start milestone v1.5 Smart Onboarding + Personal AI Assistant 2026-04-02 20:11:58 +00:00
Nexus Dev
147529076d chore: complete v1.4 Hermes Default Provider milestone
3 phases, 6 plans, 16 requirements. Archives copied to milestones/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 17:44:55 +00:00
Nexus Dev
aa4e698b77 docs(phase-29): complete default provider phase 2026-04-02 17:43:58 +00:00
Nexus Dev
bd1c0967c8 feat(29-02): Hermes skill injection + default provider integration tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 17:43:47 +00:00
Nexus Dev
e8bc6668e4 docs(29-02): complete default-provider plan 02 — Hermes skill injection and integration tests 2026-04-02 17:43:15 +00:00
Nexus Dev
e0a82ed2f2 feat(29-01): adapter probe route, Hermes onboarding fallback, neutral templates
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 17:34:10 +00:00
Nexus Dev
a01e58d9d4 docs(29-01): complete default-provider plan 01 — hermes probe route and adapter-neutral templates 2026-04-02 17:33:51 +00:00
Nexus Dev
cda6451b11 docs(29): create phase plan — adapter probe, onboarding fallback, skill injection 2026-04-02 17:28:15 +00:00
Nexus Dev
b538d44ca3 docs(29): research phase default-provider 2026-04-02 17:23:29 +00:00
Nexus Dev
0f35f223db docs(29): auto-generated context (discuss skipped) 2026-04-02 17:09:33 +00:00
Nexus Dev
c460776f85 docs(phase-28): complete Ollama integration phase 2026-04-02 17:09:09 +00:00
Nexus Dev
a3802a9dd6 feat(28-02,28-03): Ollama UI surface + Hermes runtime dashboard
28-02: ollamaApi client, model dropdown in config, skill badge
28-03: stateJson merge after heartbeat, HermesRuntimeCard in AgentOverview

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 17:08:53 +00:00
Nexus Dev
5266d25727 feat(28-03): merge Hermes runtime data into stateJson and add HermesRuntimeCard
- Add OllamaPsResponse interface and getOllamaMemoryUsage() to ollama.ts
- Import getOllamaMemoryUsage in heartbeat.ts
- Add hermes_local block in updateRuntimeState: COALESCE jsonb merge of hermesModel + hermesMemoryBytes
- Add HermesRuntimeCard component in AgentDetail.tsx
- Render HermesRuntimeCard in AgentOverview gated by adapterType === hermes_local
- Native skill count derived from agentsApi.skills entries with originLabel === Hermes skill
2026-04-02 17:07:53 +00:00
Nexus Dev
9ab4bf0f5c docs(28-02): complete Ollama UI surface plan — model dropdown, install callout, Hermes skill badge 2026-04-02 17:06:06 +00:00
Nexus Dev
93b9fa2dbd docs(28-03): complete Hermes runtime dashboard plan — stateJson merge, HermesRuntimeCard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 17:05:32 +00:00
Nexus Dev
a9783f00b0 feat(28-02): add Hermes skill badge and native skills section header in AgentSkillsTab
- Render purple "Hermes skill" badge for skills with originLabel === "Hermes skill"
- Section header shows "Hermes native skills & user-installed skills" for hermes_local agents
- Non-Hermes originLabel values continue to render as plain muted text
2026-04-02 17:03:58 +00:00
Nexus Dev
076c42c8ba feat(28-02): create ollamaApi client and Hermes Ollama model dropdown
- Add ui/src/api/ollama.ts with ollamaApi.status() and ollamaApi.models()
- Replace free-text Model input with hybrid dropdown/fallback in HermesLocalConfigFields
- Dropdown shows pulled Ollama models with * prefix for recommended entries
- Install callout shown when Ollama is absent (with link to installUrl)
- Edit mode: selecting an Ollama model atomically sets model + provider:custom + base_url
- Manual entry fallback via "Other (manual entry)..." option or when Ollama absent
- Uses useCompany() hook for companyId (consistent with AgentConfigForm pattern)
2026-04-02 17:03:00 +00:00
Nexus Dev
f052066f58 feat(28-01): Ollama service, routes, model catalog
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 16:57:27 +00:00
Nexus Dev
456b405eb1 docs(28-01): complete ollama service + routes plan — detectOllama, listOllamaModels, model catalog, HTTP routes 2026-04-02 16:57:03 +00:00