Compare commits

..

1 Commits

Author SHA1 Message Date
Jarvis
6deae95339 feat(mosaic): drill-down main menu + provider-first flow + quick start
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Replace the linear 12-stage wizard interrogation with a menu-driven
architecture. Key changes:

- Main menu with drill-down sections: Quick Start, Providers, Agent
  Identity, Skills, Gateway, Advanced, Finish & Apply
- Quick Start path: 3 questions (API key, admin email, password) with
  sensible defaults for everything else. Target: under 90 seconds.
- Provider-first flow: LLM API key collection moves to the front of
  the wizard, with auto-detection of Anthropic vs OpenAI from key prefix
- Deterministic intent/naming: user picks an intent category (general,
  software-dev, devops, research, content, custom) and gets a thematic
  agent name proposal (Mosaic, Forge, Sentinel, Atlas, Muse)
- Headless backward compat: MOSAIC_ASSUME_YES=1 + env vars still work
  unchanged, with new MOSAIC_AGENT_NAME and MOSAIC_AGENT_INTENT vars
- Version bump: 0.0.26 -> 0.0.27

Closes #438

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 19:10:41 -05:00
28 changed files with 52 additions and 78 deletions

View File

@@ -103,12 +103,12 @@ steps:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json
- |
DESTINATIONS="--destination git.mosaicstack.dev/mosaicstack/stack/gateway:sha-${CI_COMMIT_SHA:0:7}"
DESTINATIONS="--destination git.mosaicstack.dev/mosaicstack/mosaic-stack/gateway:sha-${CI_COMMIT_SHA:0:7}"
if [ "$CI_COMMIT_BRANCH" = "main" ]; then
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/stack/gateway:latest"
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/mosaic-stack/gateway:latest"
fi
if [ -n "$CI_COMMIT_TAG" ]; then
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/stack/gateway:$CI_COMMIT_TAG"
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/mosaic-stack/gateway:$CI_COMMIT_TAG"
fi
/kaniko/executor --context . --dockerfile docker/gateway.Dockerfile $DESTINATIONS
depends_on:
@@ -128,12 +128,12 @@ steps:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"git.mosaicstack.dev\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASS\"}}}" > /kaniko/.docker/config.json
- |
DESTINATIONS="--destination git.mosaicstack.dev/mosaicstack/stack/web:sha-${CI_COMMIT_SHA:0:7}"
DESTINATIONS="--destination git.mosaicstack.dev/mosaicstack/mosaic-stack/web:sha-${CI_COMMIT_SHA:0:7}"
if [ "$CI_COMMIT_BRANCH" = "main" ]; then
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/stack/web:latest"
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/mosaic-stack/web:latest"
fi
if [ -n "$CI_COMMIT_TAG" ]; then
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/stack/web:$CI_COMMIT_TAG"
DESTINATIONS="$DESTINATIONS --destination git.mosaicstack.dev/mosaicstack/mosaic-stack/web:$CI_COMMIT_TAG"
fi
/kaniko/executor --context . --dockerfile docker/web.Dockerfile $DESTINATIONS
depends_on:

View File

