Moves all Mosaic framework runtime files from the separate bootstrap repo into the monorepo as canonical source. The @mosaic/mosaic npm package now ships the complete framework — bin scripts, runtime configs, tools, and templates — enabling standalone installation via npm install. Structure: packages/mosaic/framework/ ├── bin/ 28 CLI scripts (mosaic, mosaic-doctor, mosaic-sync-skills, etc.) ├── runtime/ Runtime adapters (claude, codex, opencode, pi, mcp) ├── tools/ Shell tooling (git, prdy, orchestrator, quality, etc.) ├── templates/ Agent and repo templates ├── defaults/ Default identity files (AGENTS.md, STANDARDS.md, SOUL.md, etc.) ├── install.sh Legacy bash installer └── remote-install.sh One-liner remote installer Key files with Pi support and recent fixes: - bin/mosaic: launch_pi() with skills-local loop - bin/mosaic-doctor: --fix auto-wiring for all 4 harnesses - bin/mosaic-sync-skills: Pi as 4th link target, symlink-aware find - bin/mosaic-link-runtime-assets: Pi settings.json patching - bin/mosaic-migrate-local-skills: Pi skill roots, symlink find - runtime/pi/RUNTIME.md + mosaic-extension.ts Package ships 251 framework files in the npm tarball (278KB compressed).
124 lines
3.3 KiB
Bash
Executable File
124 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# init-repo-labels.sh - Create standard labels and initial milestone for a repository
|
|
# Usage: init-repo-labels.sh [--skip-milestone]
|
|
#
|
|
# Works with both Gitea (tea) and GitHub (gh).
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
GIT_SCRIPT_DIR="$HOME/.config/mosaic/tools/git"
|
|
source "$GIT_SCRIPT_DIR/detect-platform.sh"
|
|
|
|
SKIP_MILESTONE=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--skip-milestone)
|
|
SKIP_MILESTONE=true
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
echo "Usage: $(basename "$0") [--skip-milestone]"
|
|
echo ""
|
|
echo "Create standard labels and initial milestone for the current repository."
|
|
echo ""
|
|
echo "Options:"
|
|
echo " --skip-milestone Skip creating the 0.0.1 pre-MVP milestone"
|
|
echo " -h, --help Show this help"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
PLATFORM=$(detect_platform)
|
|
OWNER=$(get_repo_owner)
|
|
REPO=$(get_repo_name)
|
|
|
|
echo "Platform: $PLATFORM"
|
|
echo "Repository: $OWNER/$REPO"
|
|
echo ""
|
|
|
|
# Standard labels with colors
|
|
# Format: "name|color|description"
|
|
LABELS=(
|
|
"epic|3E4B9E|Large feature spanning multiple issues"
|
|
"feature|0E8A16|New functionality"
|
|
"bug|D73A4A|Defect fix"
|
|
"task|0075CA|General work item"
|
|
"documentation|0075CA|Documentation updates"
|
|
"security|B60205|Security-related"
|
|
"breaking|D93F0B|Breaking change"
|
|
)
|
|
|
|
create_label_github() {
|
|
local name="$1" color="$2" description="$3"
|
|
|
|
# Check if label already exists
|
|
if gh label list --repo "$OWNER/$REPO" --json name -q ".[].name" 2>/dev/null | grep -qx "$name"; then
|
|
echo " [skip] '$name' already exists"
|
|
return 0
|
|
fi
|
|
|
|
gh label create "$name" \
|
|
--repo "$OWNER/$REPO" \
|
|
--color "$color" \
|
|
--description "$description" 2>/dev/null && \
|
|
echo " [created] '$name'" || \
|
|
echo " [error] Failed to create '$name'"
|
|
}
|
|
|
|
create_label_gitea() {
|
|
local name="$1" color="$2" description="$3"
|
|
|
|
# Check if label already exists
|
|
if tea labels list 2>/dev/null | grep -q "$name"; then
|
|
echo " [skip] '$name' already exists"
|
|
return 0
|
|
fi
|
|
|
|
tea labels create --name "$name" --color "#$color" --description "$description" 2>/dev/null && \
|
|
echo " [created] '$name'" || \
|
|
echo " [error] Failed to create '$name'"
|
|
}
|
|
|
|
echo "Creating labels..."
|
|
|
|
for label_def in "${LABELS[@]}"; do
|
|
IFS='|' read -r name color description <<< "$label_def"
|
|
|
|
case "$PLATFORM" in
|
|
github)
|
|
create_label_github "$name" "$color" "$description"
|
|
;;
|
|
gitea)
|
|
create_label_gitea "$name" "$color" "$description"
|
|
;;
|
|
*)
|
|
echo "Error: Unsupported platform '$PLATFORM'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo ""
|
|
|
|
# Create initial pre-MVP milestone
|
|
if [[ "$SKIP_MILESTONE" != true ]]; then
|
|
echo "Creating initial pre-MVP milestone..."
|
|
|
|
"$GIT_SCRIPT_DIR/milestone-create.sh" -t "0.0.1" -d "Pre-MVP - Foundation Sprint" 2>/dev/null && \
|
|
echo " [created] Milestone '0.0.1 - Pre-MVP'" || \
|
|
echo " [skip] Milestone may already exist or creation failed"
|
|
|
|
echo " [note] Reserve 0.1.0 for MVP release milestone"
|
|
|
|
echo ""
|
|
fi
|
|
|
|
echo "Label initialization complete."
|