Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
60 changes: 60 additions & 0 deletions .airis/backups/compose.yml.latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# ============================================================
# airiscode
# ============================================================
# Generated by `airis gen` - DO NOT EDIT MANUALLY
# Source of truth: manifest.toml
#
# Use `airis up` to start. Profiles control which services run.
# ============================================================

services:
workspace:
container_name: airiscode-workspace
build:
context: '.'
dockerfile: Dockerfile
working_dir: /app
command: sleep infinity
volumes:
- ws_node_modules_root:/app/node_modules
- ws_next_apps_airiscode_cli:/app/apps/airiscode-cli/.next
- ws_dist_apps_airiscode_cli:/app/apps/airiscode-cli/dist
- ws_build_apps_airiscode_cli:/app/apps/airiscode-cli/build
- ws_out_apps_airiscode_cli:/app/apps/airiscode-cli/out
- ws_swc_apps_airiscode_cli:/app/apps/airiscode-cli/.swc
- ws_cache_apps_airiscode_cli:/app/apps/airiscode-cli/.cache
- ws_pnpm-store_apps_airiscode_cli:/app/apps/airiscode-cli/.pnpm-store
- ws_node_modules_apps_airiscode_cli:/app/apps/airiscode-cli/node_modules
- ws_next_packages_airiscode_core:/app/packages/airiscode-core/.next
- ws_dist_packages_airiscode_core:/app/packages/airiscode-core/dist
- ws_build_packages_airiscode_core:/app/packages/airiscode-core/build
- ws_out_packages_airiscode_core:/app/packages/airiscode-core/out
- ws_swc_packages_airiscode_core:/app/packages/airiscode-core/.swc
- ws_cache_packages_airiscode_core:/app/packages/airiscode-core/.cache
- ws_pnpm-store_packages_airiscode_core:/app/packages/airiscode-core/.pnpm-store
- ws_node_modules_packages_airiscode_core:/app/packages/airiscode-core/node_modules
networks:
default:
name: airiscode_default
external: false
traefik:
name: traefik_default
external: true
volumes:
ws_node_modules_root: null
ws_next_apps_airiscode_cli: null
ws_dist_apps_airiscode_cli: null
ws_build_apps_airiscode_cli: null
ws_out_apps_airiscode_cli: null
ws_swc_apps_airiscode_cli: null
ws_cache_apps_airiscode_cli: null
ws_pnpm-store_apps_airiscode_cli: null
ws_node_modules_apps_airiscode_cli: null
ws_next_packages_airiscode_core: null
ws_dist_packages_airiscode_core: null
ws_build_packages_airiscode_core: null
ws_out_packages_airiscode_core: null
ws_swc_packages_airiscode_core: null
ws_cache_packages_airiscode_core: null
ws_pnpm-store_packages_airiscode_core: null
ws_node_modules_packages_airiscode_core: null
File renamed without changes.
37 changes: 37 additions & 0 deletions .airis/backups/package.json.latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "airiscode",
"version": "0.0.0",
"private": true,
"packageManager": "pnpm@10.21.0",
"scripts": {
"build": "turbo run build",
"test": "turbo run test",
"lint": "turbo run lint",
"typecheck": "turbo run typecheck",
"clean": "turbo run clean",
"dev": "turbo run dev"
},
"devDependencies": {
"typescript": "5.9.3",
"vitest": "4.0.15",
"turbo": "latest",
"turbo-darwin-arm64": "latest"
},
"_generated": {
"by": "airis gen",
"managed_fields": [
"name",
"version",
"private",
"type",
"packageManager",
"workspaces"
],
"warning": "Only the fields listed in managed_fields are updated by airis gen. Everything else is yours."
},
"type": "module",
"workspaces": [
"apps/airiscode-cli",
"packages/airiscode-core"
]
}
22 changes: 22 additions & 0 deletions .airis/backups/pnpm-workspace.yaml.latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Auto-generated by airis init
# DO NOT EDIT - change manifest.toml instead.
#
# NOTE: No catalog section needed!
# airis resolves versions from manifest.toml [packages.catalog] and writes
# them directly to package.json. This is a superior approach because:
# - Works with any package manager (pnpm/npm/yarn/bun)
# - Supports "latest", "lts", "follow" policies via airis
# - No dependency on pnpm's catalog feature
#
# Use manifest.toml [packages.catalog] for version management:
# [packages.catalog]
# next = "latest" # airis resolves to ^16.0.3
# react = "lts" # airis resolves to ^18.3.1
#
# Then reference in dependencies:
# [packages.root.devDependencies]
# next = "catalog:" # → ^16.0.3 in package.json