@@ -7,13 +7,7 @@ Mosaic gives you a unified launcher for Claude Code, Codex, OpenCode, and Pi —
## Quick Install
```bash
curl -fsSL https://mosaicstack.dev/install.sh | bash
```
Or use the direct URL:
```bash
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/mosaic-stack/raw/branch/main/tools/install.sh)
```
The installer auto-launches the setup wizard, which walks you through gateway install and verification. Flags for non-interactive use:
@@ -185,8 +179,8 @@ Consent state is persisted in config. Remote upload is a no-op until you run `mo
### Setup
```bash
git clone git@git.mosaicstack.dev:mosaicstack/stack.git
cd stack
git clone git@git.mosaicstack.dev:mosaicstack/mosaic-stack.git
cd mosaic-stack
# Start infrastructure (Postgres, Valkey, Jaeger)
docker compose up -d
@@ -235,7 +229,7 @@ npm packages are published to the Gitea package registry on main merges.
## Architecture
```
stack/
mosaic-stack/
├── apps/
│ ├── gateway/ NestJS API + WebSocket hub (Fastify, Socket.IO, OTEL)
│ └── web/ Next.js dashboard (React 19, Tailwind)
@@ -308,13 +302,7 @@ Each stage has a dispatch mode (`exec` for research/review, `yolo` for coding),
Run the installer again — it handles upgrades automatically:
```bash
curl -fsSL https://mosaicstack.dev/install.sh | bash
```
Or use the direct URL:
```bash
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/mosaic-stack/raw/branch/main/tools/install.sh)
```
Or use the CLI:

View File

@@ -3,7 +3,7 @@
"version": "0.0.6",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "apps/gateway"
},
"type": "module",

View File

@@ -165,13 +165,7 @@ The `mosaic` CLI provides a terminal interface to the same gateway API.
Install via the Mosaic installer:
```bash
curl -fsSL https://mosaicstack.dev/install.sh | bash
```
Or use the direct URL:
```bash
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/mosaic-stack/raw/branch/main/tools/install.sh)
```
The installer places the `mosaic` binary at `~/.npm-global/bin/mosaic`. Flags for

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/agent"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/auth"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/brain"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/config"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/coord"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/db"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/design-tokens"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/forge"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/log"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/macp"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.4",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/memory"
},
"type": "module",

View File

@@ -4,20 +4,14 @@ Universal agent standards layer for Claude Code, Codex, OpenCode, and Pi.
One config, every runtime, same standards.
> **This is the framework component of [mosaic-stack](https://git.mosaicstack.dev/mosaicstack/stack).** No personal data, credentials, user-specific preferences, or machine-specific paths should be committed. All personalization happens at install time via `mosaic init` or by editing files in `~/.config/mosaic/` after installation.
> **This is the framework component of [mosaic-stack](https://git.mosaicstack.dev/mosaic/mosaic-stack).** No personal data, credentials, user-specific preferences, or machine-specific paths should be committed. All personalization happens at install time via `mosaic init` or by editing files in `~/.config/mosaic/` after installation.
## Quick Install
### Mac / Linux
```bash
curl -fsSL https://mosaicstack.dev/install.sh | bash
```
Or use the direct URL:
```bash
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
bash <(curl -fsSL https://git.mosaicstack.dev/mosaic/mosaic-stack/raw/branch/main/tools/install.sh)
```
### Windows (PowerShell)
@@ -29,8 +23,8 @@ bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/
### From Source (any platform)
```bash
git clone git@git.mosaicstack.dev:mosaicstack/stack.git ~/src/stack
cd ~/src/stack && bash tools/install.sh
git clone git@git.mosaicstack.dev:mosaic/mosaic-stack.git ~/src/mosaic-stack
cd ~/src/mosaic-stack && bash tools/install.sh
```
The installer:
@@ -151,19 +145,13 @@ mosaic upgrade check # Check upgrade status (no changes)
Run the installer again — it handles upgrades automatically:
```bash
curl -fsSL https://mosaicstack.dev/install.sh | bash
```
Or use the direct URL:
```bash
bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
bash <(curl -fsSL https://git.mosaicstack.dev/mosaic/mosaic-stack/raw/branch/main/tools/install.sh)
```
Or from a local checkout:
```bash
cd ~/src/stack && git pull && bash tools/install.sh
cd ~/src/mosaic-stack && git pull && bash tools/install.sh
```
The installer preserves local `SOUL.md`, `USER.md`, `TOOLS.md`, and `memory/` by default.

View File

@@ -1,9 +1,9 @@
{
"name": "@mosaicstack/mosaic",
"version": "0.0.28",
"version": "0.0.27",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/mosaic"
},
"description": "Mosaic agent framework — installation wizard and meta package",

View File

@@ -135,11 +135,15 @@ program
// No valid session — prompt for credentials
if (!session) {
const { promptLine, promptSecret } = await import('./commands/gateway/login.js');
const readline = await import('node:readline');
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const ask = (q: string): Promise<string> =>
new Promise((resolve) => rl.question(q, resolve));
console.log(`Sign in to ${opts.gateway}`);
const email = await promptLine('Email: ');
const password = await promptSecret('Password: ');
const email = await ask('Email: ');
const password = await ask('Password: ');
rl.close();
try {
const auth = await signIn(opts.gateway, email, password);

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/prdy"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.3",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/quality-rails"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.4",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/queue"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.4",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/storage"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "packages/types"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "plugins/discord"
},
"main": "dist/index.js",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "plugins/macp"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "plugins/mosaic-framework"
},
"type": "module",

View File

@@ -3,7 +3,7 @@
"version": "0.0.2",
"repository": {
"type": "git",
"url": "https://git.mosaicstack.dev/mosaicstack/stack.git",
"url": "https://git.mosaicstack.dev/mosaicstack/mosaic-stack.git",
"directory": "plugins/telegram"
},
"main": "dist/index.js",

View File

@@ -5,11 +5,11 @@
# 1. Mosaic framework → ~/.config/mosaic/ (bash launcher, guides, runtime configs, tools)
# 2. @mosaicstack/mosaic (npm) → ~/.npm-global/ (CLI, TUI, gateway client, wizard)
#
# Quick: curl -fsSL https://mosaicstack.dev/install.sh | bash
# Direct: bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh)
# Remote install (recommended):
# bash <(curl -fsSL https://git.mosaicstack.dev/mosaicstack/mosaic-stack/raw/branch/main/tools/install.sh)
#
# Remote install (alternative — use -s -- to pass flags):
# curl -fsSL https://git.mosaicstack.dev/mosaicstack/stack/raw/branch/main/tools/install.sh | bash -s --
# curl -fsSL https://git.mosaicstack.dev/mosaicstack/mosaic-stack/raw/branch/main/tools/install.sh | bash -s --
#
# Flags:
# --check Version check only, no install
@@ -69,7 +69,7 @@ REGISTRY="${MOSAIC_REGISTRY:-https://git.mosaicstack.dev/api/packages/mosaicstac
SCOPE="${MOSAIC_SCOPE:-@mosaicstack}"
PREFIX="${MOSAIC_PREFIX:-$HOME/.npm-global}"
CLI_PKG="${SCOPE}/mosaic"
REPO_BASE="https://git.mosaicstack.dev/mosaicstack/stack"
REPO_BASE="https://git.mosaicstack.dev/mosaicstack/mosaic-stack"
ARCHIVE_URL="${REPO_BASE}/archive/${GIT_REF}.tar.gz"
# ─── uninstall path ───────────────────────────────────────────────────────────