Jarvis
99a865db74
fix(config): add missing eslint devDependency
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
The package declared an eslint lint script but eslint was not in
devDependencies, causing the pre-push hook to fail.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-04 16:47:16 -05:00
Jarvis
2b2d2b9387
fix(config): update storage type references from sqlite to pglite
...
Update DEFAULT_LOCAL_CONFIG, VALID_STORAGE_TYPES, and repo-root
mosaic.config.json to use pglite instead of sqlite, completing the
storage dialect migration started in the previous commit.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-04 16:46:07 -05:00
Jarvis
72e365438c
refactor(storage): replace better-sqlite3 with PGlite adapter
...
Eliminates the `prebuild-install` deprecation warning that appears during
`mosaic gateway install` by removing `better-sqlite3` from the dependency
graph entirely and replacing the SqliteAdapter with a PGlite-based adapter
that mirrors the same interface and test coverage.
- New `PgliteAdapter` in `packages/storage/src/adapters/pglite.ts` using
`@electric-sql/pglite` with JSONB columns and pg-style `$N` placeholders
- Ported all 18 adapter tests to `pglite.test.ts` (in-memory PGlite instances)
- Deleted `sqlite.ts` and `sqlite.test.ts`
- Updated `StorageConfig` discriminated union: `sqlite` → `pglite` with optional
`dataDir` (absent = in-memory)
- `packages/storage/index.ts` re-exports `PgliteAdapter` and registers it
- CLI install wizard writes `{ type: 'pglite', dataDir: '…/storage-pglite' }`
- Removed `better-sqlite3` and `@types/better-sqlite3` from storage deps;
added `@electric-sql/pglite@^0.2.17`
- Removed `pnpm.onlyBuiltDependencies: ["better-sqlite3"]` from root package.json
- Bump `@mosaic/storage` 0.0.2 → 0.0.3
- Bump `@mosaic/gateway` 0.0.3 → 0.1.0 (minor — storage dialect change)
Breaking: local-tier `data.db` SQLite files are not migrated. Clean break.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-04 16:44:48 -05:00
30c0fb1308
fix: remediate npm deprecation warnings in @mosaic/gateway 0.0.3 ( #377 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 21:03:54 +00:00
26fac4722f
fix: gateway install preserves npm prefix via registry flag ( #376 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 20:36:15 +00:00
e3f64c79d9
chore: move gateway default port from 4000 to 14242 ( #375 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 20:17:40 +00:00
cbd5e8c626
fix: scope Gitea registry to @mosaic packages only ( #374 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 19:09:14 +00:00
7560c7dee7
fix: gateway install uses Gitea registry instead of npmjs ( #373 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-04 18:59:40 +00:00
982a0e8f83
chore: bump @mosaic/mosaic and @mosaic/cli to 0.0.11 ( #372 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 18:47:03 +00:00
fc7fa11923
feat: local tier gateway with PGlite + Gitea-only publishing ( #371 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-04 18:39:20 +00:00
86d6c214fe
feat: gateway publishability + npmjs publish script ( #370 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-04 18:07:05 +00:00
39ccba95d0
feat: mosaic gateway CLI daemon management + admin token auth ( #369 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-04 18:03:12 +00:00
202e375f41
Merge pull request 'fix: add build tools to CI install step for better-sqlite3 native bindings' ( #368 ) from feat/task-1775219952-fix-add-build-tools-to-ci-install-step-for-better-sqlite3 into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-03 15:41:23 +00:00
Jarvis
d0378c5723
fix: add Alpine build tools before pnpm install in CI
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
2026-04-03 09:13:25 -05:00
d6f04a0757
Merge pull request 'fix: add build tools to CI install step for better-sqlite3 native bindings' ( #366 ) from fix/storage-sqlite-ci into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-03 13:41:04 +00:00
afedb8697e
Merge pull request 'fix: allow better-sqlite3 build script in pnpm 10' ( #367 ) from fix/pnpm-build-scripts into main
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-03 13:11:07 +00:00
Jarvis
1274df7ffc
fix: allow better-sqlite3 build script in pnpm 10
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
2026-04-03 08:06:01 -05:00
Jarvis
1b4767bd8b
fix: add build tools to CI install step for better-sqlite3 native bindings
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
2026-04-03 07:41:39 -05:00
0b0fe10b37
Merge pull request 'feat: storage abstraction retrofit — adapters for queue, storage, memory (phases 1-4)' ( #365 ) from feat/storage-abstraction into main
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/push/publish Pipeline was successful
2026-04-03 04:40:57 +00:00
acfb31f8f6
fix: quality-rails Commander version mismatch + installer defaults ( #364 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
2026-04-03 02:40:02 +00:00
Jarvis
fd83bd4f2d
chore(orchestrator): Phase 4 complete — config schema + CLI lifecycle commands
...
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
381 tests passing (347 gateway + 34 CLI), 40/40 tasks clean
2026-04-02 21:38:40 -05:00
Jarvis
ce3ca1dbd1
feat(cli): add gateway start/stop/status lifecycle commands
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 21:37:20 -05:00
Jarvis
95e7b071d4
feat(cli): add mosaic gateway init command with tier selection wizard
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 21:35:32 -05:00
d4c5797a65
fix: installer copies default framework files (AGENTS.md) to mosaicHome ( #363 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-03 02:34:43 +00:00
70a51ba711
fix: all CLI script resolution uses bundled-first resolveTool() ( #362 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-03 02:28:07 +00:00
db8023bdbb
fix: fwScript prefers npm-bundled scripts over stale deployed copies ( #361 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-03 02:21:58 +00:00
9e597ecf87
chore: bump @mosaic/mosaic and @mosaic/cli to 0.0.6 ( #360 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-03 02:13:37 +00:00
a23c117ea4
fix: auto-migrate customized skills to skills-local/ on sync ( #359 )
ci/woodpecker/push/publish Pipeline failed
ci/woodpecker/push/ci Pipeline failed
2026-04-03 02:11:03 +00:00
0cf80dab8c
fix: stale update banner + skill sync dirty worktree crash ( #358 )
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline failed
2026-04-03 02:04:05 +00:00
Jarvis
04a80fb9ba
feat(config): add MosaicConfig schema + loader with tier auto-detection
...
ci/woodpecker/push/ci Pipeline failed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 21:03:00 -05:00
Jarvis
626adac363
chore(orchestrator): Phase 3 complete — local tier implemented (SQLite + keyword search + JSON queue)
...
ci/woodpecker/push/ci Pipeline failed
42 new tests: 4 queue, 18 storage, 20 memory
347 total tests passing
2026-04-02 20:56:39 -05:00
Jarvis
35fbd88a1d
feat(memory): implement keyword search adapter — no vector dependency
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:55:00 -05:00
381b0eed7b
Merge pull request 'chore: bump @mosaic/mosaic and @mosaic/cli to 0.0.4' ( #357 ) from chore/bump-0.0.4 into main
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Reviewed-on: mosaic/mosaic-stack#357
2026-04-03 01:51:55 +00:00
Jarvis
25383ea645
feat(storage): implement SQLite adapter with better-sqlite3
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:51:13 -05:00
Jarvis
e7db9ddf98
chore: bump @mosaic/mosaic and @mosaic/cli to 0.0.4
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/push/ci Pipeline failed
2026-04-02 20:50:44 -05:00
Jarvis
7bb878718d
feat(queue): implement local adapter with JSON persistence
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:46:11 -05:00
Jarvis
46a31d4e71
chore(orchestrator): Phase 2 complete — existing backends wrapped as adapters
ci/woodpecker/push/ci Pipeline was successful
2026-04-02 20:44:11 -05:00
Jarvis
e128a7a322
feat(gateway): wire adapter factories + DI tokens alongside existing providers
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:11 -05:00
Jarvis
27b1898ec6
refactor(memory): wrap pgvector logic as MemoryAdapter implementation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:11 -05:00
Jarvis
d19ef45bb0
feat(storage): implement Postgres adapter wrapping Drizzle + @mosaic/db
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
5e852df6c3
refactor(queue): wrap ioredis as bullmq adapter behind QueueAdapter interface
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
e0eca771c6
chore(orchestrator): Phase 1 complete — all interfaces defined
2026-04-02 20:44:10 -05:00
Jarvis
9d22ef4cc9
feat: add adapter factory + registry pattern for queue, storage, memory
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
41961a6980
feat(memory): define MemoryAdapter interface types
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
e797676a02
feat(storage): define StorageAdapter interface types + scaffold package
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
05d61e62be
feat(queue): define QueueAdapter interface types
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-02 20:44:10 -05:00
Jarvis
73043773d8
chore(orchestrator): Bootstrap storage abstraction retrofit
...
Mission: Decouple gateway from hardcoded Postgres/Valkey backends.
20 tasks across 5 phases. Estimated total: ~214K tokens.
Phase 1: Interface extraction (4 tasks)
Phase 2: Wrap existing backends as adapters (5 tasks)
Phase 3: Local tier implementation (4 tasks)
Phase 4: Config + CLI commands (4 tasks)
Phase 5: Migration + docs (3 tasks)
2026-04-02 20:44:10 -05:00
0be9729e40
Merge pull request 'fix: syncDirectory same-path guard, nested .git exclusion, and sync stash handling' ( #356 ) from fix/idempotent-init into main
...
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
Reviewed-on: mosaic/mosaic-stack#356
2026-04-03 01:42:18 +00:00
Jarvis
e83674ac51
fix: mosaic sync — auto-stash dirty worktree before pull --rebase
...
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/push/ci Pipeline was successful
git pull --rebase fails with 'cannot pull with rebase: You have
unstaged changes' when the skills repo has local modifications.
Fix: detect dirty index/worktree, stash before pull, restore after.
Also gracefully handle pull failures (warn and continue with existing
checkout) and stash pop conflicts.
2026-04-02 20:41:11 -05:00
Jarvis
a6e59bf829
fix: syncDirectory — guard same-path copy and skip nested .git dirs
...
Two bugs causing 'EACCES: permission denied, copyfile' when source
and target are the same path (e.g. wizard with sourceDir == mosaicHome):
1. No same-path guard — syncDirectory tried to copy every file onto
itself; git pack files are read-only (0444) so copyFileSync fails.
2. excludeGit only matched top-level .git — nested .git dirs like
sources/agent-skills/.git were copied, hitting the same permission
issue.
Fixes:
- Early return when resolve(source) === resolve(target)
- Match .git dirs at any depth via dirName and relPath checks
- Skip files inside .git/ paths
Added file-ops.test.ts with 4 tests covering all cases.
2026-04-02 20:41:11 -05:00