63f285cc4f
feat(M3-002): implement AnthropicAdapter for Claude Sonnet 4.6, Opus 4.6, and Haiku 4.5
...
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
Adds AnthropicAdapter implementing IProviderAdapter. Installs @anthropic-ai/sdk,
registers the three Claude models with the Pi ModelRegistry, implements healthCheck()
via client.models.list(), and createCompletion() with streaming via messages.stream().
Replaces the legacy inline registerAnthropicProvider() method in ProviderService.
Gracefully skips registration when ANTHROPIC_API_KEY is not set.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-21 16:30:15 -05:00
34d4dbbabd
feat(M3-008): define model capability matrix ( #303 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 21:19:07 +00:00
78d591b697
test(M2-007): cross-user data isolation integration test ( #305 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 21:16:50 +00:00
e95c70d329
feat(M3-001): refactor ProviderService into IProviderAdapter pattern ( #306 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 21:16:45 +00:00
d8ac088f3a
test(persistence): M1-008 verification — 20 integration tests ( #304 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 21:08:19 +00:00
eddcca7533
feat(gateway): load conversation history on session resume (M1-004, M1-005) ( #301 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 21:00:13 +00:00
ad06e00f99
feat(conversations): add search endpoint — M1-006 ( #299 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:45:50 +00:00
5b089392fd
fix(security): M2-008 Valkey key audit — SCAN over KEYS, restrict /gc to admin ( #298 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:45:43 +00:00
1d14ddcfe7
chore: Wave 1 complete — fix merge conflicts, update task status ( #296 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:37:27 +00:00
05a805eeca
fix(memory): scope InsightsRepo operations to userId — M2-001/002 ( #290 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:34:42 +00:00
ebf99d9ff7
fix(M2-005,M2-006): enforce user ownership at repo level for conversations and agents ( #293 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:34:11 +00:00
bb22857fde
fix(security): scope memory tools to session userId — M2-003/004 ( #294 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:19:19 +00:00
5261048d67
feat(chat): persist messages to DB via ConversationsRepo (M1-001/002/003) ( #292 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 20:18:05 +00:00
02e40f6c3c
feat(web): conversation sidebar with search, rename, delete ( #222 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 13:10:03 +00:00
de64695ac5
feat(web): design system — ms-* tokens, ThemeProvider, MosaicLogo, sidebar ( #221 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 12:57:24 +00:00
dd108b9ab4
feat(auth): add WorkOS and Keycloak SSO providers (rebased) ( #220 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-21 12:57:07 +00:00
721e6bbc52
Merge pull request 'feat(web): chat interface — model selector, keybindings, thinking display, v0 styled header' ( #216 ) from feat/ui-chat into main
...
ci/woodpecker/push/ci Pipeline failed
Reviewed-on: mosaic/mosaic-stack#216
2026-03-21 12:29:29 +00:00
061edcaa78
Merge pull request 'feat(gateway): add Anthropic, OpenAI, Z.ai LLM providers (P8-002)' ( #212 ) from feat/p8-002-llm-providers into main
...
ci/woodpecker/push/ci Pipeline failed
Reviewed-on: mosaic/mosaic-stack#212
2026-03-21 12:28:50 +00:00
cbb729f377
Merge pull request 'perf: gateway + DB + frontend optimizations (P8-003)' ( #211 ) from feat/p8-003-performance into main
...
ci/woodpecker/push/ci Pipeline failed
Reviewed-on: mosaic/mosaic-stack#211
2026-03-21 12:28:30 +00:00
68e056ac91
feat(web): port chat UI — model selector, keybindings, thinking display, styled header
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-03-19 20:42:48 -05:00
77ba13b41b
feat(auth): add WorkOS and Keycloak SSO providers
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
2026-03-19 20:30:00 -05:00
254da35300
feat(auth): add WorkOS + Keycloak SSO providers (P8-001)
...
- Refactor auth.ts to build OAuth providers array dynamically; extract
buildOAuthProviders() for unit-testability
- Add WorkOS provider (WORKOS_CLIENT_ID/SECRET/REDIRECT_URI env vars)
- Add Keycloak provider with realm-scoped OIDC discovery
(KEYCLOAK_URL/REALM/CLIENT_ID/CLIENT_SECRET env vars)
- Add genericOAuthClient plugin to web auth-client for signIn.oauth2()
- Add WorkOS + Keycloak SSO buttons to login page (NEXT_PUBLIC_*_ENABLED
feature flags control visibility)
- Update .env.example with SSO provider stanzas
- Add 8 unit tests covering all provider inclusion/exclusion paths
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-19 20:18:59 -05:00
714fee52b9
feat(gateway): add Anthropic, OpenAI, Z.ai LLM providers (P8-002)
2026-03-18 21:34:38 -05:00
3b81bc9f3d
perf: gateway + DB + frontend optimizations (P8-003)
...
- DB client: configure connection pool (max=20, idle_timeout=30s, connect_timeout=5s)
- DB schema: add missing indexes for auth sessions, accounts, conversations, agent_logs
- DB schema: promote preferences(user_id,key) to UNIQUE index for ON CONFLICT upsert
- Drizzle migration: 0003_p8003_perf_indexes.sql
- preferences.service: replace 2-query SELECT+INSERT/UPDATE with single-round-trip upsert
- conversations repo: add ORDER BY + LIMIT to findAll (200) and findMessages (500)
- session-gc.service: make onModuleInit fire-and-forget (removes cold-start TTFB block)
- next.config.ts: enable compress, productionBrowserSourceMaps:false, image avif/webp
- docs/PERFORMANCE.md: full profiling report and change impact notes
2026-03-18 21:26:45 -05:00
cbfd6fb996
fix(web): conversation DELETE — resolve Failed to fetch TypeError ( #204 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:43:56 +00:00
3f8553ce07
fix(cli): TUI polish — Ctrl+T, React keys, clipboard, version ( #205 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:40:18 +00:00
bf668e18f1
fix(web): admin page role check — stop false redirect to /chat ( #203 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:38:25 +00:00
93645295d5
fix(gateway): filter projects by ownership — close data privacy leak ( #202 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:35:45 +00:00
7a52652be6
feat(gateway): Discord channel auto-creation on project bootstrap ( #200 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:32:14 +00:00
791c8f505e
feat(gateway): /system override condensation — accumulate + Haiku merge ( #198 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:26:31 +00:00
12653477d6
feat(gateway): project bootstrap — docs structure + default agent ( #190 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:12:24 +00:00
dedfa0d9ac
fix(gateway): system override TTL 5min → 7 days ( #189 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-17 02:06:58 +00:00
39ef2ff123
feat: verify Phase 8 platform architecture + integration tests (P8-019) ( #185 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-16 03:43:42 +00:00
0821393c1d
feat(gateway): WorkspaceService + ProjectBootstrapService + TeamsService (P8-015)
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
- WorkspaceService: path resolution, git init/clone, directory lifecycle (create/delete/exists), user and team root provisioning
- ProjectBootstrapService: orchestrates DB record creation (via Brain) + workspace directory init in a single call
- TeamsService: isMember, canAccessProject, findAll, findById, listMembers via Drizzle DB queries
- WorkspaceController: POST /api/workspaces — auth-guarded project bootstrap endpoint
- TeamsController: GET /api/teams, /:teamId, /:teamId/members, /:teamId/members/:userId
- WorkspaceModule wired into AppModule
- workspace.service.spec.ts: 5 unit tests for resolvePath (user, team, fallback, env var, default)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 22:06:01 -05:00
24f5c0699a
feat(gateway): MosaicPlugin lifecycle + ReloadService + hot reload (P8-013) ( #182 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-16 03:00:56 +00:00
96409c40bf
feat(gateway): /agent, /provider, /mission, /prdy, /tools commands (P8-012) ( #181 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-16 02:50:18 +00:00
b649b5c987
feat(gateway): SessionGCService three-tier GC + /gc command + cron (P8-014)
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Implements three-tier garbage collection for agent sessions:
- SessionGCService.collect() for immediate per-session cleanup on destroySession()
- SessionGCService.sweepOrphans() for daily cron sweep of orphaned Valkey keys
- SessionGCService.fullCollect() for cold-start aggressive cleanup via OnModuleInit
- /gc slash command wired into CommandExecutorService + registered in CommandRegistryService
- SESSION_GC_CRON (daily 4am) added to CronService
- GCModule provides Valkey (ioredis via @mosaic/queue) and is imported by AgentModule, LogModule, CommandsModule, AppModule
- 8 Vitest unit tests covering all three GC tiers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-15 21:38:48 -05:00
85aeebbde2
feat(gateway): PreferencesService + /preferences REST + /system Valkey override (P8-011)
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
- PreferencesService: platform defaults, user overrides, IMMUTABLE_KEYS enforcement
- PreferencesController: GET /api/preferences, POST /api/preferences, DELETE /api/preferences/:key
- PreferencesModule: global module exporting PreferencesService and SystemOverrideService
- SystemOverrideService: Valkey-backed session-scoped system prompt override with 5-min TTL + renew
- CommandRegistryService: register /system command (socket execution)
- CommandExecutorService: handle /system command via SystemOverrideService
- AgentService: inject system override before each prompt turn, renew TTL; store userId in session
- ChatGateway: pass userId when creating agent sessions
- PreferencesService unit tests: 11 tests covering defaults, overrides, enforcement wins, immutable key errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-15 21:32:03 -05:00
a4bb563779
feat(gateway): CommandRegistryService + CommandExecutorService (P8-010) ( #178 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-16 02:10:31 +00:00
7f6464bbda
feat(gateway): tool path hardening + sandbox escape prevention (P8-016) ( #177 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-16 02:02:48 +00:00
4da255bf04
feat(cli): command architecture — agents, missions, gateway-aware prdy ( #158 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 23:10:23 +00:00
82c10a7b33
feat(cli): TUI complete overhaul — components, sidebar, search, branding ( #157 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 22:17:19 +00:00
3792576566
fix(web): add jsdom dependency and exclude e2e from vitest ( #155 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 20:00:53 +00:00
cb92ba16c1
feat(web): Playwright E2E test suite for critical paths ( #152 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 19:46:13 +00:00
a760401407
feat(admin): web admin panel — user CRUD, role assignment, system health ( #150 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 19:18:47 +00:00
22a5e9791c
feat(coord): DB migration — project-scoped missions, multi-tenant RBAC ( #149 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 19:18:18 +00:00
d1bef49b4e
feat(agent): session cwd sandbox, system prompt config, tool restrictions ( #148 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 19:15:05 +00:00
76abf11eba
fix(cli): remove side-effect from agent:end state updater ( #133 ) ( #147 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 19:09:13 +00:00
0809f4e787
feat(web): settings persistence — profile, preferences save to DB ( #124 ) ( #145 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 18:43:52 +00:00
3bb401641e
feat(agent): skill invocation — load and execute skills from catalog ( #128 ) ( #143 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <jason@diversecanvas.com >
Co-committed-by: Jason Woltje <jason@diversecanvas.com >
2026-03-15 18:36:58 +00:00