From 6954e43bbb92257130392e5e1b0f40dcb434145e Mon Sep 17 00:00:00 2001 From: Jarvis Date: Sat, 4 Apr 2026 13:32:02 -0500 Subject: [PATCH 1/2] feat: local tier gateway with PGlite + Gitea-only publishing + repo linking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add PGlite (embedded Postgres) for local tier — gateway runs without external PG server. Same schema, same Drizzle API, zero module refactor. - Install wizard now offers tier selection (local vs team). Local skips DATABASE_URL/VALKEY_URL, writes mosaic.config.json. - Comment out npmjs publish step in CI (preserved for future use). - Revert gateway publishConfig to Gitea registry, include in Gitea publish. - Add repository field to all 23 publishable package.json files for Gitea package-to-repo linking. Co-Authored-By: Claude Opus 4.6 --- .woodpecker/publish.yml | 30 ++++++------ apps/gateway/package.json | 7 ++- apps/gateway/src/database/database.module.ts | 15 ++++-- packages/agent/package.json | 5 ++ packages/auth/package.json | 5 ++ packages/brain/package.json | 5 ++ packages/cli/package.json | 5 ++ packages/cli/src/commands/gateway/install.ts | 50 +++++++++++++++++--- packages/config/package.json | 5 ++ packages/coord/package.json | 5 ++ packages/db/package.json | 6 +++ packages/db/src/client-pglite.ts | 15 ++++++ packages/db/src/index.ts | 1 + packages/design-tokens/package.json | 5 ++ packages/forge/package.json | 5 ++ packages/log/package.json | 5 ++ packages/macp/package.json | 5 ++ packages/memory/package.json | 5 ++ packages/mosaic/package.json | 5 ++ packages/prdy/package.json | 5 ++ packages/quality-rails/package.json | 5 ++ packages/queue/package.json | 5 ++ packages/storage/package.json | 5 ++ packages/types/package.json | 5 ++ plugins/discord/package.json | 5 ++ plugins/macp/package.json | 5 ++ plugins/mosaic-framework/package.json | 5 ++ plugins/telegram/package.json | 5 ++ pnpm-lock.yaml | 33 ++++++++----- 29 files changed, 224 insertions(+), 38 deletions(-) create mode 100644 packages/db/src/client-pglite.ts diff --git a/.woodpecker/publish.yml b/.woodpecker/publish.yml index 3f36f61..a700d4e 100644 --- a/.woodpecker/publish.yml +++ b/.woodpecker/publish.yml @@ -36,29 +36,29 @@ steps: echo "//git.mosaicstack.dev/api/packages/mosaic/npm/:_authToken=$NPM_TOKEN" > ~/.npmrc echo "@mosaic:registry=https://git.mosaicstack.dev/api/packages/mosaic/npm/" >> ~/.npmrc # Publish non-private packages to Gitea (--no-git-checks skips dirty/branch checks in CI) - # --filter excludes gateway (published to npmjs instead) and web (private) + # --filter excludes web (private) - > pnpm --filter "@mosaic/*" - --filter "!@mosaic/gateway" --filter "!@mosaic/web" publish --no-git-checks --access public || echo "[publish] Some packages may already exist at this version — continuing" depends_on: - build - publish-npmjs: - image: *node_image - environment: - NPM_TOKEN: - from_secret: npmjs_token - commands: - - *enable_pnpm - - apk add --no-cache jq bash - - bash scripts/publish-npmjs.sh - depends_on: - - build - when: - - event: [tag] + # TODO: Uncomment when ready to publish to npmjs.org + # publish-npmjs: + # image: *node_image + # environment: + # NPM_TOKEN: + # from_secret: npmjs_token + # commands: + # - *enable_pnpm + # - apk add --no-cache jq bash + # - bash scripts/publish-npmjs.sh + # depends_on: + # - build + # when: + # - event: [tag] build-gateway: image: gcr.io/kaniko-project/executor:debug diff --git a/apps/gateway/package.json b/apps/gateway/package.json index fbb6f08..d57072f 100644 --- a/apps/gateway/package.json +++ b/apps/gateway/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/gateway", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "apps/gateway" + }, "type": "module", "main": "dist/main.js", "bin": { @@ -10,7 +15,7 @@ "dist" ], "publishConfig": { - "registry": "https://registry.npmjs.org/", + "registry": "https://git.mosaicstack.dev/api/packages/mosaic/npm/", "access": "public" }, "scripts": { diff --git a/apps/gateway/src/database/database.module.ts b/apps/gateway/src/database/database.module.ts index aaddf5a..530184c 100644 --- a/apps/gateway/src/database/database.module.ts +++ b/apps/gateway/src/database/database.module.ts @@ -1,5 +1,8 @@ +import { mkdirSync } from 'node:fs'; +import { homedir } from 'node:os'; +import { join } from 'node:path'; import { Global, Inject, Module, type OnApplicationShutdown } from '@nestjs/common'; -import { createDb, type Db, type DbHandle } from '@mosaic/db'; +import { createDb, createPgliteDb, type Db, type DbHandle } from '@mosaic/db'; import { createStorageAdapter, type StorageAdapter } from '@mosaic/storage'; import type { MosaicConfig } from '@mosaic/config'; import { MOSAIC_CONFIG } from '../config/config.module.js'; @@ -13,8 +16,14 @@ export const STORAGE_ADAPTER = 'STORAGE_ADAPTER'; providers: [ { provide: DB_HANDLE, - useFactory: (config: MosaicConfig): DbHandle => - createDb(config.storage.type === 'postgres' ? config.storage.url : undefined), + useFactory: (config: MosaicConfig): DbHandle => { + if (config.tier === 'local') { + const dataDir = join(homedir(), '.config', 'mosaic', 'gateway', 'pglite'); + mkdirSync(dataDir, { recursive: true }); + return createPgliteDb(dataDir); + } + return createDb(config.storage.type === 'postgres' ? config.storage.url : undefined); + }, inject: [MOSAIC_CONFIG], }, { diff --git a/packages/agent/package.json b/packages/agent/package.json index 7c9d661..25c2690 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/agent", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/agent" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/auth/package.json b/packages/auth/package.json index dc44302..e9b8eed 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/auth", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/auth" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/brain/package.json b/packages/brain/package.json index 4dc1234..2e465a0 100644 --- a/packages/brain/package.json +++ b/packages/brain/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/brain", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/brain" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/cli/package.json b/packages/cli/package.json index c23fe8e..b70edd9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/cli", "version": "0.0.10", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/cli" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/cli/src/commands/gateway/install.ts b/packages/cli/src/commands/gateway/install.ts index d8cde5e..a3cdc1c 100644 --- a/packages/cli/src/commands/gateway/install.ts +++ b/packages/cli/src/commands/gateway/install.ts @@ -1,5 +1,6 @@ import { randomBytes } from 'node:crypto'; import { writeFileSync } from 'node:fs'; +import { join } from 'node:path'; import { createInterface } from 'node:readline'; import type { GatewayMeta } from './daemon.js'; import { @@ -58,6 +59,13 @@ async function doInstall(rl: ReturnType, opts: InstallOp // Step 2: Collect configuration console.log('\n─── Gateway Configuration ───\n'); + // Tier selection + console.log('Storage tier:'); + console.log(' 1. Local (embedded database, no dependencies)'); + console.log(' 2. Team (PostgreSQL + Valkey required)'); + const tierAnswer = (await prompt(rl, 'Select [1]: ')).trim() || '1'; + const tier = tierAnswer === '2' ? 'team' : 'local'; + const port = opts.port !== 4000 ? opts.port @@ -66,12 +74,17 @@ async function doInstall(rl: ReturnType, opts: InstallOp 10, ); - const databaseUrl = - (await prompt(rl, 'DATABASE_URL [postgresql://mosaic:mosaic@localhost:5433/mosaic]: ')) || - 'postgresql://mosaic:mosaic@localhost:5433/mosaic'; + let databaseUrl: string | undefined; + let valkeyUrl: string | undefined; - const valkeyUrl = - (await prompt(rl, 'VALKEY_URL [redis://localhost:6380]: ')) || 'redis://localhost:6380'; + if (tier === 'team') { + databaseUrl = + (await prompt(rl, 'DATABASE_URL [postgresql://mosaic:mosaic@localhost:5433/mosaic]: ')) || + 'postgresql://mosaic:mosaic@localhost:5433/mosaic'; + + valkeyUrl = + (await prompt(rl, 'VALKEY_URL [redis://localhost:6380]: ')) || 'redis://localhost:6380'; + } const anthropicKey = await prompt(rl, 'ANTHROPIC_API_KEY (optional, press Enter to skip): '); @@ -84,8 +97,6 @@ async function doInstall(rl: ReturnType, opts: InstallOp // Step 3: Write .env const envLines = [ `GATEWAY_PORT=${port.toString()}`, - `DATABASE_URL=${databaseUrl}`, - `VALKEY_URL=${valkeyUrl}`, `BETTER_AUTH_SECRET=${authSecret}`, `BETTER_AUTH_URL=http://${opts.host}:${port.toString()}`, `GATEWAY_CORS_ORIGIN=${corsOrigin}`, @@ -93,6 +104,11 @@ async function doInstall(rl: ReturnType, opts: InstallOp `OTEL_SERVICE_NAME=mosaic-gateway`, ]; + if (tier === 'team' && databaseUrl && valkeyUrl) { + envLines.push(`DATABASE_URL=${databaseUrl}`); + envLines.push(`VALKEY_URL=${valkeyUrl}`); + } + if (anthropicKey) { envLines.push(`ANTHROPIC_API_KEY=${anthropicKey}`); } @@ -100,6 +116,26 @@ async function doInstall(rl: ReturnType, opts: InstallOp writeFileSync(ENV_FILE, envLines.join('\n') + '\n', { mode: 0o600 }); console.log(`\nConfig written to ${ENV_FILE}`); + // Step 3b: Write mosaic.config.json + const mosaicConfig = + tier === 'local' + ? { + tier: 'local', + storage: { type: 'sqlite', path: join(GATEWAY_HOME, 'data.db') }, + queue: { type: 'local', dataDir: join(GATEWAY_HOME, 'queue') }, + memory: { type: 'keyword' }, + } + : { + tier: 'team', + storage: { type: 'postgres', url: databaseUrl }, + queue: { type: 'bullmq', url: valkeyUrl }, + memory: { type: 'pgvector' }, + }; + + const configFile = join(GATEWAY_HOME, 'mosaic.config.json'); + writeFileSync(configFile, JSON.stringify(mosaicConfig, null, 2) + '\n', { mode: 0o600 }); + console.log(`Config written to ${configFile}`); + // Step 4: Write meta.json let entryPoint: string; try { diff --git a/packages/config/package.json b/packages/config/package.json index 1643785..29fb27a 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/config", "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/config" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/coord/package.json b/packages/coord/package.json index b9d7c06..7b4403e 100644 --- a/packages/coord/package.json +++ b/packages/coord/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/coord", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/coord" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/db/package.json b/packages/db/package.json index 9f3361e..54fa5ed 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/db", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/db" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -28,6 +33,7 @@ "vitest": "^2.0.0" }, "dependencies": { + "@electric-sql/pglite": "^0.2.17", "drizzle-orm": "^0.45.1", "postgres": "^3.4.8" }, diff --git a/packages/db/src/client-pglite.ts b/packages/db/src/client-pglite.ts new file mode 100644 index 0000000..67e771b --- /dev/null +++ b/packages/db/src/client-pglite.ts @@ -0,0 +1,15 @@ +import { PGlite } from '@electric-sql/pglite'; +import { drizzle } from 'drizzle-orm/pglite'; +import * as schema from './schema.js'; +import type { DbHandle } from './client.js'; + +export function createPgliteDb(dataDir: string): DbHandle { + const client = new PGlite(dataDir); + const db = drizzle(client, { schema }); + return { + db: db as unknown as DbHandle['db'], + close: async () => { + await client.close(); + }, + }; +} diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index bee6169..5c745ba 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,4 +1,5 @@ export { createDb, type Db, type DbHandle } from './client.js'; +export { createPgliteDb } from './client-pglite.js'; export { runMigrations } from './migrate.js'; export * from './schema.js'; export { diff --git a/packages/design-tokens/package.json b/packages/design-tokens/package.json index d5c032f..811157f 100644 --- a/packages/design-tokens/package.json +++ b/packages/design-tokens/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/design-tokens", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/design-tokens" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/forge/package.json b/packages/forge/package.json index ad6f82c..12d5489 100644 --- a/packages/forge/package.json +++ b/packages/forge/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/forge", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/forge" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/log/package.json b/packages/log/package.json index 49be43a..80408b5 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/log", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/log" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/macp/package.json b/packages/macp/package.json index 9f939fb..2d28d31 100644 --- a/packages/macp/package.json +++ b/packages/macp/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/macp", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/macp" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/memory/package.json b/packages/memory/package.json index d08e1c0..44530f7 100644 --- a/packages/memory/package.json +++ b/packages/memory/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/memory", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/memory" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/mosaic/package.json b/packages/mosaic/package.json index 4553da1..3257dcf 100644 --- a/packages/mosaic/package.json +++ b/packages/mosaic/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/mosaic", "version": "0.0.10", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/mosaic" + }, "description": "Mosaic agent framework — installation wizard and meta package", "type": "module", "main": "dist/index.js", diff --git a/packages/prdy/package.json b/packages/prdy/package.json index ad9acaa..b8ca3e1 100644 --- a/packages/prdy/package.json +++ b/packages/prdy/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/prdy", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/prdy" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/quality-rails/package.json b/packages/quality-rails/package.json index e26ff4a..c01f3f3 100644 --- a/packages/quality-rails/package.json +++ b/packages/quality-rails/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/quality-rails", "version": "0.0.3", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/quality-rails" + }, "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/queue/package.json b/packages/queue/package.json index 6bbd141..2c9f862 100644 --- a/packages/queue/package.json +++ b/packages/queue/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/queue", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/queue" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/storage/package.json b/packages/storage/package.json index b525008..c7884d2 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/storage", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/storage" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/types/package.json b/packages/types/package.json index 2a4bcd5..3e8008c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/types", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "packages/types" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/plugins/discord/package.json b/plugins/discord/package.json index 41b3c25..e5b5511 100644 --- a/plugins/discord/package.json +++ b/plugins/discord/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/discord-plugin", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "plugins/discord" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/plugins/macp/package.json b/plugins/macp/package.json index e6f2fcb..7bd6dc6 100644 --- a/plugins/macp/package.json +++ b/plugins/macp/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/oc-macp-plugin", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "plugins/macp" + }, "type": "module", "main": "src/index.ts", "description": "OpenClaw ACP runtime backend that routes sessions_spawn(runtime:\"macp\") to the Pi MACP runner.", diff --git a/plugins/mosaic-framework/package.json b/plugins/mosaic-framework/package.json index 37cfe0f..1173b3c 100644 --- a/plugins/mosaic-framework/package.json +++ b/plugins/mosaic-framework/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/oc-framework-plugin", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "plugins/mosaic-framework" + }, "type": "module", "main": "src/index.ts", "description": "Injects Mosaic framework rails, runtime contract, and active mission context into all OpenClaw agent sessions and ACP subagent spawns.", diff --git a/plugins/telegram/package.json b/plugins/telegram/package.json index eecccf2..8b5bfbd 100644 --- a/plugins/telegram/package.json +++ b/plugins/telegram/package.json @@ -1,6 +1,11 @@ { "name": "@mosaic/telegram-plugin", "version": "0.0.2", + "repository": { + "type": "git", + "url": "https://git.mosaicstack.dev/mosaic/mosaic-stack.git", + "directory": "plugins/telegram" + }, "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3acf486..ec9c301 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -136,7 +136,7 @@ importers: version: 0.34.48 better-auth: specifier: ^1.5.5 - version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) + version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) bullmq: specifier: ^5.71.0 version: 5.71.0 @@ -200,7 +200,7 @@ importers: version: link:../../packages/design-tokens better-auth: specifier: ^1.5.5 - version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) + version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) clsx: specifier: ^2.1.0 version: 2.1.1 @@ -271,7 +271,7 @@ importers: version: link:../db better-auth: specifier: ^1.5.5 - version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) + version: 1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)) devDependencies: '@types/node': specifier: ^22.0.0 @@ -394,9 +394,12 @@ importers: packages/db: dependencies: + '@electric-sql/pglite': + specifier: ^0.2.17 + version: 0.2.17 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) + version: 0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) postgres: specifier: ^3.4.8 version: 3.4.8 @@ -452,7 +455,7 @@ importers: version: link:../db drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) + version: 0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) devDependencies: typescript: specifier: ^5.8.0 @@ -489,7 +492,7 @@ importers: version: link:../types drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) + version: 0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) devDependencies: typescript: specifier: ^5.8.0 @@ -1150,6 +1153,9 @@ packages: '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + '@electric-sql/pglite@0.2.17': + resolution: {integrity: sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==} + '@emnapi/runtime@1.9.0': resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==} @@ -7765,12 +7771,12 @@ snapshots: nanostores: 1.1.1 zod: 4.3.6 - '@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))': + '@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))': dependencies: '@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1) '@better-auth/utils': 0.3.1 optionalDependencies: - drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) + drizzle-orm: 0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) '@better-auth/kysely-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11)': dependencies: @@ -7905,6 +7911,8 @@ snapshots: '@drizzle-team/brocli@0.10.2': {} + '@electric-sql/pglite@0.2.17': {} + '@emnapi/runtime@1.9.0': dependencies: tslib: 2.8.1 @@ -10711,10 +10719,10 @@ snapshots: basic-ftp@5.2.0: {} - better-auth@1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)): + better-auth@1.5.5(better-sqlite3@12.8.0)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8))(mongodb@7.1.0(socks@2.8.7))(next@16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@2.1.9(@types/node@22.19.15)(jsdom@29.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)): dependencies: '@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1) - '@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8)) + '@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8)) '@better-auth/kysely-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11) '@better-auth/memory-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1) '@better-auth/mongo-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(mongodb@7.1.0(socks@2.8.7)) @@ -10733,7 +10741,7 @@ snapshots: optionalDependencies: better-sqlite3: 12.8.0 drizzle-kit: 0.31.9 - drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) + drizzle-orm: 0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8) mongodb: 7.1.0(socks@2.8.7) next: 16.1.6(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -11140,8 +11148,9 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8): + drizzle-orm@0.45.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.6)(better-sqlite3@12.8.0)(kysely@0.28.11)(postgres@3.4.8): optionalDependencies: + '@electric-sql/pglite': 0.2.17 '@opentelemetry/api': 1.9.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.15.6 -- 2.49.1 From 9f73d3f5db204b9adf65f8c2eae5482699f8dbc6 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Sat, 4 Apr 2026 13:37:23 -0500 Subject: [PATCH 2/2] fix: unify Commander to v13 across all packages (prdy, mosaic) Stale commander@12 in @mosaic/prdy and @mosaic/mosaic caused type mismatch with @mosaic/cli and @mosaic/quality-rails (both on v13). Co-Authored-By: Claude Opus 4.6 --- packages/mosaic/package.json | 2 +- packages/prdy/package.json | 2 +- pnpm-lock.yaml | 14 ++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/mosaic/package.json b/packages/mosaic/package.json index 3257dcf..e8391c9 100644 --- a/packages/mosaic/package.json +++ b/packages/mosaic/package.json @@ -32,7 +32,7 @@ "@mosaic/quality-rails": "workspace:*", "@mosaic/types": "workspace:*", "@clack/prompts": "^0.9.1", - "commander": "^12.1.0", + "commander": "^13.0.0", "picocolors": "^1.1.1", "yaml": "^2.6.1", "zod": "^3.23.8" diff --git a/packages/prdy/package.json b/packages/prdy/package.json index b8ca3e1..9fb0eef 100644 --- a/packages/prdy/package.json +++ b/packages/prdy/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@clack/prompts": "^0.9.0", - "commander": "^12.0.0", + "commander": "^13.0.0", "js-yaml": "^4.1.0", "zod": "^3.22.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec9c301..c2ceedd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -522,8 +522,8 @@ importers: specifier: workspace:* version: link:../types commander: - specifier: ^12.1.0 - version: 12.1.0 + specifier: ^13.0.0 + version: 13.1.0 picocolors: specifier: ^1.1.1 version: 1.1.1 @@ -550,8 +550,8 @@ importers: specifier: ^0.9.0 version: 0.9.1 commander: - specifier: ^12.0.0 - version: 12.1.0 + specifier: ^13.0.0 + version: 13.1.0 js-yaml: specifier: ^4.1.0 version: 4.1.1 @@ -4082,10 +4082,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} - engines: {node: '>=18'} - commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -10979,8 +10975,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@12.1.0: {} - commander@13.1.0: {} commander@14.0.3: {} -- 2.49.1