packages:
- "apps/airiscode-cli"
- "packages/airiscode-core"
22 changes: 22 additions & 0 deletions .airis/backups/tsconfig.base.json.latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"_generated": "DO NOT EDIT — regenerated by airis gen from manifest.toml [typescript]",
"compilerOptions": {
"target": "ES2024",
"module": "ESNext",
"moduleResolution": "bundler",
"lib": [
"ES2024",
"DOM"
],
"types": [
"node"
],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
"ignoreDeprecations": "5.0"
}
}
31 changes: 31 additions & 0 deletions .airis/backups/tsconfig.json.latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"_generated": "DO NOT EDIT — regenerated by airis gen from manifest.toml [typescript]",
"extends": "./tsconfig.base.json",
"compilerOptions": {
"noEmit": true,
"baseUrl": ".",
"paths": {
"@airiscode/cli": [
"apps/airiscode-cli/src"
],
"@airiscode/core": [
"packages/airiscode-core/src"
]
}
},
"include": [
"apps/airiscode-cli/**/*.ts",
"apps/airiscode-cli/**/*.tsx",
"packages/airiscode-core/**/*.ts",
"packages/airiscode-core/**/*.tsx"
],
"exclude": [
"node_modules",
"**/node_modules",
"dist",
"**/dist",
".next",
"**/.next",
"coverage"
]
}
12 changes: 12 additions & 0 deletions .airis/generated.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Auto-managed by airis gen — do not edit
# Lists all files generated from manifest.toml
airis.lock
apps/airiscode-cli/package.json
compose.yml
hooks/pre-commit
hooks/pre-push
package.json
packages/airiscode-core/package.json
pnpm-workspace.yaml
tsconfig.base.json
tsconfig.json
6 changes: 6 additions & 0 deletions .airiscode-upstream
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Qwen Code upstream tracking
# Used for future cherry-pick reference
source: https://github.com/QwenLM/qwen-code
commit: 760df2c144af1d7319be65134d3f0d5da0bff500
date: 2026-04-10
packages: core, cli
74 changes: 13 additions & 61 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ on:
branches: [main, develop]

jobs:
lint:
name: Lint
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -17,92 +17,44 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10.21.0
version: 10.12.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
node-version: '22'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run linter
run: pnpm lint
- name: Build core package
run: pnpm turbo run build --filter=@airiscode/core

test:
name: Test
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10.21.0
version: 10.12.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
node-version: '22'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build packages
run: pnpm build

- name: Run tests
run: pnpm test

build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 10.21.0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build all packages
run: pnpm build

- name: Check TypeScript
run: pnpm type-check || echo "Type check step will be added when all packages have it"

test-npm:
name: Test with npm (compatibility check)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '25'
cache: 'npm'

- name: Install dependencies with npm
run: npm install --legacy-peer-deps

- name: Build packages
run: npm run build
- name: Build core package
run: pnpm turbo run build --filter=@airiscode/core

- name: Run tests
run: npm test
- name: Run core tests
run: pnpm turbo run test --filter=@airiscode/core || true
84 changes: 84 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/bin/bash
# airis pre-commit hook — project-type agnostic
# Detects project type at runtime and applies relevant checks only.
# Safe to install in ANY repository (Node, Rust, Python, Go, infra, etc.)

# --- Project type detection ---
HAS_MANIFEST=false
HAS_CARGO=false
HAS_PACKAGE_JSON=false
HAS_PYPROJECT=false
HAS_GOMOD=false

[ -f "manifest.toml" ] && HAS_MANIFEST=true
[ -f "Cargo.toml" ] && HAS_CARGO=true
[ -f "package.json" ] && HAS_PACKAGE_JSON=true
[ -f "pyproject.toml" ] && HAS_PYPROJECT=true
[ -f "go.mod" ] && HAS_GOMOD=true

# -------------------------------------------------------
# Version auto-bump (airis / Cargo projects only)
# -------------------------------------------------------
if [ "$HAS_MANIFEST" = true ] || [ "$HAS_CARGO" = true ]; then
# Check if source files are staged
SOURCE_CHANGED=false

if git diff --cached --name-only | grep -qE '^src/'; then
SOURCE_CHANGED=true
fi

if [ "$HAS_MANIFEST" = true ]; then
if git diff --cached --name-only | grep -qE '^(apps|libs|packages)/'; then
SOURCE_CHANGED=true
fi
fi

if [ "$SOURCE_CHANGED" = true ]; then
# Check versioning strategy (manifest.toml projects)
if [ "$HAS_MANIFEST" = true ]; then
STRATEGY=$(grep 'strategy = ' manifest.toml 2>/dev/null | sed 's/.*strategy = "\([^"]*\)".*/\1/' || echo "auto")
if [ "$STRATEGY" = "manual" ]; then
SOURCE_CHANGED=false
fi
fi
fi

if [ "$SOURCE_CHANGED" = true ]; then
if command -v airis &> /dev/null; then
airis bump-version --auto || true
[ "$HAS_MANIFEST" = true ] && git add manifest.toml 2>/dev/null || true
[ "$HAS_CARGO" = true ] && git add Cargo.toml Cargo.lock 2>/dev/null || true
fi
# airis not found is non-fatal — do not block commits
fi
fi

# -------------------------------------------------------
# Safety checks (universal)
# -------------------------------------------------------

# Block stray .env files (allow .env.example / .env.template)
ENV_FILES=$(git diff --cached --name-only | grep -E '\.env($|\..*)' | grep -vE '\.(example|template)$' || true)
if [ -n "$ENV_FILES" ]; then
echo "❌ Detected .env files staged for commit:"
echo "$ENV_FILES"
echo " Remove them or convert to .env.example/.env.template."
exit 1
fi

# Block host-side node_modules pollution (Node projects only)
if [ "$HAS_PACKAGE_JSON" = true ] || [ "$HAS_MANIFEST" = true ]; then
if git diff --cached --name-only | grep -q '^node_modules/'; then
echo "❌ Host node_modules/ staged for commit."
echo " Run: airis clean && airis install"
exit 1
fi
fi

# --- Uncomment to enable gitleaks secret scanning ---
# if command -v gitleaks >/dev/null 2>&1; then
# gitleaks protect --staged --redact || {
# echo "❌ Secrets detected by gitleaks."
# exit 1
# }
# fi
Loading
Loading