jason.woltje and Claude Sonnet 4.6
df71850d4f
feat(M3-001): refactor ProviderService into IProviderAdapter pattern
...
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
Introduces the IProviderAdapter interface as the architecture foundation for
multi-provider support. Extracts Ollama logic into OllamaAdapter and makes
ProviderService adapter-aware while preserving the full existing API.
## What changed
### @mosaic/types — new provider adapter types
- IProviderAdapter interface: register(), listModels(), healthCheck(), createCompletion()
- ProviderHealth / ProviderHealthStatus — health check result
- CompletionParams / CompletionMessage / CompletionTool — completion request
- CompletionEvent / CompletionUsage — streamed completion response
### apps/gateway — adapter implementation
- apps/gateway/src/agent/adapters/ollama.adapter.ts — OllamaAdapter (extracted from ProviderService)
- apps/gateway/src/agent/adapters/index.ts — barrel export
- ProviderService.onModuleInit() is now async (awaits registerAll())
- New ProviderService methods: registerAll(), getAdapter(), healthCheckAll()
- PROVIDER_ADAPTERS symbol exported as future DI injection token
- Anthropic/OpenAI/Z.ai remain as direct registry calls (M3-002 to M3-005 scope)
- Updated provider.service.test.ts: all tests now await onModuleInit()
## Pi SDK compatibility findings
Pi SDK uses ModelRegistry as central registry. The adapter pattern is a Mosaic
abstraction layered on top — adapters call registry.registerProvider() during
register(). Pi SDK has no native adapter concept; it does not conflict.
createCompletion() is defined in the interface but not called by the Pi layer.
Pi SDK's AgentSession.prompt() and ModelRegistry.getAvailable() handle all
actual completions. createCompletion() is reserved for future direct-completion
use cases (post-M3 scope). OllamaAdapter throws NotImplementedError for now.
No Pi SDK friction was found for the adapter pattern. The registry integration
point (registerProvider()) is exactly what the existing code already used.
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-03-21 16:15:35 -05:00
jason.woltje
ad06e00f99
feat(conversations): add search endpoint — M1-006 ( #299 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-21 20:45:50 +00:00
jason.woltje
02ff3b3256
feat(tui): add /history command — M1-007 ( #297 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-21 20:41:27 +00:00
jason.woltje
05a805eeca
fix(memory): scope InsightsRepo operations to userId — M2-001/002 ( #290 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-21 20:34:42 +00:00
jason.woltje
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 <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-21 20:34:11 +00:00
jason.woltje
dd108b9ab4
feat(auth): add WorkOS and Keycloak SSO providers (rebased) ( #220 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-21 12:57:07 +00:00
jason.woltje
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: http://git.mosaicstack.dev/mosaic/mosaic-stack/pulls/211
2026-03-21 12:28:30 +00:00
jason.woltje
77ba13b41b
feat(auth): add WorkOS and Keycloak SSO providers
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-03-19 20:30:00 -05:00
jason.woltje and Claude Sonnet 4.6
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 <[email protected] >
2026-03-19 20:18:59 -05:00
jason.woltje
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
jason.woltje
3f8553ce07
fix(cli): TUI polish — Ctrl+T, React keys, clipboard, version ( #205 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-17 02:40:18 +00:00
jason.woltje
1f2b8125c6
fix(cli): sidebar delete conversation — fix silent failure ( #201 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-17 02:36:46 +00:00
jason.woltje
93645295d5
fix(gateway): filter projects by ownership — close data privacy leak ( #202 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-17 02:35:45 +00:00
jason.woltje
c1d3dfd77e
fix(cli): disable Ink exitOnCtrlC so double-press handler runs ( #188 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 13:55:19 +00:00
jason.woltje
f0476cae92
fix(cli): wire command:result + system:reload socket events in TUI ( #187 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 13:21:11 +00:00
jason.woltje
39ef2ff123
feat: verify Phase 8 platform architecture + integration tests (P8-019) ( #185 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 03:43:42 +00:00
jason.woltje
a989b5e549
feat(cli): TUI autocomplete sidebar + fuzzy match + arg hints + input history (P8-017) ( #184 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 03:30:15 +00:00
jason.woltje
f0741e045f
feat(cli): TUI slash command parsing + local commands (P8-009) ( #176 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 01:58:56 +00:00
jason.woltje
5a1991924c
feat(db): teams schema + preferences.mutable migration ( #175 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 01:46:43 +00:00
jason.woltje
bd5d14d07f
feat(types): CommandDef, CommandManifest, slash command socket events ( #174 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-16 01:41:39 +00:00
jason.woltje
4da255bf04
feat(cli): command architecture — agents, missions, gateway-aware prdy ( #158 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 23:10:23 +00:00
jason.woltje
82c10a7b33
feat(cli): TUI complete overhaul — components, sidebar, search, branding ( #157 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 22:17:19 +00:00
jason.woltje
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 <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 19:18:47 +00:00
jason.woltje
22a5e9791c
feat(coord): DB migration — project-scoped missions, multi-tenant RBAC ( #149 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 19:18:18 +00:00
jason.woltje
76abf11eba
fix(cli): remove side-effect from agent:end state updater ( #133 ) ( #147 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 19:09:13 +00:00
jason.woltje
c4850fe6c1
feat(cli): add sessions list/resume/destroy subcommands ( #146 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 19:04:10 +00:00
jason.woltje
6a4c020179
feat(cli): add --model/--provider flags and /model /provider TUI commands ( #144 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 18:41:36 +00:00
jason.woltje
d42cd68ea4
feat(web): conversation management — search, rename, delete, archive ( #121 ) ( #139 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 18:20:15 +00:00
jason.woltje
ea524a6ba1
fix(cli): add Origin header to auth requests ( #115 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 17:03:42 +00:00
jason.woltje
997a6d134f
feat(cli): add login command and authenticated TUI sessions ( #114 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 17:00:08 +00:00
jason.woltje
014ebdacda
fix(auth): add trustedOrigins to BetterAuth for cross-origin web dashboard ( #111 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 16:44:20 +00:00
jason.woltje
9f036242fa
feat(cli): add prdy, quality-rails, and wizard subcommands ( #104 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 01:05:31 +00:00
jason.woltje
c4e52085e3
feat(mosaic): migrate install wizard from v0 to v1 ( #103 )
...
ci/woodpecker/push/ci Pipeline was successful
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 00:59:42 +00:00
jason.woltje
f94f9f672b
feat(prdy): migrate @mosaic/prdy from v0 to v1 ( #101 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 00:44:02 +00:00
jason.woltje
cd29fc8708
feat(quality-rails): migrate @mosaic/quality-rails from v0 to v1 ( #100 )
...
ci/woodpecker/push/ci Pipeline failed
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-15 00:23:56 +00:00
jason.woltje
e92de12cf9
feat(auth): add Authentik OIDC adapter
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Refs #96
2026-03-13 14:42:05 -05:00
jason.woltje
9eb48e1d9b
feat(Phase 4): Memory & Intelligence — memory, log, summarization, skills ( #91 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 13:56:50 +00:00
jason.woltje
780f85e0d6
feat(web): scaffold Next.js 16 dashboard with design system and auth client ( #82 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 13:18:09 +00:00
jason.woltje
8da2759fec
fix: coord review remediations (path traversal, JSON parse, race condition) ( #81 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 03:43:49 +00:00
jason.woltje
77da12a5ee
test: verify Phase 2 — routing + coord tests (P2-007) ( #79 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 03:40:07 +00:00
jason.woltje
f3a7eadcea
feat: @mosaic/coord — migrate from v0, gateway integration (P2-005) ( #77 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 03:32:20 +00:00
jason.woltje
7485f32e69
feat: agent routing engine — cost/capability matrix (P2-003) ( #75 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 03:13:50 +00:00
jason.woltje
95f95f54cf
feat: multi-provider support — Anthropic + Ollama (P2-002) ( #74 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 03:10:51 +00:00
jason.woltje
38897fe423
feat: auth middleware, brain data layer, Valkey queue (P1-002/003/004) ( #71 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 02:37:56 +00:00
jason.woltje
cbac5902db
fix: Phase 0 verification — CI gates green (P0-009) ( #70 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 02:28:38 +00:00
jason.woltje
6e3cccc812
feat(auth): @mosaic/auth — BetterAuth email/password setup ( #68 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 02:21:15 +00:00
jason.woltje
2b1723e898
feat(db): @mosaic/db — Drizzle schema, PG connection, migrations ( #67 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 02:17:18 +00:00
jason.woltje
35e4e2e527
feat: foundation — Docker Compose, OTEL, shared types ( #65 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 01:55:33 +00:00
jason.woltje
4f84a01072
feat: communication spine — gateway, TUI, Discord ( #61 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 01:33:32 +00:00
jason.woltje
6d0d288e31
feat(P0-001): scaffold monorepo structure ( #60 )
...
Co-authored-by: Jason Woltje <[email protected] >
Co-committed-by: Jason Woltje <[email protected] >
2026-03-13 01:11:46 +00:00