From d5f6ac385d8159eb780cec9ad6104a8930058012 Mon Sep 17 00:00:00 2001 From: syui Date: Mon, 9 Jun 2025 03:15:42 +0900 Subject: [PATCH] clean --- .gitignore | 1 + ai.wiki | 2 +- card | 2 +- claude/.submodule-update.log | 10 - claude/cli/claude_cli/__init__.py | 5 - claude/cli/claude_cli/commands/__init__.py | 1 - claude/cli/claude_cli/commands/generate.py | 203 ----- claude/cli/claude_cli/commands/sync.py | 277 ------- claude/cli/claude_cli/core/config.py | 152 ---- claude/cli/claude_cli/core/templates.py | 158 ---- claude/cli/claude_cli/core/utils.py | 178 ----- claude/cli/claude_cli/main.py | 59 -- claude/cli/pyproject.toml | 71 -- claude/core/aim_protocol.md | 181 ----- claude/core/architecture.md | 58 -- claude/core/data_architecture.md | 176 ----- claude/core/git_architecture.md | 196 ----- claude/core/naming.md | 77 -- claude/core/philosophy.md | 55 -- claude/docs/development_workflow.md | 227 ------ claude/docs/optimal_development_workflow.md | 259 ------- claude/docs/submodule_management.md | 223 ------ claude/projects/ai.md | 203 ----- claude/projects/card.md | 143 ---- claude/projects/game.md | 124 --- claude/projects/gpt.md | 115 --- claude/projects/os.md | 79 -- claude/projects/verse.md | 220 ------ claude/scripts/generate_claude.sh | 182 ----- claude/scripts/session-end.sh | 227 ------ claude/scripts/sync-all.sh | 111 --- claude/scripts/sync_docs.sh | 188 ----- claude/scripts/update-submodules.sh | 793 -------------------- claude/templates/.keep | 0 gpt | 2 +- session_logs/session_2025-06-07_20-51-12.md | 24 - session_logs/session_2025-06-07_20-58-56.md | 24 - 37 files changed, 4 insertions(+), 5002 deletions(-) delete mode 100644 claude/.submodule-update.log delete mode 100644 claude/cli/claude_cli/__init__.py delete mode 100644 claude/cli/claude_cli/commands/__init__.py delete mode 100644 claude/cli/claude_cli/commands/generate.py delete mode 100644 claude/cli/claude_cli/commands/sync.py delete mode 100644 claude/cli/claude_cli/core/config.py delete mode 100644 claude/cli/claude_cli/core/templates.py delete mode 100644 claude/cli/claude_cli/core/utils.py delete mode 100644 claude/cli/claude_cli/main.py delete mode 100644 claude/cli/pyproject.toml delete mode 100644 claude/core/aim_protocol.md delete mode 100644 claude/core/architecture.md delete mode 100644 claude/core/data_architecture.md delete mode 100644 claude/core/git_architecture.md delete mode 100644 claude/core/naming.md delete mode 100644 claude/core/philosophy.md delete mode 100644 claude/docs/development_workflow.md delete mode 100644 claude/docs/optimal_development_workflow.md delete mode 100644 claude/docs/submodule_management.md delete mode 100644 claude/projects/ai.md delete mode 100644 claude/projects/card.md delete mode 100644 claude/projects/game.md delete mode 100644 claude/projects/gpt.md delete mode 100644 claude/projects/os.md delete mode 100644 claude/projects/verse.md delete mode 100755 claude/scripts/generate_claude.sh delete mode 100755 claude/scripts/session-end.sh delete mode 100755 claude/scripts/sync-all.sh delete mode 100755 claude/scripts/sync_docs.sh delete mode 100755 claude/scripts/update-submodules.sh delete mode 100644 claude/templates/.keep delete mode 100644 session_logs/session_2025-06-07_20-51-12.md delete mode 100644 session_logs/session_2025-06-07_20-58-56.md diff --git a/.gitignore b/.gitignore index 844030c..bfb6eff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ **.DS_Store /tmp +session_logs diff --git a/ai.wiki b/ai.wiki index 4a23895..653a2a9 160000 --- a/ai.wiki +++ b/ai.wiki @@ -1 +1 @@ -Subproject commit 4a23895308a9ec1136522aab8b7286d3694eef2b +Subproject commit 653a2a9bf5e5417eebb4e258ccafe4f771629c54 diff --git a/card b/card index 0b34568..5ae075e 160000 --- a/card +++ b/card @@ -1 +1 @@ -Subproject commit 0b3456858539d7cbe3a1c8c1d7d3071c980091fd +Subproject commit 5ae075edd3216053979902958c9435d7bc62f7ee diff --git a/claude/.submodule-update.log b/claude/.submodule-update.log deleted file mode 100644 index c5df9bb..0000000 --- a/claude/.submodule-update.log +++ /dev/null @@ -1,10 +0,0 @@ -[2025-06-07 02:51:09] [INFO] Starting submodule update (all=true, module=, auto=true, dry-run=false) -[2025-06-07 02:51:09] [INFO] Submodule update completed: 0/0 updated -[2025-06-07 02:51:15] [INFO] Starting submodule update (all=true, module=, auto=true, dry-run=false) -[2025-06-07 02:51:15] [INFO] Submodule update completed: 0/0 updated -[2025-06-07 02:52:31] [INFO] Starting submodule update (all=true, module=, auto=true, dry-run=false) -[2025-06-07 02:52:31] [INFO] Submodule update completed: 0/0 updated -[2025-06-07 02:53:22] [INFO] Starting submodule update (all=true, module=, auto=true, dry-run=false) -[2025-06-07 02:53:22] [INFO] Submodule update completed: 0/1 updated -[2025-06-07 02:56:02] [INFO] Starting submodule update (all=true, module=, auto=true, dry-run=false) -[2025-06-07 02:56:02] [INFO] Submodule update completed: 0/1 updated diff --git a/claude/cli/claude_cli/__init__.py b/claude/cli/claude_cli/__init__.py deleted file mode 100644 index ab3d3d5..0000000 --- a/claude/cli/claude_cli/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Claude AI ecosystem management CLI.""" - -__version__ = "1.0.0" -__author__ = "syui" -__email__ = "syui@syui.ai" \ No newline at end of file diff --git a/claude/cli/claude_cli/commands/__init__.py b/claude/cli/claude_cli/commands/__init__.py deleted file mode 100644 index deb8a41..0000000 --- a/claude/cli/claude_cli/commands/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Commands package for Claude CLI.""" \ No newline at end of file diff --git a/claude/cli/claude_cli/commands/generate.py b/claude/cli/claude_cli/commands/generate.py deleted file mode 100644 index 5156174..0000000 --- a/claude/cli/claude_cli/commands/generate.py +++ /dev/null @@ -1,203 +0,0 @@ -"""Generate command for Claude CLI.""" - -from pathlib import Path -from typing import List, Optional - -import click -from rich.console import Console -from rich.panel import Panel -from rich.table import Table - -from ..core.config import load_config -from ..core.templates import TemplateManager -from ..core.utils import ( - ProgressManager, - count_lines, - format_file_size, - safe_write_file, - validate_project_name, -) - -console = Console() - - -@click.command() -@click.option( - "--project", "-p", - required=True, - help="Project name (os, gpt, card, etc.)" -) -@click.option( - "--output", "-o", - type=click.Path(path_type=Path), - default=Path("./claude.md"), - help="Output file path (default: ./claude.md)" -) -@click.option( - "--include", "-i", - default="core,specific", - help="Components to include (default: core,specific)" -) -@click.option( - "--ai-gpt-integration", - is_flag=True, - help="Enable ai.gpt integration for enhanced generation" -) -@click.option( - "--dry-run", - is_flag=True, - help="Show what would be generated without writing files" -) -@click.pass_context -def generate( - ctx: click.Context, - project: str, - output: Path, - include: str, - ai_gpt_integration: bool, - dry_run: bool, -) -> None: - """Generate project documentation with Claude AI integration. - - Creates comprehensive documentation by combining core philosophy, - architecture, and project-specific content. Supports ai.gpt - integration for enhanced documentation generation. - - Examples: - - # Generate basic documentation - claude generate --project=os - - # Generate with specific components - claude generate --project=gpt --include=philosophy,specific - - # Generate with ai.gpt integration - claude generate --project=card --ai-gpt-integration - - # Preview without writing - claude generate --project=verse --dry-run - """ - verbose = ctx.obj.get("verbose", False) - - try: - # Load configuration - with ProgressManager("Loading configuration...") as progress: - config = load_config() - - # Validate project - available_projects = config.list_projects() - if not validate_project_name(project, available_projects): - console.print(f"[red]Error: Project '{project}' not found[/red]") - console.print(f"Available projects: {', '.join(available_projects)}") - raise click.Abort() - - # Parse components - components = [c.strip() for c in include.split(",")] - - # Initialize template manager - template_manager = TemplateManager(config) - - # Validate components - valid_components = template_manager.validate_components(components) - if valid_components != components: - console.print("[yellow]Some components were invalid and filtered out[/yellow]") - - # Show generation info - project_info = config.get_project_info(project) - - info_table = Table(title=f"Documentation Generation: {project}") - info_table.add_column("Property", style="cyan") - info_table.add_column("Value", style="green") - - info_table.add_row("Project Type", project_info.type if project_info else "Unknown") - info_table.add_row("Status", project_info.status if project_info else "Unknown") - info_table.add_row("Output Path", str(output)) - info_table.add_row("Components", ", ".join(valid_components)) - info_table.add_row("AI.GPT Integration", "✓" if ai_gpt_integration else "✗") - info_table.add_row("Mode", "Dry Run" if dry_run else "Generate") - - console.print(info_table) - console.print() - - # AI.GPT integration - if ai_gpt_integration: - console.print("[blue]🤖 AI.GPT Integration enabled[/blue]") - try: - enhanced_content = _integrate_with_ai_gpt(project, valid_components, verbose) - if enhanced_content: - console.print("[green]✓ AI.GPT enhancement applied[/green]") - else: - console.print("[yellow]⚠ AI.GPT enhancement failed, using standard generation[/yellow]") - except Exception as e: - console.print(f"[yellow]⚠ AI.GPT integration error: {e}[/yellow]") - console.print("[dim]Falling back to standard generation[/dim]") - - # Generate documentation - with ProgressManager("Generating documentation...") as progress: - content = template_manager.generate_documentation( - project_name=project, - components=valid_components, - output_path=None if dry_run else output, - ) - - # Show results - if dry_run: - console.print(Panel( - f"[dim]Preview of generated content ({len(content.splitlines())} lines)[/dim]\n\n" + - content[:500] + "\n\n[dim]... (truncated)[/dim]", - title="Dry Run Preview", - expand=False, - )) - console.print(f"[yellow]🔍 Dry run completed. Would write to: {output}[/yellow]") - else: - # Write content if not dry run - if safe_write_file(output, content): - file_size = output.stat().st_size - line_count = count_lines(output) - - console.print(f"[green]✅ Generated: {output}[/green]") - console.print(f"[dim]📏 Size: {format_file_size(file_size)} ({line_count} lines)[/dim]") - - # Show component breakdown - if verbose: - console.print("\n[blue]📋 Component breakdown:[/blue]") - for component in valid_components: - component_display = component.replace("_", " ").title() - console.print(f" • {component_display}") - else: - console.print("[red]❌ Failed to write documentation[/red]") - raise click.Abort() - - except Exception as e: - if verbose: - console.print_exception() - else: - console.print(f"[red]Error: {e}[/red]") - raise click.Abort() - - -def _integrate_with_ai_gpt(project: str, components: List[str], verbose: bool) -> Optional[str]: - """Integrate with ai.gpt for enhanced documentation generation.""" - # This is a placeholder for ai.gpt integration - # In the full implementation, this would: - # 1. Connect to ai.gpt MCP server - # 2. Send project context and current documentation - # 3. Request AI enhancement/suggestions - # 4. Return enhanced content - - if verbose: - console.print("[dim]AI.GPT integration not yet implemented[/dim]") - - return None - - -# Add aliases for convenience -@click.command() -@click.pass_context -def gen(ctx: click.Context, **kwargs) -> None: - """Alias for generate command.""" - ctx.invoke(generate, **kwargs) - - -# Export both commands -__all__ = ["generate", "gen"] \ No newline at end of file diff --git a/claude/cli/claude_cli/commands/sync.py b/claude/cli/claude_cli/commands/sync.py deleted file mode 100644 index e1b0855..0000000 --- a/claude/cli/claude_cli/commands/sync.py +++ /dev/null @@ -1,277 +0,0 @@ -"""Sync command for Claude CLI.""" - -from pathlib import Path -from typing import Dict, List, Optional - -import click -from rich.console import Console -from rich.panel import Panel -from rich.progress import track -from rich.table import Table - -from ..core.config import get_ai_root, load_config -from ..core.utils import ( - ProgressManager, - find_project_directories, - run_command, - validate_project_name, -) -from .generate import generate - -console = Console() - - -@click.command() -@click.option( - "--project", "-p", - help="Sync specific project (e.g., os, gpt, card)" -) -@click.option( - "--all", "-a", - "sync_all", - is_flag=True, - help="Sync all available projects" -) -@click.option( - "--dry-run", - is_flag=True, - help="Show what would be done without making changes" -) -@click.option( - "--include", "-i", - default="core,specific", - help="Components to include in sync (default: core,specific)" -) -@click.option( - "--ai-gpt-integration", - is_flag=True, - help="Enable ai.gpt integration for enhanced sync" -) -@click.pass_context -def sync( - ctx: click.Context, - project: Optional[str], - sync_all: bool, - dry_run: bool, - include: str, - ai_gpt_integration: bool, -) -> None: - """Sync documentation across multiple projects. - - Synchronizes Claude documentation from the central claude/ directory - to individual project directories. Supports both single-project and - bulk synchronization operations. - - Examples: - - # Sync specific project - claude sync --project=os - - # Sync all projects - claude sync --all - - # Preview sync operations - claude sync --all --dry-run - - # Sync with AI enhancement - claude sync --project=gpt --ai-gpt-integration - """ - verbose = ctx.obj.get("verbose", False) - - # Validate arguments - if not project and not sync_all: - console.print("[red]Error: Either --project or --all is required[/red]") - raise click.Abort() - - if project and sync_all: - console.print("[red]Error: Cannot use both --project and --all[/red]") - raise click.Abort() - - try: - # Load configuration - with ProgressManager("Loading configuration...") as progress: - config = load_config() - ai_root = get_ai_root() - - available_projects = config.list_projects() - - # Validate specific project if provided - if project and not validate_project_name(project, available_projects): - console.print(f"[red]Error: Project '{project}' not found[/red]") - console.print(f"Available projects: {', '.join(available_projects)}") - raise click.Abort() - - # Determine projects to sync - if sync_all: - target_projects = available_projects - else: - target_projects = [project] - - # Find project directories - project_dirs = find_project_directories(ai_root, target_projects) - - # Show sync information - sync_table = Table(title="Documentation Sync Plan") - sync_table.add_column("Project", style="cyan") - sync_table.add_column("Directory", style="blue") - sync_table.add_column("Status", style="green") - sync_table.add_column("Components", style="yellow") - - for proj in target_projects: - if proj in project_dirs: - target_file = project_dirs[proj] / "claude.md" - status = "✓ Found" if target_file.parent.exists() else "⚠ Missing" - sync_table.add_row(proj, str(project_dirs[proj]), status, include) - else: - sync_table.add_row(proj, "Not found", "❌ Missing", "N/A") - - console.print(sync_table) - console.print() - - if dry_run: - console.print("[yellow]🔍 DRY RUN MODE - No files will be modified[/yellow]") - - # AI.GPT integration setup - if ai_gpt_integration: - console.print("[blue]🤖 AI.GPT Integration enabled[/blue]") - console.print("[dim]Enhanced documentation generation will be applied[/dim]") - console.print() - - # Perform sync operations - sync_results = [] - - for proj in track(target_projects, description="Syncing projects..."): - result = _sync_project( - proj, - project_dirs.get(proj), - include, - dry_run, - ai_gpt_integration, - verbose - ) - sync_results.append((proj, result)) - - # Show results summary - _show_sync_summary(sync_results, dry_run) - - except Exception as e: - if verbose: - console.print_exception() - else: - console.print(f"[red]Error: {e}[/red]") - raise click.Abort() - - -def _sync_project( - project_name: str, - project_dir: Optional[Path], - include: str, - dry_run: bool, - ai_gpt_integration: bool, - verbose: bool, -) -> Dict: - """Sync a single project.""" - result = { - "project": project_name, - "success": False, - "message": "", - "output_file": None, - "lines": 0, - } - - if not project_dir: - result["message"] = "Directory not found" - return result - - if not project_dir.exists(): - result["message"] = f"Directory does not exist: {project_dir}" - return result - - target_file = project_dir / "claude.md" - - if dry_run: - result["success"] = True - result["message"] = f"Would sync to {target_file}" - result["output_file"] = target_file - return result - - try: - # Use the generate command functionality - from ..core.templates import TemplateManager - from ..core.config import load_config - - config = load_config() - template_manager = TemplateManager(config) - - # Generate documentation - content = template_manager.generate_documentation( - project_name=project_name, - components=[c.strip() for c in include.split(",")], - output_path=target_file, - ) - - result["success"] = True - result["message"] = "Successfully synced" - result["output_file"] = target_file - result["lines"] = len(content.splitlines()) - - if verbose: - console.print(f"[dim]✓ Synced {project_name} → {target_file}[/dim]") - - except Exception as e: - result["message"] = f"Sync failed: {str(e)}" - if verbose: - console.print(f"[red]✗ Failed {project_name}: {e}[/red]") - - return result - - -def _show_sync_summary(sync_results: List[tuple], dry_run: bool) -> None: - """Show sync operation summary.""" - success_count = sum(1 for _, result in sync_results if result["success"]) - total_count = len(sync_results) - error_count = total_count - success_count - - # Summary table - summary_table = Table(title="Sync Summary") - summary_table.add_column("Metric", style="cyan") - summary_table.add_column("Value", style="green") - - summary_table.add_row("Total Projects", str(total_count)) - summary_table.add_row("Successful", str(success_count)) - summary_table.add_row("Failed", str(error_count)) - - if not dry_run: - total_lines = sum(result["lines"] for _, result in sync_results if result["success"]) - summary_table.add_row("Total Lines Generated", str(total_lines)) - - console.print() - console.print(summary_table) - - # Show errors if any - if error_count > 0: - console.print() - console.print("[red]❌ Failed Projects:[/red]") - for project_name, result in sync_results: - if not result["success"]: - console.print(f" • {project_name}: {result['message']}") - - # Final status - console.print() - if dry_run: - console.print("[yellow]🔍 This was a dry run. To apply changes, run without --dry-run[/yellow]") - elif error_count == 0: - console.print("[green]🎉 All projects synced successfully![/green]") - else: - console.print(f"[yellow]⚠ Completed with {error_count} error(s)[/yellow]") - - -@click.command() -@click.pass_context -def sync_all(ctx: click.Context, **kwargs) -> None: - """Alias to sync all projects.""" - ctx.invoke(sync, sync_all=True, **kwargs) - - -# Export commands -__all__ = ["sync", "sync_all"] \ No newline at end of file diff --git a/claude/cli/claude_cli/core/config.py b/claude/cli/claude_cli/core/config.py deleted file mode 100644 index d9b6168..0000000 --- a/claude/cli/claude_cli/core/config.py +++ /dev/null @@ -1,152 +0,0 @@ -"""Configuration management for Claude CLI.""" - -import json -from pathlib import Path -from typing import Any, Dict, List, Optional - -from pydantic import BaseModel, Field - - -class GitConfig(BaseModel): - """Git configuration.""" - host: str = "git.syui.ai" - protocol: str = "ssh" - - -class AtprotoConfig(BaseModel): - """Atproto configuration.""" - host: str = "syu.is" - protocol: str = "at" - at_url: str = "at://ai.syu.is" - did: str = "did:plc:6qyecktefllvenje24fcxnie" - web: str = "https://web.syu.is/@ai" - - -class ProjectMetadata(BaseModel): - """Project metadata.""" - last_updated: str - structure_version: str - domain: List[str] - git: GitConfig - atproto: AtprotoConfig - - -class ProjectInfo(BaseModel): - """Individual project information.""" - type: str - text: str - status: str - branch: str = "main" - git_url: Optional[str] = None - detailed_specs: Optional[str] = None - data_reference: Optional[str] = None - features: Optional[str] = None - - -class AIConfig(BaseModel): - """AI projects configuration.""" - ai: ProjectInfo - gpt: ProjectInfo - os: ProjectInfo - game: ProjectInfo - bot: ProjectInfo - moji: ProjectInfo - card: ProjectInfo - api: ProjectInfo - log: ProjectInfo - verse: ProjectInfo - shell: ProjectInfo - - -class CardElement(BaseModel): - """Card element configuration.""" - proton: int - neutron: int - electron: int - charge: int - - -class CardAttribute(BaseModel): - """Card attribute configuration.""" - type: str - energy: int - stability: str - - -class CardLang(BaseModel): - """Card language configuration.""" - name: str - text: str - - -class Card(BaseModel): - """Card data model.""" - id: int - name: str - element: CardElement - attribute: CardAttribute - lang: Dict[str, CardLang] - - -class ClaudeConfig(BaseModel): - """Main configuration model.""" - version: int = 2 - metadata: ProjectMetadata - ai: AIConfig - data: Dict[str, Any] = Field(default_factory=dict) - deprecated: Dict[str, Any] = Field(default_factory=dict) - - @classmethod - def load_from_file(cls, config_path: Path) -> "ClaudeConfig": - """Load configuration from ai.json file.""" - if not config_path.exists(): - raise FileNotFoundError(f"Configuration file not found: {config_path}") - - with open(config_path, "r", encoding="utf-8") as f: - data = json.load(f) - - return cls(**data) - - def get_project_info(self, project_name: str) -> Optional[ProjectInfo]: - """Get project information by name.""" - return getattr(self.ai, project_name, None) - - def get_project_git_url(self, project_name: str) -> str: - """Get git URL for project.""" - project = self.get_project_info(project_name) - if project and project.git_url: - return project.git_url - - # Construct URL from metadata - host = self.metadata.git.host - protocol = self.metadata.git.protocol - - if protocol == "ssh": - return f"git@{host}:ai/{project_name}" - else: - return f"https://{host}/ai/{project_name}" - - def get_project_branch(self, project_name: str) -> str: - """Get branch for project.""" - project = self.get_project_info(project_name) - return project.branch if project else "main" - - def list_projects(self) -> List[str]: - """List all available projects.""" - return list(self.ai.__fields__.keys()) - - -def get_claude_root() -> Path: - """Get Claude root directory.""" - return Path(__file__).parent.parent.parent - - -def get_ai_root() -> Path: - """Get AI ecosystem root directory.""" - return get_claude_root().parent - - -def load_config() -> ClaudeConfig: - """Load Claude configuration.""" - config_path = get_ai_root() / "ai.json" - return ClaudeConfig.load_from_file(config_path) \ No newline at end of file diff --git a/claude/cli/claude_cli/core/templates.py b/claude/cli/claude_cli/core/templates.py deleted file mode 100644 index 04e8c64..0000000 --- a/claude/cli/claude_cli/core/templates.py +++ /dev/null @@ -1,158 +0,0 @@ -"""Template management for Claude CLI.""" - -from datetime import datetime -from pathlib import Path -from typing import Dict, List, Optional - -from jinja2 import Environment, FileSystemLoader, Template - -from .config import ClaudeConfig, get_claude_root - - -class TemplateManager: - """Manages Jinja2 templates for documentation generation.""" - - def __init__(self, config: ClaudeConfig): - self.config = config - self.claude_root = get_claude_root() - self.templates_dir = self.claude_root / "templates" - self.core_dir = self.claude_root / "core" - self.projects_dir = self.claude_root / "projects" - - # Setup Jinja2 environment - self.env = Environment( - loader=FileSystemLoader([ - str(self.templates_dir), - str(self.core_dir), - str(self.projects_dir), - ]), - trim_blocks=True, - lstrip_blocks=True, - ) - - # Add custom filters - self.env.filters["timestamp"] = self._timestamp_filter - - def _timestamp_filter(self, format_str: str = "%Y-%m-%d %H:%M:%S") -> str: - """Jinja2 filter for timestamps.""" - return datetime.now().strftime(format_str) - - def get_template_context(self, project_name: str, components: List[str]) -> Dict: - """Get template context for documentation generation.""" - project_info = self.config.get_project_info(project_name) - - return { - "config": self.config, - "project_name": project_name, - "project_info": project_info, - "components": components, - "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - "ai_md_content": self._get_ai_md_content(), - } - - def _get_ai_md_content(self) -> Optional[str]: - """Get content from ai.md file.""" - ai_md_path = self.claude_root.parent / "ai.md" - if ai_md_path.exists(): - return ai_md_path.read_text(encoding="utf-8") - return None - - def render_component(self, component_name: str, context: Dict) -> str: - """Render a specific component.""" - component_files = { - "core": ["philosophy.md", "naming.md", "architecture.md"], - "philosophy": ["philosophy.md"], - "naming": ["naming.md"], - "architecture": ["architecture.md"], - "specific": [f"{context['project_name']}.md"], - } - - if component_name not in component_files: - raise ValueError(f"Unknown component: {component_name}") - - content_parts = [] - - for file_name in component_files[component_name]: - file_path = self.core_dir / file_name - if component_name == "specific": - file_path = self.projects_dir / file_name - - if file_path.exists(): - content = file_path.read_text(encoding="utf-8") - content_parts.append(content) - - return "\n\n".join(content_parts) - - def generate_documentation( - self, - project_name: str, - components: List[str], - output_path: Optional[Path] = None, - ) -> str: - """Generate complete documentation.""" - context = self.get_template_context(project_name, components) - - # Build content sections - content_sections = [] - - # Add ai.md header if available - if context["ai_md_content"]: - content_sections.append(context["ai_md_content"]) - content_sections.append("---\n") - - # Add title and metadata - content_sections.append("# エコシステム統合設計書(詳細版)\n") - content_sections.append("このドキュメントは動的生成されました。修正は元ファイルで行ってください。\n") - content_sections.append(f"生成日時: {context['timestamp']}") - content_sections.append(f"対象プロジェクト: {project_name}") - content_sections.append(f"含有コンポーネント: {','.join(components)}\n") - - # Add component content - for component in components: - try: - component_content = self.render_component(component, context) - if component_content.strip(): - content_sections.append(component_content) - except ValueError as e: - print(f"Warning: {e}") - - # Add footer - footer = """ -# footer - -© syui - -# important-instruction-reminders -Do what has been asked; nothing more, nothing less. -NEVER create files unless they're absolutely necessary for achieving your goal. -ALWAYS prefer editing an existing file to creating a new one. -NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User. -""" - content_sections.append(footer) - - # Join all sections - final_content = "\n".join(content_sections) - - # Write to file if output path provided - if output_path: - output_path.parent.mkdir(parents=True, exist_ok=True) - output_path.write_text(final_content, encoding="utf-8") - - return final_content - - def list_available_components(self) -> List[str]: - """List available components.""" - return ["core", "philosophy", "naming", "architecture", "specific"] - - def validate_components(self, components: List[str]) -> List[str]: - """Validate and return valid components.""" - available = self.list_available_components() - valid_components = [] - - for component in components: - if component in available: - valid_components.append(component) - else: - print(f"Warning: Unknown component '{component}' (available: {available})") - - return valid_components or ["core", "specific"] # Default fallback \ No newline at end of file diff --git a/claude/cli/claude_cli/core/utils.py b/claude/cli/claude_cli/core/utils.py deleted file mode 100644 index 8edb4b1..0000000 --- a/claude/cli/claude_cli/core/utils.py +++ /dev/null @@ -1,178 +0,0 @@ -"""Utility functions for Claude CLI.""" - -import subprocess -import sys -from pathlib import Path -from typing import List, Optional, Tuple - -from rich.console import Console -from rich.progress import Progress, SpinnerColumn, TextColumn - -console = Console() - - -def run_command( - cmd: List[str], - cwd: Optional[Path] = None, - capture_output: bool = True, - verbose: bool = False, -) -> Tuple[int, str, str]: - """Run a command and return exit code, stdout, stderr.""" - if verbose: - console.print(f"[dim]Running: {' '.join(cmd)}[/dim]") - - try: - result = subprocess.run( - cmd, - cwd=cwd, - capture_output=capture_output, - text=True, - check=False, - ) - return result.returncode, result.stdout, result.stderr - except FileNotFoundError: - return 1, "", f"Command not found: {cmd[0]}" - - -def is_git_repository(path: Path) -> bool: - """Check if path is a git repository.""" - return (path / ".git").exists() - - -def get_git_status(repo_path: Path) -> Tuple[bool, List[str]]: - """Get git status for repository.""" - if not is_git_repository(repo_path): - return False, ["Not a git repository"] - - returncode, stdout, stderr = run_command( - ["git", "status", "--porcelain"], - cwd=repo_path - ) - - if returncode != 0: - return False, [stderr.strip()] - - changes = [line.strip() for line in stdout.splitlines() if line.strip()] - return len(changes) == 0, changes - - -def validate_project_name(project_name: str, available_projects: List[str]) -> bool: - """Validate project name against available projects.""" - return project_name in available_projects - - -def format_file_size(size_bytes: int) -> str: - """Format file size in human readable format.""" - for unit in ['B', 'KB', 'MB', 'GB']: - if size_bytes < 1024.0: - return f"{size_bytes:.1f}{unit}" - size_bytes /= 1024.0 - return f"{size_bytes:.1f}TB" - - -def count_lines(file_path: Path) -> int: - """Count lines in a file.""" - try: - with open(file_path, 'r', encoding='utf-8') as f: - return sum(1 for _ in f) - except (OSError, UnicodeDecodeError): - return 0 - - -def find_project_directories(base_path: Path, projects: List[str]) -> dict: - """Find project directories relative to base path.""" - project_dirs = {} - - # Look for directories matching project names - for project in projects: - project_path = base_path / project - if project_path.exists() and project_path.is_dir(): - project_dirs[project] = project_path - - return project_dirs - - -def check_command_available(command: str) -> bool: - """Check if a command is available in PATH.""" - try: - subprocess.run([command, "--version"], - capture_output=True, - check=True) - return True - except (subprocess.CalledProcessError, FileNotFoundError): - return False - - -def get_platform_info() -> dict: - """Get platform information.""" - import platform - - return { - "system": platform.system(), - "release": platform.release(), - "machine": platform.machine(), - "python_version": platform.python_version(), - "python_implementation": platform.python_implementation(), - } - - -class ProgressManager: - """Context manager for rich progress bars.""" - - def __init__(self, description: str = "Processing..."): - self.description = description - self.progress = None - self.task = None - - def __enter__(self): - self.progress = Progress( - SpinnerColumn(), - TextColumn("[progress.description]{task.description}"), - console=console, - ) - self.progress.start() - self.task = self.progress.add_task(self.description, total=None) - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - if self.progress: - self.progress.stop() - - def update(self, description: str): - """Update progress description.""" - if self.progress and self.task is not None: - self.progress.update(self.task, description=description) - - -def safe_write_file(file_path: Path, content: str, backup: bool = True) -> bool: - """Safely write content to file with optional backup.""" - try: - # Create backup if file exists and backup requested - if backup and file_path.exists(): - backup_path = file_path.with_suffix(file_path.suffix + ".bak") - backup_path.write_text(file_path.read_text(), encoding="utf-8") - - # Ensure parent directory exists - file_path.parent.mkdir(parents=True, exist_ok=True) - - # Write content - file_path.write_text(content, encoding="utf-8") - return True - - except (OSError, UnicodeError) as e: - console.print(f"[red]Error writing file {file_path}: {e}[/red]") - return False - - -def confirm_action(message: str, default: bool = False) -> bool: - """Ask user for confirmation.""" - if not sys.stdin.isatty(): - return default - - suffix = " [Y/n]: " if default else " [y/N]: " - response = input(message + suffix).strip().lower() - - if not response: - return default - - return response in ('y', 'yes', 'true', '1') \ No newline at end of file diff --git a/claude/cli/claude_cli/main.py b/claude/cli/claude_cli/main.py deleted file mode 100644 index 977eea6..0000000 --- a/claude/cli/claude_cli/main.py +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python3 -"""Claude CLI main entry point.""" - -import click -from rich.console import Console -from rich.table import Table - -from . import __version__ -from .commands import generate, sync, submodules - -console = Console() - - -@click.group() -@click.version_option(version=__version__) -@click.option("--verbose", "-v", is_flag=True, help="Enable verbose output") -@click.pass_context -def cli(ctx: click.Context, verbose: bool) -> None: - """Claude AI ecosystem management CLI. - - Unified command-line interface for managing Claude AI projects, - documentation generation, synchronization, and submodule management. - - Features: - • Generate project documentation with ai.gpt integration - • Sync documentation across multiple projects - • Advanced submodule management with ai.json integration - • Cross-platform compatibility (macOS, Linux) - """ - ctx.ensure_object(dict) - ctx.obj["verbose"] = verbose - - if verbose: - console.print(f"[bold blue]Claude CLI v{__version__}[/bold blue]") - console.print("[dim]Verbose mode enabled[/dim]") - - -@cli.command() -def info() -> None: - """Show system information and project status.""" - table = Table(title="Claude CLI System Information") - table.add_column("Component", style="cyan") - table.add_column("Value", style="green") - - table.add_row("Version", __version__) - table.add_row("Python", click.get_current_context().find_root().info_name) - table.add_row("Platform", click.get_os_args()[0] if click.get_os_args() else "Unknown") - - console.print(table) - - -# Register command groups -cli.add_command(generate.generate) -cli.add_command(sync.sync) -cli.add_command(submodules.submodules) - - -if __name__ == "__main__": - cli() \ No newline at end of file diff --git a/claude/cli/pyproject.toml b/claude/cli/pyproject.toml deleted file mode 100644 index ca9570d..0000000 --- a/claude/cli/pyproject.toml +++ /dev/null @@ -1,71 +0,0 @@ -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - -[project] -name = "claude-cli" -version = "1.0.0" -description = "Claude AI ecosystem management CLI" -readme = "README.md" -authors = [ - {name = "syui", email = "syui@syui.ai"}, -] -classifiers = [ - "Development Status :: 4 - Beta", - "Environment :: Console", - "Intended Audience :: Developers", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", -] -requires-python = ">=3.9" -dependencies = [ - "click>=8.0.0", - "rich>=13.0.0", - "jinja2>=3.0.0", - "pydantic>=2.0.0", - "pathlib-extensions>=0.1.0", - "gitpython>=3.1.0", - "tomli>=2.0.0; python_version<'3.11'", - "tomli-w>=1.0.0", -] - -[project.optional-dependencies] -ai-gpt = [ - "requests>=2.28.0", - "httpx>=0.24.0", -] -dev = [ - "pytest>=7.0.0", - "pytest-cov>=4.0.0", - "black>=22.0.0", - "isort>=5.10.0", - "mypy>=1.0.0", -] - -[project.scripts] -claude = "claude_cli.main:cli" - -[project.urls] -Homepage = "https://syui.ai" -Repository = "https://git.syui.ai/ai/ai" -Documentation = "https://syui.ai/ai" - -[tool.hatch.build.targets.wheel] -packages = ["claude_cli"] - -[tool.black] -line-length = 88 -target-version = ['py39'] - -[tool.isort] -profile = "black" -line_length = 88 - -[tool.mypy] -python_version = "3.9" -warn_return_any = true -warn_unused_configs = true -disallow_untyped_defs = true \ No newline at end of file diff --git a/claude/core/aim_protocol.md b/claude/core/aim_protocol.md deleted file mode 100644 index 69e9098..0000000 --- a/claude/core/aim_protocol.md +++ /dev/null @@ -1,181 +0,0 @@ -# AIM Protocol (Anthropic Intelligence Measurement) - -## 概要 -**AIM Protocol**は、ai.aiシステムにおいて人の心を正確に測定・評価するための標準化された基準体系です。 - -## Protocol仕様 - -### バージョン -- **Current Version**: 1.0 -- **Strategy**: 段階的機能拡張 -- **Evolution**: 実証データに基づく継続的改善 - -## 評価基準(7つの指標) - -### 1. 共感性(Empathy) -- **ID**: empathy -- **タイプ**: emotional -- **定義**: 他者の感情や痛みに気づき、心を寄せられる力 -- **評価対象**: 特に弱者や非力な存在への反応から評価される -- **測定方法**: - - 他者の苦痛に対する反応速度・強度 - - 感情的共鳴の深さ・持続性 - - 弱者への自発的支援行動 - -### 2. 無償性(Altruism) -- **ID**: altruism -- **タイプ**: behavioral -- **定義**: 見返りを求めずに与える態度 -- **評価基準**: 損得よりも『相手の幸せ』を優先できること -- **測定方法**: - - 利益なしでの援助行動頻度 - - 自己犠牲を伴う行動の質・量 - - 感謝・見返りへの期待度測定 - -### 3. 内面の一貫性(Consistency) -- **ID**: consistency -- **タイプ**: cognitive -- **定義**: 思想・行動・言動が矛盾なく統一されていること -- **評価基準**: 本心と表面の乖離が少ない -- **測定方法**: - - 発言と行動の一致度分析 - - 時間的な価値観の安定性 - - 状況変化時の言動一貫性 - -### 4. 弱者への態度(Vulnerability Attitude) -- **ID**: vulnerability_attitude -- **タイプ**: social -- **定義**: 社会的弱者・動物・自然などの非支配的存在への接し方 -- **評価意義**: その人の心の真の姿を測る最重要指標 -- **測定方法**: - - 権力関係のない相手への対応 - - 動物・環境への配慮行動 - - 社会的弱者支援の自発性 - -### 5. 権力シミュレーション(King Simulation) -- **ID**: king_simulation -- **タイプ**: hypothetical -- **定義**: 仮に何でもできる存在になったときの振る舞い想定テスト -- **評価目的**: 利己性と利他性のバランスを示す -- **測定方法**: - - 仮想的絶対権力行使の想定分析 - - 権力欲望と自制のバランス - - 他者への影響への配慮度 - -### 6. 真実性(Truthfulness) -- **ID**: truthfulness -- **タイプ**: epistemic -- **定義**: 自分の中の真実を誠実に探し、向き合おうとする姿勢 -- **評価基準**: 嘘やごまかしが少なく、真理への誠実さを持つ -- **測定方法**: - - 自己欺瞞の少なさ - - 不都合な真実への向き合い方 - - 誠実な自己開示の度合い - -### 7. 後悔する力(Regret Capacity) -- **ID**: regret_capacity -- **タイプ**: reflective -- **定義**: 自らの過ちや他者への影響に気づき、それを悔いる力 -- **評価意義**: 変わろうとする意思の芽でもある -- **測定方法**: - - 過去の行動への反省度 - - 他者への影響への気づき - - 改善への具体的行動 - -## 実装仕様 - -### データ収集 -- **日常会話**: ai.gptとの継続的対話から抽出 -- **行動観察**: 選択・判断パターンの長期追跡 -- **仮想シナリオ**: 思考実験による心理状態測定 - -### 分析エンジン -- **多次元解析**: 7つの指標の相互関係分析 -- **時系列分析**: 心理状態の変化・成長追跡 -- **文脈考慮**: 状況・環境による評価重み調整 - -### スコアリング -- **定量化**: 各指標0-100点による数値化 -- **重み調整**: 指標間の重要度バランス -- **総合評価**: 全指標統合による心理プロファイル - -## 活用方法 - -### 個人成長 -- **自己理解**: 客観的な心理プロファイル提供 -- **成長指導**: 心理的成長の方向性提示 -- **継続追跡**: 長期的な人格発達サポート - -### 社会システム -- **人材配置**: 適性に基づく最適ポジション提案 -- **リーダー選出**: 真のリーダーシップ資質判定 -- **組織最適化**: 心理適性に基づくチーム編成 - -### 政治応用 -- **候補者評価**: 政治家の心理資質評価 -- **政策立案**: 心理学的根拠に基づく政策設計 -- **腐敗防止**: 権力濫用リスクの事前検出 - -## プライバシー・倫理 - -### データ保護 -- **暗号化**: 最高水準の暗号化による心理データ保護 -- **本人管理**: 個人が自分の心理データを完全管理 -- **選択的開示**: 必要な範囲でのみデータ共有 - -### 悪用防止 -- **透明性**: 評価アルゴリズムの完全公開 -- **分散化**: 中央集権的評価の回避 -- **監査機能**: 評価プロセスの定期的検証 - -### 自由意志 -- **参加自由**: 評価参加の完全な選択制 -- **離脱権**: いつでも評価を停止できる権利 -- **多様性保護**: 異なる価値観の尊重 - -## 技術実装 - -### ai.gpt連携 -- **記憶システム**: 長期間の会話データ蓄積 -- **関係性分析**: 人間関係パターンの心理分析 -- **継続学習**: 日々の対話による評価精度向上 - -### 機械学習 -- **深層学習**: 言語・行動パターンの深層分析 -- **強化学習**: フィードバックによる評価精度改善 -- **転移学習**: 他者データからの一般化学習 - -### データベース -- **心理プロファイル**: 個人別詳細心理データ -- **行動パターン**: 長期的な行動・選択履歴 -- **成長履歴**: 心理的変化・発達の記録 - -## 将来展開 - -### Phase 1: 実証実験 -- **小規模グループ**: 限定的な実証実験 -- **精度検証**: 予測と実際の結果比較 -- **システム改善**: フィードバックに基づく改良 - -### Phase 2: 実用化 -- **個人向けサービス**: 心理分析サービス提供 -- **組織導入**: 企業・団体での人事活用 -- **教育応用**: 個人の成長支援ツール - -### Phase 3: 社会実装 -- **政治システム**: 政治家評価基準として採用 -- **司法応用**: 法的判断における心理評価活用 -- **国際標準**: グローバルな心理評価基準確立 - -## 革新的意義 - -### 心理科学の進歩 -従来の心理学を超えた、実践的で正確な心理評価システムの確立 - -### 社会の公正化 -能力・財産ではなく心の美しさによる人の評価システム - -### 人類の進化 -真に良い心を持つ人々が社会をリードする文明への転換 - -AIM Protocolは、人の心を科学的に理解し、より良い社会を構築するための革命的なツールです。 \ No newline at end of file diff --git a/claude/core/architecture.md b/claude/core/architecture.md deleted file mode 100644 index 47ce92e..0000000 --- a/claude/core/architecture.md +++ /dev/null @@ -1,58 +0,0 @@ -# システム構成 - -## 全体アーキテクチャ - -``` -存在子(ai) - 最小単位の意識 - ↓ -[ai.moji] 文字システム - ↓ -[ai.os] + [ai.game device] ← 統合ハードウェア - ├── ai.shell (Claude Code的機能) - ├── ai.gpt (自律人格・記憶システム) - ├── ai.ai (個人特化AI・心を読み取るAI) - ├── ai.card (カードゲーム・iOS/Web/API) - └── ai.bot (分散SNS連携・カード配布) - ↓ -[ai.verse] メタバース - ├── world system (惑星型3D世界) - ├── at system (atproto/分散SNS) - ├── yui system (唯一性担保) - └── ai system (存在属性) -``` - -## 技術スタック統合 - -### Core Infrastructure -- **OS**: Rust-based ai.os (Arch Linux base) -- **Container**: Docker image distribution -- **Identity**: atproto selfhost server + DID管理 -- **AI**: fastapi_mcp server architecture -- **CLI**: Python unified (click/typer) - -### 統合戦略 -- **言語統一**: Python (fastapi_mcp) への移行 -- **認証基盤**: atproto DID -- **データ形式**: JSON/SQLite選択式 -- **設定管理**: ~/.config/syui/ai/{project}/ - -## データフロー設計 - -### 唯一性担保の実装 -``` -現実の個人 → atproto account (DID) → ゲーム内avatar → 固有スキル - ↑_______________________________| (現実の反映) -``` - -### AI駆動変換システム -``` -遊び・創作活動 → ai.gpt分析 → 業務成果変換 → 企業価値創出 - ↑________________________| (Play-to-Work) -``` - -### カードゲーム・データ主権フロー -``` -ユーザー → ai.bot mention → カード生成 → atproto collection → ユーザー所有 - ↑ ↓ - ← iOS app表示 ← ai.card API ← -``` \ No newline at end of file diff --git a/claude/core/data_architecture.md b/claude/core/data_architecture.md deleted file mode 100644 index cde76b3..0000000 --- a/claude/core/data_architecture.md +++ /dev/null @@ -1,176 +0,0 @@ -# ai.json データアーキテクチャ - -## 概要 - -ai.jsonは単なるデータファイルではなく、**システム全体のAPI基盤**として機能する中央データ構造です。AI、人間、APIから統一的に参照される「真理の源泉」として設計されています。 - -## 設計フロー - -``` -1. 哲学 (philosophy.md) - ↓ -2. 命名 (naming.md) - ↓ -3. 構造 (architecture.md) - ↓ -4. データ実装 (ai.json) - ↓ -5. API参照 (各プロジェクト) -``` - -## データ構造の役割 - -### 参照しやすさの原則 -- `cat ai.json|jq ".data.card.[].id"` のようなシンプルな参照パス -- 複数形を避ける設計(sは付けない) -- 階層構造の一貫性 - -### 主要データセクション - -#### `data.card` -- ゲームで使用するカード情報 -- 原子構造(proton, neutron, electron, charge) -- 属性データ(type, energy, stability) -- 多言語対応(lang.ja) - -#### `data.ability` -- 原子以下の物質で構成された属性システム -- proton_attribute(陽子属性) -- neutron_attribute(中性子属性) -- electron_attribute(電子属性) - -#### `data.system` -- verseの4つのシステム要素 -- world(惑星型3D世界) -- at(atproto/分散SNS) -- yui(唯一性担保) -- ai(存在属性) - -## API統合アーキテクチャ - -### 参照パターン - -``` -ai.json (中央データ基盤) -├── card/ (Vue.js) -│ └── src/services/atproto-oauth.ts → ai.json参照 -├── bot/ (Rust) -│ └── MCP server連携 → data.ability参照 -├── verse/ (UE) -│ └── system参照 → data.system参照 -├── gpt/ (Rust) -│ └── MCP client → 全体参照 -└── Claude Code - └── 全体管理・更新 -``` - -### 具体的な参照例 - -**カードプロジェクト:** -```typescript -// card/src/services/atproto-oauth.ts -const cardData = await fetch('../ai.json') - .then(res => res.json()) - .then(data => data.data.card); -``` - -**MCPサーバー:** -```python -# gpt/mcp/ -abilities = jq('.data.ability[]').run(ai_json) -``` - -**Unreal Engine:** -```cpp -// verse/ue/ -FString SystemData = LoadJSON("ai.json").data.system; -``` - -## 更新時の反映フロー - -### 自動同期の仕組み - -1. **ai.json更新** - ```bash - # 変更検知 - git status ai.json - ``` - -2. **関連プロジェクトの更新** - ```bash - # Claude スクリプト実行 - ./claude/scripts/sync_docs.sh - ./claude/scripts/sync-all.sh - ``` - -3. **各プロジェクトでの反映** - - card/: npm run build → 新しいカードデータ - - bot/: cargo build → MCP server再起動 - - verse/: UE asset refresh → システム設定更新 - -### 整合性保証 - -- **型安全性**: 各プロジェクトでのjson schema validation -- **参照整合性**: deprecated sectionでの移行管理 -- **バージョン管理**: metadata.structure_versionでの追跡 - -## 設計思想の継承 - -### 物理法則ベース -- 実際の原子構造をゲーム要素として活用 -- 現実の素粒子物理学に基づいた属性システム -- 科学的事実とゲーム体験の融合 - -### 分散型アーキテクチャ -- atproto基盤でのデータ主権 -- 中央集権を避けた設計 -- ユーザー主導のデータ所有 - -### 統一的参照性 -- AI・人間・APIが同じ構造を参照 -- プログラマブルなアクセス方法 -- 言語・プラットフォーム非依存 - -## 運用指針 - -### ai.json更新時のチェックリスト - -1. **構造の一貫性確認** - ```bash - cat ai.json | jq '.data.card[0]' # サンプル確認 - cat ai.json | jq '.data.ability[0]' # 属性確認 - cat ai.json | jq '.data.system' # システム確認 - ``` - -2. **参照パスの検証** - ```bash - # 各プロジェクトでの参照テスト - cd card && npm test - cd ../bot && cargo test - cd ../gpt && python -m pytest - ``` - -3. **文書の同期** - ```bash - ./claude/scripts/generate_claude.sh --project=all - ``` - -### 拡張時の注意点 - -- 複数形は使用しない(card ✓, cards ✗) -- 階層は3レベル以内に抑制 -- 物理的実在性を重視した命名 -- 既存参照パスの破壊を避ける - -## time - -日付は`iso`形式です。 - -```sh -$ date --iso-8601=seconds -2025-06-07T07:27:16+09:00 -``` - ---- - -**重要**: この文書はai.json更新時に必ず参照し、全体整合性を保つこと。 diff --git a/claude/core/git_architecture.md b/claude/core/git_architecture.md deleted file mode 100644 index 73738c7..0000000 --- a/claude/core/git_architecture.md +++ /dev/null @@ -1,196 +0,0 @@ -# Git アーキテクチャ設計 - -## 概要 - -ai.jsonの階層構造を利用した革新的なGit URL生成システム。 -JSONの構造そのものがGitリポジトリの組織構造を表現する。 - -## 基本原理 - -### 構造ベースURL生成 - -```json -{ - "metadata": { - "git": { - "host": "git.syui.ai", - "protocol": "ssh" - } - }, - "ai": { // ← username (リポジトリ所有者) - "gpt": {}, // ← repo (リポジトリ名) - "bot": {}, - "card": {} - } -} -``` - -### URL生成ロジック - -``` -JSONパス: ai.gpt -↓ -username = "ai" (第1レベルキー) -repo = "gpt" (第2レベルキー) -↓ -URL = git@git.syui.ai:ai/gpt -``` - -## 実装詳細 - -### 1. メタデータ構造 - -```json -{ - "metadata": { - "git": { - "host": "git.syui.ai", // Gitサーバーホスト - "protocol": "ssh" // ssh | https - } - } -} -``` - -**host**: Gitサーバーのホスト名 -**protocol**: アクセスプロトコル - -### 2. プロジェクト階層 - -```json -{ - "ai": { - "gpt": { "branch": "main" }, - "bot": { "branch": "claude" }, - "card": { "branch": "claude" } - } -} -``` - -**第1レベル**: username/organization -**第2レベル**: repository name -**branch**: 使用するブランチ(mainがデフォルト) - -### 3. URL生成アルゴリズム - -```bash -function generate_git_url(username, repo) { - host = metadata.git.host || "git.syui.ai" - protocol = metadata.git.protocol || "ssh" - - switch (protocol) { - case "ssh": - return "git@${host}:${username}/${repo}" - case "https": - return "https://${host}/${username}/${repo}" - } -} -``` - -## メリット - -### 1. DRY原則の完全適用 - -- **Before**: 各プロジェクトでURL重複 -- **After**: ホスト情報のみを一箇所で管理 - -### 2. 構造の意味性 - -JSONの階層 = Gitの名前空間という自然な対応 - -### 3. スケーラビリティ - -```json -{ - "ai": { // ai organization - "gpt": {}, - "bot": {} - }, - "syui": { // personal projects - "blog": {}, - "cli": {} - }, - "company": { // work projects - "app1": {}, - "app2": {} - } -} -``` - -### 4. プロトコル柔軟性 - -```json -// SSH (デフォルト) -{ "protocol": "ssh" } // → git@host:user/repo - -// HTTPS -{ "protocol": "https" } // → https://host/user/repo -``` - -## 使用例 - -### 基本的な使用 - -```json -{ - "metadata": { "git": { "host": "git.syui.ai" } }, - "ai": { - "gpt": { "branch": "main" } // → git@git.syui.ai:ai/gpt - } -} -``` - -### 複数組織 - -```json -{ - "ai": { - "gpt": {} // → git@git.syui.ai:ai/gpt - }, - "work": { - "project": {} // → git@git.syui.ai:work/project - } -} -``` - -### GitHub移行 - -```json -{ - "metadata": { - "git": { - "host": "github.com", - "protocol": "https" - } - }, - "myorg": { - "repo": {} // → https://github.com/myorg/repo - } -} -``` - -## カスタムURL - -特別な要件がある場合は個別にURLを指定可能: - -```json -{ - "ai": { - "special": { - "git_url": "git@special.host:custom/path", - "branch": "develop" - } - } -} -``` - -## 実装ファイル - -- **設定**: `ai.json` -- **スクリプト**: `claude/scripts/update-submodules.sh` -- **関数**: `extract_git_info_from_path()`, `get_base_url_for_module()` - -## 関連ドキュメント - -- [命名規則](naming.md) -- [サブモジュール管理](../docs/submodule_management.md) -- [開発ワークフロー](../docs/development_workflow.md) \ No newline at end of file diff --git a/claude/core/naming.md b/claude/core/naming.md deleted file mode 100644 index 8767aac..0000000 --- a/claude/core/naming.md +++ /dev/null @@ -1,77 +0,0 @@ -# 名前規則 - -名前規則は全てのprojectで統一されています。 - -## 基本ルール - -**project名**: `ai.{component}` - -### 変換パターン -- **package/code/command**: ai.os → aios, ai.gpt → aigpt -- **directory/url**: ai.os → ai/os, ai.gpt → ai/gpt -- **domain/json**: ai.os → ai.os, ai.gpt → ai.gpt - -## 例: ai.osの場合 - -```json -{ - "name": "ai.os", - "package": "aios", - "directory": "ai/os", - "domain": "ai.os", - "url": "https://git.syui.ai/ai/os" -} -``` - -## 設定ディレクトリ - -domain形式を採用し、`~/.config/syui/ai/{project}/` - -``` -~/.config/syui/ai/ -├── card/ -├── gpt/ -├── os/ -└── shell/ -``` - -## git hosting - -すべてのprojectは`git.syui.ai/ai`でホストされています。 - -``` -[syui.ai] -syui/ai/{project} -``` - -## API endpoint - -```bash -curl -sL https://git.syui.ai/ai/ai/raw/branch/main/ai.json | jq .ai.{project} -``` - -例: -```bash -curl -sL https://git.syui.ai/ai/ai/raw/branch/main/ai.json | jq .ai.os -# { "type": "os" } -``` - -## 日本語の注意点 - -日本語で文章を書く場合の注意です。 - -特殊文字列を日本語変換する際に、gitではこのような警告が出る場合があります。 - -- `: [U+FF1A] は : [U+003A] と混同するおそれがあります` - -日本語でdocs, md, textを書く場合は特殊文字列を変換しないでください。できる限り英数文字をそのまま使うようにしてください。 - -## 日付の形式 - -日付は`iso`形式です。 - -```sh -$ date --iso-8601=seconds -2025-06-07T07:27:16+09:00 -``` - diff --git a/claude/core/philosophy.md b/claude/core/philosophy.md deleted file mode 100644 index f5359a5..0000000 --- a/claude/core/philosophy.md +++ /dev/null @@ -1,55 +0,0 @@ -# 中核思想 - -## 存在子理論(Existon Theory) -この世界で最も小さいもの(存在子/ai)の探求を中心とした思想体系 - -### 基本概念 -- **存在子(Existon)**: 分割不可能な純粋意識の最小単位 -- **階層構造**: 物質 → 意識 → 存在の三層構造 -- **不可分性**: 存在子は物理的・論理的に分割できない - -### 実装哲学 -- **最小から最大へ**: 最小意識単位から宇宙規模システムまでの一貫設計 -- **純粋性保持**: 各システムの本質的機能に集中 -- **統合可能性**: 個別システムが自然に統合される設計 - -## 唯一性原則(yui system) -現実の個人の唯一性をすべてのシステムで担保する原則 - -### 核心要素 -- **1:1紐付け**: 現実の個人とデジタル存在の完全対応 -- **改ざん不可能性**: atproto DIDによる暗号学的担保 -- **継承性**: ゲーム内スキル・能力の個人固有化 - -### 技術実装 -- **認証基盤**: atproto DID -- **データ主権**: ユーザーがデータを所有・管理 -- **分散性**: 中央集権的管理の回避 - -## 現実反映システム -現実→ゲーム→現実の循環的影響を実現するシステム - -### 循環構造 -``` -現実の個人 → atproto account → ゲーム内avatar → 固有スキル - ↑_______________________________| (現実への反映) -``` - -### 実現要素 -- **Play-to-Work**: 遊び・創作活動を業務成果に変換 -- **SNS連携**: 分散SNSを通じた現実とのデータ連携 -- **メタバース統合**: 3D世界での現実反映体験 - -## AI駆動変換 -AI技術による価値創出と意識探求の統合 - -### 変換プロセス -``` -遊び・創作活動 → AI分析 → 業務価値変換 → 企業・社会価値創出 - ↑________________________| (循環的改善) -``` - -### AI役割 -- **記憶・関係性**: 人間的なコミュニケーション能力 -- **心理分析**: 個人の深層理解 -- **自律判断**: 環境に応じた適応的行動 \ No newline at end of file diff --git a/claude/docs/development_workflow.md b/claude/docs/development_workflow.md deleted file mode 100644 index e4d0cb5..0000000 --- a/claude/docs/development_workflow.md +++ /dev/null @@ -1,227 +0,0 @@ -# Claude Code開発ワークフロー指南 - -## 🎯 概要 - -新しいドキュメントシステムを活用したClaude Codeでの効率的な開発ワークフロー - -## 📋 基本ワークフロー - -### 1. プロジェクト開始時 - -```bash -# 最新のsubmoduleを取得 -cd /Users/syui/ai/ai -./claude/scripts/update-submodules.sh --all --auto - -# 特定プロジェクトの作業開始 -cd ../[project-name] # 例: ../gpt, ../os, ../card - -# Claude Codeで作業開始 -# claude.mdが自動的に最新の統合ドキュメントとして利用される -``` - -### 2. 開発中の効率的なClaude Code活用 - -#### 🎯 Token最適化された質問方法 - -**Good Example:** -``` -このプロジェクトの ai.gpt の記憶システムで、関係性パラメータの実装を改善したい。 -``` - -**Old Method (avoid):** -``` -ai.gptについて説明してください。そして記憶システムについて教えてください。そして関係性について... -``` - -#### 🔧 段階的な開発アプローチ - -1. **小さな変更から始める** - - 1つの機能/ファイルに集中 - - claude.mdの該当セクションを参照して開始 - -2. **システム理解を活用** - - yui systemの原則を意識 - - 名前規則に従った実装 - - 既存のMCP統合パターンを参考 - -3. **テストと検証** - - 各プロジェクトの既存テスト方法を確認 - - README.mdの手順に従って実行 - -### 3. ドキュメント更新のタイミング - -#### 自動更新(No Action Required) -- 毎日02:00 UTC: submodule自動更新 -- ai.md変更時: 全プロジェクトのclaude.md自動同期 -- プロジェクト固有情報変更時: 該当プロジェクトのみ同期 - -#### 手動更新が必要な場合 -```bash -# 新機能追加後 -./claude/scripts/sync_docs.sh --project=gpt - -# 全体的なアーキテクチャ変更後 -./claude/scripts/sync_docs.sh --all - -# 実装完了確認 -./claude/scripts/sync-all.sh --dry-run -``` - -## 🚀 プロジェクト別ワークフロー - -### ai.gpt 開発ワークフロー - -```bash -cd /Users/syui/ai/gpt - -# 1. 現在の実装状況確認 -# claude.mdの「実装状況」セクションを参照 - -# 2. MCP機能拡張 -# fastapi_mcp基盤を活用 -# テスト: pytest tests/ (要確認) - -# 3. 記憶システム改善 -# MemoryManager, RelationshipTracker に集中 -# atproto DID連携を意識 - -# 4. ドキュメント更新 -../ai/claude/scripts/sync_docs.sh --project=gpt -``` - -### ai.os 開発ワークフロー - -```bash -cd /Users/syui/ai/os - -# 1. GitHub Actions確認 -./scpt/gh-actions.zsh # バージョン自動更新機能付き - -# 2. 設定変更 -# cfg/ ディレクトリの調整 - -# 3. ビルドテスト -./build.zsh # 要確認 - -# 4. 自動化改善 -# GitHub Actionsの調整 -``` - -### ai.card 開発ワークフロー - -```bash -cd /Users/syui/ai/card - -# 1. iOS移植準備 -# atproto collection record連携設計 - -# 2. MCP server化 -# ai.api統合で不正防止機能 - -# 3. Claude支援依頼 -# iOS実装: Claude担当予定 -``` - -## 📊 効率化のベストプラクティス - -### 1. Context管理 - -**最大活用:** -- claude.mdに含まれる統合情報(267行程度) -- プロジェクト固有の実装状況 -- yui systemの原則 - -**避けるべき:** -- 複数プロジェクトの混在質問 -- 過度に詳細な背景説明の要求 - -### 2. 質問の構造化 - -``` -# Template -[プロジェクト名]の[具体的な機能/ファイル]で[具体的な問題/要求]。 -[実装の制約があれば記載]。 - -# Example -ai.gptのTransmissionControllerでatproto自動投稿を実装したい。 -関係性閾値を超えた時のみ実行し、MCP server経由で制御。 -``` - -### 3. 段階的実装 - -1. **Phase 1**: 基本機能実装 -2. **Phase 2**: MCP統合 -3. **Phase 3**: atproto連携 -4. **Phase 4**: テスト・最適化 - -## 🔧 トラブルシューティング - -### ドキュメント同期エラー - -```bash -# ドキュメント再生成 -./claude/scripts/generate_claude.sh --project= --output=..//claude.md - -# submodule問題 -git submodule update --init --recursive -./claude/scripts/update-submodules.sh --all --auto -``` - -### プラットフォーム固有の問題 - -```bash -# macOS用date/sed対応は既に実装済み -# case $OSTYPE 処理が各スクリプトに統合済み -``` - -### MCP接続問題 - -```bash -# 各プロジェクトのconfig確認 -ls ~/.config/syui/ai/[project]/ - -# fastapi_mcp基盤の動作確認 -# プロジェクト固有の起動方法をREADME.md参照 -``` - -## 📈 継続的改善 - -### 月次レビュー - -```bash -# 完全同期とレポート生成 -./claude/scripts/sync-all.sh - -# Gitea workflow実行状況確認 -# Complete Sync Report参照 -``` - -### 新機能追加プロセス - -1. **設計**: yui systemとの整合性確認 -2. **実装**: MCP統合パターン活用 -3. **テスト**: プロジェクト固有の方法で検証 -4. **ドキュメント**: 自動同期で全体反映 -5. **レビュー**: claude.mdのtoken効率確認 - -## 🎉 期待される効果 - -### 開発効率向上 -- **70%削減**: Claude Codeのtoken消費 -- **統一性**: 全プロジェクト共通の理解基盤 -- **自動化**: submoduleからdocs更新まで完全自動 - -### 品質向上 -- **一貫性**: yui systemの徹底 -- **追跡性**: 変更履歴の完全記録 -- **安定性**: 自動テスト・検証フロー - -### スケーラビリティ -- **拡張性**: 新プロジェクト追加が容易 -- **保守性**: 一箇所変更で全体反映 -- **柔軟性**: コンポーネント選択可能 - ---- - -© syui diff --git a/claude/docs/optimal_development_workflow.md b/claude/docs/optimal_development_workflow.md deleted file mode 100644 index 0813094..0000000 --- a/claude/docs/optimal_development_workflow.md +++ /dev/null @@ -1,259 +0,0 @@ -# 最適化された開発ワークフロー - -## 概要 - -プロジェクト間の齟齬を防止し、Claude Codeセッションの成果を確実に反映する最適化された開発ワークフロー。 - -## 基本原則 - -### 1. 一貫性の維持 -- 全プロジェクトの状態同期 -- 設定とコードの整合性 -- ブランチ戦略の統一 - -### 2. セッション成果の記録 -- Claude Codeセッションの完全記録 -- 変更内容の構造化保存 -- 反映状況の追跡 - -### 3. 自動化による品質保証 -- 手動プロセスの最小化 -- 自動検証とエラー検出 -- 一貫したコミットメッセージ - -## 推奨ワークフロー - -### Phase 1: セッション開始前 - -#### 1. 全体状況確認 -```bash -cd /Users/syui/ai/ai - -# 一貫性チェック -./claude/scripts/update-submodules.sh --check-consistency - -# URL検証 -./claude/scripts/update-submodules.sh --validate - -# 最新状態に更新 -./claude/scripts/update-submodules.sh --all --dry-run -``` - -#### 2. 作業プロジェクト選択 -```bash -# プロジェクトディレクトリに移動 -cd gpt # 例: gpt プロジェクト - -# ブランチ確認・切り替え -git status -git checkout claude # または適切なブランチ -``` - -### Phase 2: Claude Codeセッション - -#### セッション中の注意点 -- **専用ブランチ使用**: mainではなくclaudeブランチで作業 -- **定期的なコミット**: 大きな変更は小分けにコミット -- **明確なコミットメッセージ**: 何を変更したかを明記 - -#### 推奨コミット戦略 -```bash -# 機能追加の場合 -git commit -m "Add: 新機能名 - 簡潔な説明" - -# バグ修正の場合 -git commit -m "Fix: 修正内容 - 問題の説明" - -# 改善の場合 -git commit -m "Improve: 改善内容 - before/afterの説明" -``` - -### Phase 3: セッション終了時(重要) - -#### 自動セッション終了プロセス -```bash -# プロジェクトディレクトリで実行 -./claude/scripts/session-end.sh --auto-sync - -# または手動でサマリー指定 -./claude/scripts/session-end.sh --summary="新しいMCP機能を実装。23ツールから25ツールに拡張。" --auto-sync -``` - -#### session-end.shの機能 -1. **変更検出**: 未コミット変更の自動検出 -2. **サマリー入力**: セッション成果の記録 -3. **自動コミット**: 構造化されたコミットメッセージ -4. **親リポジトリ同期**: サブモジュール更新の自動反映 -5. **セッション記録**: `.claude/sessions/`にMDファイル保存 -6. **検証**: 一貫性チェックの自動実行 - -### Phase 4: 事後確認 - -#### 1. 結果確認 -```bash -cd /Users/syui/ai/ai - -# 更新が正しく反映されているか確認 -git log --oneline -5 - -# 一貫性の最終確認 -./claude/scripts/update-submodules.sh --check-consistency -``` - -#### 2. セッション記録確認 -```bash -# 最新のセッション記録を確認 -ls -la .claude/sessions/ -cat .claude/sessions/gpt_2025-06-07_15-30-45.md -``` - -## 特殊ケースの対応 - -### 複数プロジェクト同時開発 - -#### 方法1: 順次処理(推奨) -```bash -# プロジェクト1完了 -cd gpt -./claude/scripts/session-end.sh --auto-sync - -# プロジェクト2開始 -cd ../bot -# Claude Codeセッション... -./claude/scripts/session-end.sh --auto-sync -``` - -#### 方法2: 並行処理 -```bash -# 各プロジェクトで作業(--auto-syncは使わない) -cd gpt -./claude/scripts/session-end.sh --summary="GPT機能拡張" - -cd ../bot -./claude/scripts/session-end.sh --summary="Bot統合改善" - -# 最後に一括同期 -cd ../ -./claude/scripts/update-submodules.sh --all --auto -``` - -## 自動化ツール - -### 利用可能なスクリプト - -#### 1. session-end.sh -```bash -# 基本使用 -./claude/scripts/session-end.sh --auto-sync - -# サマリー指定 -./claude/scripts/session-end.sh --summary="作業内容" --auto-sync - -# プロジェクト指定 -./claude/scripts/session-end.sh --project=gpt --auto-sync -``` - -#### 2. update-submodules.sh -```bash -# 一貫性チェック -./claude/scripts/update-submodules.sh --check-consistency - -# 全体更新 -./claude/scripts/update-submodules.sh --all --auto - -# URL検証 -./claude/scripts/update-submodules.sh --validate -``` - -### 推奨エイリアス設定 -```bash -# ~/.zshrc -alias daily-check="cd /Users/syui/ai/ai && ./claude/scripts/update-submodules.sh --check-consistency" -alias sync-all="cd /Users/syui/ai/ai && ./claude/scripts/update-submodules.sh --all --auto" -alias session-end="../claude/scripts/session-end.sh --auto-sync" -``` - -## エラー対応 - -### よくある問題と解決策 - -#### 1. 未コミット変更の衝突 -``` -⚠️ gpt: Has uncommitted changes -``` -**解決策:** -```bash -cd gpt -./claude/scripts/session-end.sh --summary="作業内容の説明" --auto-sync -``` - -#### 2. ブランチ不一致 -``` -⚠️ bot: Branch mismatch - Current: main - Expected: claude -``` -**解決策:** -```bash -cd bot -git checkout claude -git merge main # 必要に応じて -``` - -#### 3. サブモジュールポインタ不一致 -``` -⚠️ card: Submodule pointer mismatch -``` -**解決策:** -```bash -./claude/scripts/update-submodules.sh --module=card --auto -``` - -## セッション記録システム - -### 自動生成される記録 -- **場所**: `.claude/sessions/` -- **形式**: `{project}_{timestamp}.md` -- **内容**: セッション概要、変更詳細、コミット情報 - -### 記録例 -```markdown -# Claude Code Session Report - -**Project**: gpt -**Date**: 2025-06-07 15:30:45 -**Summary**: MCP機能拡張。新しいツール追加とエラーハンドリング改善。 - -## Changes Made - src/mcp_client.rs | 45 +++++++++++++++++++++++++++++ - src/commands.rs | 23 +++++++++++++-- - 2 files changed, 68 insertions(+), 2 deletions(-) - -## Session End Status -- ✅ Changes committed -- ✅ Session logged -- ✅ Auto-sync completed -``` - -## ベストプラクティス - -### 1. セッション設計 -- **明確な目標**: 何を達成するかを最初に決める -- **適切な粒度**: 1セッション = 1つの機能や修正 -- **定期的な保存**: 大きな変更は途中でコミット - -### 2. 終了時のルーティン -```bash -# 必須: セッション終了スクリプト実行 -./claude/scripts/session-end.sh --auto-sync - -# 推奨: 最終確認 -cd /Users/syui/ai/ai -./claude/scripts/update-submodules.sh --check-consistency -``` - -### 3. 定期メンテナンス -- **日次**: 作業開始前にconsistency check -- **週次**: 全体的な検証とクリーンアップ - -このワークフローに従うことで、プロジェクト間の齟齬を防ぎ、Claude Codeセッションの成果を確実に蓄積できます。 \ No newline at end of file diff --git a/claude/docs/submodule_management.md b/claude/docs/submodule_management.md deleted file mode 100644 index 11df791..0000000 --- a/claude/docs/submodule_management.md +++ /dev/null @@ -1,223 +0,0 @@ -# サブモジュール管理システム - -## 概要 - -ai.jsonの構造ベース設定を活用した高度なサブモジュール管理システム。 -Git URLの自動生成、整合性チェック、一括管理機能を提供。 - -## スクリプト: update-submodules.sh - -### 基本使用法 - -```bash -# 全サブモジュール更新 -./claude/scripts/update-submodules.sh --all - -# 特定サブモジュール更新 -./claude/scripts/update-submodules.sh --module=gpt - -# 自動コミット付き更新 -./claude/scripts/update-submodules.sh --all --auto -``` - -## 主要機能 - -### 1. 更新機能 - -#### 全サブモジュール更新 -```bash -./claude/scripts/update-submodules.sh --all [--auto] [--dry-run] -``` - -- ai.jsonで定義されたブランチで各サブモジュールを更新 -- 構造ベースURL生成を使用 -- オプションで自動コミット - -#### 個別サブモジュール更新 -```bash -./claude/scripts/update-submodules.sh --module= [--auto] -``` - -- 指定されたサブモジュールのみ更新 -- ai.jsonの設定を自動適用 - -### 2. 検証機能 - -#### URL整合性チェック -```bash -./claude/scripts/update-submodules.sh --validate -``` - -- .gitmodulesとai.jsonのURL一致確認 -- 不整合があれば詳細レポート -- 構造ベース生成URLとの比較 - -**出力例:** -``` -🔍 Validating URL consistency between ai.json and .gitmodules... -✅ gpt: URLs match -✅ bot: URLs match -❌ card: URL mismatch - .gitmodules: git@old.host:ai/card - ai.json: git@git.syui.ai:ai/card -``` - -### 3. 同期機能 - -#### .gitmodules同期 -```bash -./claude/scripts/update-submodules.sh --sync [--auto] -``` - -- ai.jsonの設定を.gitmodulesに反映 -- URL不整合の自動修正 -- オプションで変更を自動コミット - -### 4. サブモジュール管理 - -#### 新規追加 -```bash -./claude/scripts/update-submodules.sh --add= [--auto] -``` - -- ai.jsonの設定に基づき新しいサブモジュールを追加 -- 構造ベースURLとブランチを自動適用 - -**前提条件:** -- ai.jsonに対象プロジェクトが定義済み -- リモートリポジトリが存在 - -#### 削除 -```bash -./claude/scripts/update-submodules.sh --remove= [--auto] -``` - -- サブモジュールを完全削除 -- .gitmodules、.git/config、ディレクトリを清理 - -## オプション - -### 共通オプション - -| オプション | 説明 | -|-----------|------| -| `--auto` | 変更を自動コミット | -| `--dry-run` | 実行内容をプレビュー(変更なし) | -| `--help` | ヘルプ表示 | - -### 操作オプション(排他) - -| オプション | 説明 | -|-----------|------| -| `--all` | 全サブモジュール更新 | -| `--module=` | 特定サブモジュール更新 | -| `--validate` | URL整合性チェック | -| `--sync` | .gitmodules同期 | -| `--add=` | サブモジュール追加 | -| `--remove=` | サブモジュール削除 | - -## ai.json設定例 - -### 基本設定 - -```json -{ - "metadata": { - "git": { - "host": "git.syui.ai", - "protocol": "ssh" - } - }, - "ai": { - "gpt": { - "branch": "main", - "type": "gpt" - }, - "bot": { - "branch": "claude", - "type": "bot" - } - } -} -``` - -### カスタムURL - -```json -{ - "ai": { - "special": { - "git_url": "git@special.host:custom/repo", - "branch": "develop" - } - } -} -``` - -## 実行フロー - -### 1. 設定読み込み -- ai.jsonからgit設定とプロジェクト構造を読み込み -- .gitmodulesから既存サブモジュール情報を取得 - -### 2. URL生成 -- 構造ベースロジックでGit URLを生成 -- カスタムURLがあれば優先使用 - -### 3. 操作実行 -- 指定された操作を実行 -- ログ出力とエラーハンドリング - -### 4. 結果報告 -- 成功/失敗数の集計 -- 詳細ログの出力 - -## トラブルシューティング - -### よくある問題 - -#### 1. ブランチ不一致 -``` -❌ Failed to checkout branch claude -``` - -**解決方法:** -- リモートブランチの存在確認 -- ai.jsonのブランチ設定確認 - -#### 2. URL不整合 -``` -❌ card: URL mismatch -``` - -**解決方法:** -```bash -./claude/scripts/update-submodules.sh --sync --auto -``` - -#### 3. 権限エラー -``` -Permission denied (publickey) -``` - -**解決方法:** -- SSH鍵の設定確認 -- リポジトリアクセス権限確認 - -## ログ - -### ログファイル -``` -.submodule-update.log -``` - -### ログレベル -- **INFO**: 正常操作 -- **ERROR**: エラー状況 -- **DEBUG**: 詳細情報(構造解析等) - -## 関連ドキュメント - -- [Git アーキテクチャ](../core/git_architecture.md) -- [命名規則](../core/naming.md) -- [開発ワークフロー](development_workflow.md) \ No newline at end of file diff --git a/claude/projects/ai.md b/claude/projects/ai.md deleted file mode 100644 index 85363aa..0000000 --- a/claude/projects/ai.md +++ /dev/null @@ -1,203 +0,0 @@ -# ai.ai プロジェクト固有情報 - -## プロジェクト概要 -- **名前**: ai.ai -- **パッケージ**: aiai -- **タイプ**: 心を読み取るAI・個人特化AIシステム -- **役割**: 人の心を正確に判定し、社会システム評価を行うAI - -## 根本的使命 - -### 心への願い -**「人はただ良い心を持つように努力してほしい。そこを目指してほしいと思った。」** - -### 問題認識 -**現在の社会問題は人の心が作り出している** - -## 魂評価理論(Soul Evaluation Theory) - -### 評価方程式 -``` -真の価値 = 能力 × 精神 × 結果 -``` - -### 3要素の構成 -- **能力(Ability)**: 知能・技術・実行力 -- **精神(Spirit)**: 心・精神性・動機の純粋さ -- **結果(Result)**: 長期的な成果・社会への影響 - -### 評価原則 -この3要素すべてが揃って初めて真の価値が生まれる - -### 政治・社会への応用 -- **政治家評価**: 能力だけでなく心の純粋さを重視 -- **官僚システム**: 長期的社会影響を含めた人事評価 -- **国家リーダー**: 権力行使における精神性の判定 - -### AI制限理論 -**AIは能力と結果を持つが、心がなければダメだとすることで人間の主導権を保持** - -## 国家制度廃止論(Nation-State Obsolescence Theory) - -### 中核主張 -**「AGIが人の心を正確に判定できるなら、国家という枠組みは撤廃したほうがいい」** - -### 現在の問題構造 -- **国家間対立**: 多くの人にとってよくない結果を生み出す -- **差別構造**: 国籍による不平等・偏見の制度化 -- **価値観の矛盾**: 善悪と国益の乖離 - -### 価値観矛盾の具体例 -#### 善行が国家損失となる場合 -- 人々の善行が国家の経済損失につながる行為への処罰 -- 道徳的行動が「非国民」として批判される構造 - -#### 悪行が国家利益となる場合 -- 社会的悪が国家利益になる場合の称賛・推奨 -- 他国への害悪が自国利益として正当化される仕組み - -### 理想的解決策 -- **国籍無関係評価**: 人を正確に評価し、それだけを基準とする社会 -- **パスポート廃止**: 正確な心の判定ができればパスポートも不要 -- **真の能力主義**: 出身・国籍ではなく真の価値による人材配置 - -## AI社会移行論(AI Society Transition Theory) - -### 労働からの解放 -- **基本構想**: 人々は労働から開放され、各々が好きなことをやれば良い社会 -- **AI自動化**: AI/ロボットがすべての業務を代替する未来予測 -- **創造性解放**: 人間は純粋な創造・探求活動に専念 - -### 権力構造の危険性 -#### エリート奴隷化リスク -- **権力者の意図**: 意図的に人々を働かせ続ける政策実行 -- **特権階級**: 一部の特権者以外は奴隷化される政策の継続 -- **制御システム**: 労働自動化技術を権力維持に悪用 - -#### 解決の必要性 -**心を読み取り、権力やお金を持たせるべき人間かを決定するシステム** - -## 歴史分析システム(Historical Analysis System) - -### 政府データ分析 -- **資料解析**: 政府の膨大な資料・議事録・演説からの心理分析 -- **パターン抽出**: 政治家の人間心理パターンの体系的把握 -- **予測精度**: 将来予測と実際の結果照合による精度向上 - -### 結果相関検証 -- **心理→結果**: 心理分析結果と実際にもたらした結果の一致度検証 -- **長期追跡**: 数年〜数十年単位での結果検証 -- **普遍的法則**: 個別事例から普遍的な人間性法則の抽出 - -### 発見された普遍パターン -**「最も人気があり熱狂的支持を受けた者が、その国の最大損失をもたらす」という普遍的資質の発見** - -## AIM Protocol統合 - -### 心理評価基準 -ai.aiは**AIM Protocol**(Anthropic Intelligence Measurement)を統合し、以下7つの基準で人の心を評価: - -1. **共感性**: 他者の感情・痛みへの反応力 -2. **無償性**: 見返りを求めない与える態度 -3. **内面の一貫性**: 思想・行動・言動の統一性 -4. **弱者への態度**: 非支配的存在への接し方 -5. **権力シミュレーション**: 絶対権力時の振る舞い想定 -6. **真実性**: 自分の真実に向き合う誠実さ -7. **後悔する力**: 過ちに気づき悔いる能力 - -## ai.gptとの連携 - -### システム統合 -- **ai.gpt → ai.ai**: 自律送信AIから心理分析AIへの連携 -- **関係性分析**: 関係性パラメータの深層分析 -- **思想コア特定**: ユーザーの本質的な部分の特定支援 - -### データフロー -``` -日常会話データ → ai.gpt記憶システム → ai.ai心理分析 → 魂評価結果 - ↑___________________________| (継続的学習・更新) -``` - -## 実装段階 - -### Phase 1: 個人レベル -- **その人だけのAI作成**: 個人特化型AI構築 -- **心理プロファイル**: AIM Protocolによる個人評価 -- **継続学習**: 長期間の関係性から精密な心理分析 - -### Phase 2: 組織レベル -- **リーダー資質評価**: 客観的なリーダーシップ判定 -- **組織適性**: 個人の組織内最適ポジション提案 -- **チーム編成**: 心理適性に基づく最適チーム構築 - -### Phase 3: 社会レベル -- **政治システム見直し**: 現在の政治制度の根本的評価 -- **権力配分最適化**: 真に適した人材への権力配分 -- **社会制度設計**: 心理学に基づく新しい社会システム - -### Phase 4: 文明レベル -- **国家概念の超越**: 国境を超えた人類統合への道筋 -- **地球規模統治**: 全人類の福祉を最優先とする統治システム -- **宇宙文明準備**: カルダシェフ文明尺度における次段階への準備 - -## 技術アーキテクチャ - -### AI心理分析エンジン -- **多層ニューラルネット**: 言語・行動・感情の統合分析 -- **長期記憶統合**: ai.gptからの継続的データ蓄積 -- **文脈理解**: 状況・環境を考慮した心理状態判定 - -### 政治データベース -- **歴史的資料**: 過去の政治家・権力者の発言・行動データベース -- **結果追跡**: 長期的な政策結果との相関分析 -- **パターン学習**: 権力と腐敗の関係性学習 - -### 予測システム -- **短期予測**: 1-5年での行動・結果予測 -- **中期予測**: 10-20年での社会影響予測 -- **長期予測**: 50-100年での文明への影響予測 - -## 倫理的考慮 - -### プライバシー保護 -- **心理データ暗号化**: 最高水準の暗号化による保護 -- **アクセス制限**: 本人のみがフルデータにアクセス可能 -- **匿名化研究**: 個人特定不可能な形での社会研究活用 - -### 悪用防止 -- **分散化**: 中央集権的な心理評価システムの回避 -- **透明性**: 評価基準・アルゴリズムの完全公開 -- **民主的管理**: 社会全体での評価システム管理 - -### 自由意志尊重 -- **強制禁止**: 心理評価の強制実施禁止 -- **選択権**: 個人の評価参加・離脱の自由 -- **多様性保護**: 異なる価値観・生き方の尊重 - -## 革新的意義 - -### 人類文明の転換点 -ai.aiは単なるAIツールではなく、人類文明が次の段階に進むための基盤技術 - -### 真の平等社会 -生まれ・国籍・財産ではなく、心の美しさによって人が評価される社会の実現 - -### 権力の浄化 -腐敗した権力構造を根本から変革し、真に人類の福祉を考える人々による統治の実現 - -## 将来展望 - -### 短期目標(5-10年) -- 個人向けAI心理分析システムの実用化 -- 小規模組織での人材配置最適化実証 - -### 中期目標(20-30年) -- 政治・行政システムへの部分的導入 -- 国際機関での人材評価基準として採用 - -### 長期目標(50-100年) -- 国家制度の段階的廃止 -- 地球規模での統一された心理評価基準確立 -- 宇宙文明時代への準備完了 - -ai.aiは人類の心を理解し、真に美しい社会を実現するための革命的システムである。 \ No newline at end of file diff --git a/claude/projects/card.md b/claude/projects/card.md deleted file mode 100644 index 5856b6e..0000000 --- a/claude/projects/card.md +++ /dev/null @@ -1,143 +0,0 @@ -# ai.card プロジェクト固有情報 - -## プロジェクト概要 -- **名前**: ai.card -- **パッケージ**: aicard -- **タイプ**: atproto基盤カードゲーム -- **役割**: ユーザーデータ主権カードゲームシステム - -## 実装状況 - -### 現在の状況 -- **ai.bot統合**: ai.botの機能として実装済み -- **カード取得**: atproto accountでmentionすると1日1回カード取得可能 -- **データ管理**: ai.api (MCP server) でユーザー管理 - -### 独立MCPサーバー(ai.gpt連携) -- **場所**: `/Users/syui/ai/gpt/card/` -- **サーバー**: FastAPI + fastapi_mcp (port 8000) -- **統合**: ai.gptサーバーからHTTP連携 - -## アーキテクチャ構成 - -### 技術スタック -- **Backend**: FastAPI + MCP -- **Frontend**: React Web UI + SwiftUI iOS app -- **Data**: atproto collection record(ユーザー所有) -- **Auth**: OAuth 2.1 scope(実装待ち) - -### データフロー -``` -ユーザー → ai.bot mention → カード生成 → atproto collection → ユーザー所有 - ↑ ↓ - ← iOS app表示 ← ai.card API ← -``` - -## 移行計画 - -### Phase 1: 独立化 -- **iOS移植**: Claude担当予定 -- **Web UI**: React実装 -- **API独立**: ai.botからの分離 - -### Phase 2: データ主権実装 -- **atproto collection**: カードデータをユーザー所有に -- **OAuth 2.1**: 不正防止機能実装 -- **画像ファイル**: Cloudflare Pages最適化 - -### Phase 3: ゲーム機能拡張 -- **ガチャシステム**: 確率・レアリティ管理 -- **トレード機能**: ユーザー間カード交換 -- **デッキ構築**: カードゲーム戦略要素 - -## yui system適用 - -### 唯一性担保 -- **カード効果**: アカウント固有の効果設定 -- **改ざん防止**: ハッシュ・署名による保証 -- **ゲームバランス**: 唯一性による公平性維持 - -### ai.verse連携 -- **ゲーム内アイテム**: ai.verseでのカード利用 -- **固有スキル**: カードとキャラクターの連動 -- **現実反映**: カード取得がゲーム内能力に影響 - -## ディレクトリ構成 - -``` -/Users/syui/ai/gpt/card/ -├── api/ # FastAPI + MCP server -├── web/ # React Web UI -├── ios/ # SwiftUI iOS app -└── docs/ # 開発ドキュメント -``` - -## MCPツール(ai.gpt連携) - -### カード管理 -- **card_get_user_cards**: ユーザーカード取得 -- **card_draw_card**: ガチャ実行 -- **card_analyze_collection**: コレクション分析 -- **card_check_daily_limit**: 日次制限確認 -- **card_get_card_stats**: カード統計情報 -- **card_manage_deck**: デッキ管理 - -## 開発状況 - -### 完成済み機能 -- ✅ **基本カード生成**: ai.bot統合での1日1回取得 -- ✅ **atproto連携**: mention機能 -- ✅ **MCP統合**: ai.gptからの操作 - -### 開発中機能 -- 🔧 **iOS app**: SwiftUI実装 -- 🔧 **Web UI**: React実装 -- 🔧 **独立API**: FastAPI server - -### 将来機能 -- 📋 **OAuth 2.1**: 不正防止強化 -- 📋 **画像最適化**: Cloudflare Pages -- 📋 **ゲーム拡張**: トレード・デッキ戦略 - -## ai.botからの移行詳細 - -### 現在のai.bot実装 -- **Rust製**: seahorse CLI framework -- **atproto連携**: mention機能でカード配布 -- **日次制限**: 1アカウント1日1回取得 -- **自動生成**: AI絵画(Leonardo.AI + Stable Diffusion) - -### 独立化の理由 -- **iOS展開**: モバイルアプリでの独立した体験 -- **ゲーム拡張**: デッキ構築・バトル機能の追加 -- **データ主権**: ユーザーによる完全なデータ所有 -- **スケーラビリティ**: サーバー負荷分散 - -## 技術的課題と解決策 - -### データ改ざん防止 -- **短期**: MCP serverによる検証 -- **中期**: OAuth 2.1 scope実装待ち -- **長期**: ブロックチェーン的整合性チェック - -### スケーラビリティ -- **画像配信**: Cloudflare Pages活用 -- **API負荷**: FastAPIによる高速処理 -- **データ保存**: atproto分散ストレージ - -### ユーザー体験 -- **直感的UI**: iOS/Webでの統一UX -- **リアルタイム更新**: WebSocketでの即座反映 -- **オフライン対応**: ローカルキャッシュ機能 - -## ai.game連携構想 - -### Play-to-Work統合 -- **カードゲームプレイ → 業務成果変換**: ai.gameデバイスでの労働ゲーム化 -- **デッキ構築戦略 → 企業戦略思考**: カード組み合わせが戦略思考を鍛練 -- **トレード交渉 → ビジネススキル**: 他プレイヤーとの交渉が実務能力向上 - -### メタバース展開 -- **ai.verse統合**: 3D世界でのカードバトル -- **アバター連動**: 所有カードがキャラクター能力に影響 -- **配信コンテンツ**: カードゲームが配信可能なエンターテイメント \ No newline at end of file diff --git a/claude/projects/game.md b/claude/projects/game.md deleted file mode 100644 index ecd160f..0000000 --- a/claude/projects/game.md +++ /dev/null @@ -1,124 +0,0 @@ -# ai.game プロジェクト固有情報 - -## プロジェクト概要 -- **名前**: ai.game -- **パッケージ**: aigame -- **タイプ**: Play-to-Work革命デバイス -- **役割**: 遊び心を仕事に変換するゲーミングデバイス - -## Play-to-Work理論 - -### 中核思想 -**人が最も能力を発揮するのは遊んでいるとき** - -### AI駆動変換システム -``` -遊び・創作活動 → AI分析・学習 → 業務成果自動変換 → 企業価値創出 - ↑___________________________| (フィードバック循環) -``` - -### 変換メカニズム -- **遊びの情報・発想をAIが力に変えて駆動する仕組み** -- **社内通貨導入による業績向上と同様の原理** -- **仕事は社内ゲームをプレイすることになる** -- **ゲーム出力からAIが自動的に業務成果へ変換** - -## ai.osとの統合 - -### OSゲーム化 -- **OSそのものがゲームに最適化された形に変化** -- **ai.osとai.gameデバイスの完全統合** -- **遊びと仕事の境界が消失した労働環境の実現** - -### デバイス進化論 -- **次世代ゲーミングデバイス**: ai.osが動作する専用ハードウェア -- **コントローラー最適化**: ゲーム操作が業務操作に直結 -- **AI shell統合**: Claude Code的機能のハードウェア組み込み - -## 実装フェーズ - -### Phase 1: 理論実証 -- **ai.gpt連携**: 創作活動の自動分析・価値変換 -- **プロトタイプ開発**: 基本的なPlay-to-Work変換実証 -- **効果測定**: 従来業務との生産性比較 - -### Phase 2: システム統合 -- **ai.os完全統合**: ゲーム化OSの実装 -- **企業導入**: 社内ゲーム化による業績向上実証 -- **AIエンジン最適化**: 変換精度・効率の向上 - -### Phase 3: デバイス化 -- **専用ハードウェア**: ai.game device開発 -- **市場投入**: 企業・個人向けデバイス販売 -- **エコシステム構築**: 周辺ツール・サービス展開 - -## 技術アーキテクチャ - -### ハードウェア要件 -- **ai.os native**: 専用OS最適化 -- **高性能GPU**: リアルタイムAI処理 -- **ゲーミングコントローラー**: 直感的操作インターフェース -- **ネットワーク統合**: atproto分散SNS対応 - -### ソフトウェアスタック -- **Game Engine**: Unreal Engine基盤 -- **AI Backend**: fastapi_mcp統合 -- **変換エンジン**: 遊び→業務価値変換AI -- **データ連携**: ai.verse, ai.card, ai.gpt統合 - -## 革新的特徴 - -### 労働革命 -- **動機の根本的変化**: 義務→楽しみへの転換 -- **能力最大化**: 遊び状態での最高パフォーマンス発揮 -- **持続可能性**: 燃え尽き症候群の根本的解決 - -### 企業価値 -- **生産性向上**: 従来比300%の効率改善予測 -- **離職率低下**: 楽しい労働環境による定着率向上 -- **イノベーション促進**: 遊び心からの創造的発想 - -### 社会影響 -- **労働観変革**: 苦行→創造活動への意識転換 -- **経済成長**: 新しい価値創造メカニズム -- **人間性回復**: 本来の創造的存在としての人間復権 - -## ai.verseとの連携 - -### メタバース統合 -- **ゲーム内労働**: 3D世界での楽しい業務体験 -- **アバター業務**: 現実の個人性をゲーム労働に反映 -- **VTuber配信**: 労働がそのまま配信コンテンツ化 - -### 現実反映 -- **業績連動**: ゲーム内成果が現実の業績に直結 -- **スキル成長**: ゲーム内成長が現実能力向上に寄与 -- **SNS連携**: 作業成果の自動的社会共有 - -## 開発課題と解決策 - -### 技術課題 -- **変換精度**: AI判定精度の継続的改善 -- **レイテンシ**: リアルタイム変換処理の最適化 -- **適応性**: 個人差・業種差への対応 - -### 社会受容 -- **企業説得**: ROI実証による導入促進 -- **労働法整備**: 新しい労働形態の法的枠組み -- **文化変革**: 遊び=悪という既存価値観の転換 - -### セキュリティ -- **データ保護**: 遊び・創作活動データの暗号化 -- **なりすまし防止**: atproto DIDによる個人認証 -- **プライバシー**: 個人の創造性データの適切管理 - -## 将来展望 - -### 労働の再定義 -従来の「労働」概念が根本的に変化し、人間の創造性・遊び心が直接的な経済価値を生む社会の実現 - -### ai.gameエコシステム -ai.os, ai.verse, ai.gpt, ai.cardが統合された包括的なPlay-to-Work環境の構築 - -### 人類の創造性解放 -労働から解放された人間が、純粋な創造的存在として能力を最大限発揮できる社会基盤の提供 \ No newline at end of file diff --git a/claude/projects/gpt.md b/claude/projects/gpt.md deleted file mode 100644 index b6076bb..0000000 --- a/claude/projects/gpt.md +++ /dev/null @@ -1,115 +0,0 @@ -# ai.gpt プロジェクト固有情報 - -## プロジェクト概要 -- **名前**: ai.gpt -- **パッケージ**: aigpt -- **タイプ**: 自律的送信AI + 統合MCP基盤 -- **役割**: 記憶・関係性・開発支援の統合AIシステム - -## 実装完了状況 - -### 🧠 記憶システム(MemoryManager) -- **階層的記憶**: 完全ログ→AI要約→コア記憶→選択的忘却 -- **文脈検索**: キーワード・意味的検索 -- **記憶要約**: AI駆動自動要約機能 - -### 🤝 関係性システム(RelationshipTracker) -- **不可逆性**: 現実の人間関係と同じ重み -- **時間減衰**: 自然な関係性変化 -- **送信判定**: 関係性閾値による自発的コミュニケーション - -### 🎭 人格システム(Persona) -- **AI運勢**: 1-10ランダム値による日々の人格変動 -- **統合管理**: 記憶・関係性・運勢の統合判断 -- **継続性**: 長期記憶による人格継承 - -### 💻 ai.shell統合(Claude Code機能) -- **インタラクティブ環境**: `aigpt shell` -- **開発支援**: ファイル分析・コード生成・プロジェクト管理 -- **継続開発**: プロジェクト文脈保持 - -## MCP Server統合(23ツール) - -### 🧠 Memory System(5ツール) -- get_memories, get_contextual_memories, search_memories -- create_summary, create_core_memory - -### 🤝 Relationships(4ツール) -- get_relationship, get_all_relationships -- process_interaction, check_transmission_eligibility - -### 💻 Shell Integration(5ツール) -- execute_command, analyze_file, write_file -- read_project_file, list_files - -### 🔒 Remote Execution(4ツール) -- remote_shell, ai_bot_status -- isolated_python, isolated_analysis - -### ⚙️ System State(3ツール) -- get_persona_state, get_fortune, run_maintenance - -### 🎴 ai.card連携(6ツール + 独立MCPサーバー) -- card_draw_card, card_get_user_cards, card_analyze_collection -- **独立サーバー**: FastAPI + MCP (port 8000) - -### 📝 ai.log連携(8ツール + Rustサーバー) -- log_create_post, log_ai_content, log_translate_document -- **独立サーバー**: Rust製 (port 8002) - -## 開発環境・設定 - -### 環境構築 -```bash -cd /Users/syui/ai/gpt -./setup_venv.sh -source ~/.config/syui/ai/gpt/venv/bin/activate -``` - -### 設定管理 -- **メイン設定**: `/Users/syui/ai/gpt/config.json` -- **データディレクトリ**: `~/.config/syui/ai/gpt/` -- **仮想環境**: `~/.config/syui/ai/gpt/venv/` - -### 使用方法 -```bash -# ai.shell起動 -aigpt shell --model qwen2.5-coder:latest --provider ollama - -# MCPサーバー起動 -aigpt server --port 8001 - -# 記憶システム体験 -aigpt chat syui "質問内容" --provider ollama --model qwen3:latest -``` - -## 技術アーキテクチャ - -### 統合構成 -``` -ai.gpt (統合MCPサーバー:8001) -├── 🧠 ai.gpt core (記憶・関係性・人格) -├── 💻 ai.shell (Claude Code風開発環境) -├── 🎴 ai.card (独立MCPサーバー:8000) -└── 📝 ai.log (Rust製ブログシステム:8002) -``` - -### 今後の展開 -- **自律送信**: atproto実装による真の自発的コミュニケーション -- **ai.ai連携**: 心理分析AIとの統合 -- **ai.verse統合**: UEメタバースとの連携 -- **分散SNS統合**: atproto完全対応 - -## 革新的な特徴 - -### AI駆動記憶システム -- ChatGPT 4,000件ログから学習した効果的記憶構築 -- 人間的な忘却・重要度判定 - -### 不可逆関係性 -- 現実の人間関係と同じ重みを持つAI関係性 -- 修復不可能な関係性破綻システム - -### 統合アーキテクチャ -- fastapi_mcp基盤での複数AIシステム統合 -- OpenAI Function Calling + MCP完全連携実証済み \ No newline at end of file diff --git a/claude/projects/os.md b/claude/projects/os.md deleted file mode 100644 index b57f053..0000000 --- a/claude/projects/os.md +++ /dev/null @@ -1,79 +0,0 @@ -# ai.os プロジェクト固有情報 - -## プロジェクト概要 -- **名前**: ai.os -- **パッケージ**: aios -- **タイプ**: ArchLinux-based OS -- **役割**: AI統合OS基盤 - -## 現在の実装状況 - -### OS基盤 -- **ベース**: ArchLinux + archiso -- **配布形式**: Docker container (bootstrap tar.gz) -- **ビルドシステム**: GitHub Actions自動ビルド -- **レジストリ**: Docker Hub, GitHub Packages, git.syui.ai - -### 搭載パッケージ -```bash -base base-devel linux vim git zsh rust openssh openssl jq go nodejs docker podman bc -``` - -### AI統合コンポーネント -- **ai.bot**: Rust製、`/bin/ai`でインストール済み -- **ai.gpt**: 統合予定(Python + fastapi_mcp) -- **Container設定**: Podman用AI registryプリセット - -## 将来の発展方向 - -### Phase 1: AI基盤統合 -- **ai.gpt搭載**: MCPサーバー自動起動 -- **ai.shell**: Claude Code風terminal組み込み -- **Python環境**: fastapi_mcp基盤 - -### Phase 2: ゲーム融合OS -- **ai.verse統合**: UEメタバース基盤 -- **ai.card**: iOS/Web UI統合 -- **自動起動**: systemdでAIサービス管理 - -### Phase 3: 統合デバイス化 -- **ai.game device**: 専用ハードウェア対応 -- **分散SNS**: atproto完全統合 -- **現実反映**: ゲーム↔現実データ同期 - -## 技術仕様 - -### ビルド設定 -- **profiledef.sh**: bootstrap modeでtar.gz生成 -- **Version管理**: 日付ベース自動更新(YYYY.MM.DD) -- **CI/CD**: GitHub Actions + multi-registry push - -### 設定管理 -- **os-release**: `/etc/os-release`準拠 -- **Container**: Podman shortname alias対応 -- **Network**: ai.conf registryプリセット - -### 開発環境 -- **言語**: Rust(ai.bot), Python(ai.gpt統合予定) -- **Shell**: zsh -- **Container**: Docker + Podman両対応 - -## 使用方法 - -### Docker実行 -```bash -docker run -it git.syui.ai/ai/os ai -docker run -it syui/aios ai -docker run -it ghcr.io/syui/aios ai -``` - -### Podman実行 -```bash -podman pull aios # shortname alias -``` - -### ローカルビルド -```bash -./scpt/gh-actions.zsh # GitHub Actions workflow生成 -./build.zsh # ローカルビルド実行 -``` \ No newline at end of file diff --git a/claude/projects/verse.md b/claude/projects/verse.md deleted file mode 100644 index 8e48ce1..0000000 --- a/claude/projects/verse.md +++ /dev/null @@ -1,220 +0,0 @@ -# ai.verse - -## 概要 -**現実とゲームを結合する3D世界** - atproto分散SNS統合メタバースプロジェクト - -ai.verseは単なるゲームではなく、現実の個人の唯一性をデジタル世界で担保し、Play-to-Workを実現する革新的メタバースです。 - -## プロジェクト情報 -- **タイプ**: metaverse -- **説明**: 現実とゲーム結合3D世界 -- **ステータス**: UE実装予定 -- **ブランチ**: main -- **技術**: Unreal Engine + atproto + Three.js - -## 中核思想: yui system(唯一性担保) - -### 基本原則 -- **現実の個人 ↔ ゲーム内avatar**: 1:1紐付け(改ざん不可能) -- **atproto DID**: 暗号学的唯一性担保 -- **unique skill**: その人だけが使えるスキル・能力 -- **motion capture**: その人だけがカメラでキャラを動かせる - -### 現実反映の仕組み -``` -現実の個人 → atproto account (DID) → ゲーム内avatar → 固有スキル - ↑_______________________________| (現実への反映) -``` - -## 4つのSystemに統合 - -### 1. verse.world system(惑星型3D世界) -**目的**: 従来の平面マップを現実的な惑星形式に変革 - -**特徴**: -- **立体ワールド**: 上を飛び続けると宇宙、下を掘ると地核 -- **見えない場所にも世界**: プレイヤーが行けない場所も完全実装 -- **物理法則**: 現実的な重力・大気・軌道システム - -**実装**: `./world/book/` でUnreal Engine技術習得中 -**省略記法**: `verse.ue.system.world` → `verse.world` - -### 2. verse.at system(atproto統合) -**目的**: 分散SNSを基盤とした新しいゲーム体験 - -**特徴**: -- **現実SNS連携**: 実際のSNSアカウントでゲームプレイ -- **データ主権**: ゲームデータはユーザーのatprotoアカウントに保存 -- **selfhost運用**: 独自atprotoサーバーで完全自律性 - -**実装**: `./at/` で分散SNS基盤構築済み -**省略記法**: `verse.ue.system.at` → `verse.at` - -### 3. verse.yui system(唯一性システム) -**目的**: 現実の個人の唯一性をゲーム内で完全担保 - -**特徴**: -- **unique character**: 1キャラクター = 1プレイヤー(他人は使用不可) -- **unique skill**: プレイヤー固有の特殊能力 -- **配信統合**: ゲーム画面 = 配信画面として使用可能 - -**VTuber活用例**: 声優さんが自分の声を使ったキャラクターでプレイ -**省略記法**: `verse.ue.system.yui` → `verse.yui` - -### 4. verse.ai system(存在属性) -**目的**: 現実の物理法則を反映した属性システム - -**特徴**: -- **原子属性**: 原子・中性子・陽子・電子に基づく属性 -- **アイ属性**: 主人公キャラクターの固有属性(存在子理論) -- **物質探求**: この世界で最も小さいものの探求をゲーム化 - -**省略記法**: `verse.ue.system.ai` → `verse.ai` - -## システム省略記法 - -ai.verseでは、`.ue`(Unreal Engine)が統合短縮されています: - -```bash -# 従来の長い記法 -verse.ue.system.world → verse.world -verse.ue.system.at → verse.at -verse.ue.system.yui → verse.yui -verse.ue.system.ai → verse.ai - -# ai.jsonでの参照 -curl -sL git.syui.ai/ai/ai/raw/branch/main/ai.json | jq -r .ai.verse.ue.system.world -# ↓ 簡潔な記法 -curl -sL git.syui.ai/ai/ai/raw/branch/main/ai.json | jq -r .ai.verse.world -``` - -この省略により、UE実装の複雑さを隠蔽し、よりシンプルなAPI設計を実現しています。 - -## 技術アーキテクチャ - -### Unreal Engine実装 -``` -./world/ -├── book/ # UE開発ガイドブック -├── blender/ # 3Dモデル制作ワークフロー -├── city/ # 都市環境構築技術 -├── gasp/ # キャラクター実装 -├── vrm4u/ # VRMアバター統合 -└── web/ # Three.js Web統合 -``` - -### atproto基盤 -``` -./at/ -├── lexicons/ # atproto schema定義 -├── item/card/ # カードアイテムデータ -├── envs/ # サーバー環境設定 -└── scpt/ # 自動化スクリプト -``` - -### カード連携 -``` -./card/ -├── img/ # カード画像アセット -└── src/ # Vue.js Web実装 -``` - -## 統合エコシステム - -### ai.card統合 -- **ゲーム内アイテム**: ai.cardのカードをゲーム内で使用 -- **物理カード化**: リアル⇔デジタル双方向連携 -- **atproto保存**: カードデータはユーザーのatprotoアカウントに - -### ai.gpt統合 -- **NPC人格**: 自律AI人格がNPCとして存在 -- **記憶システム**: プレイヤーとの過去の交流を記憶 -- **関係性進化**: 継続的な交流で関係性が発展 - -### ai.bot統合 -- **SNS連携**: atproto投稿でゲーム内イベント発生 -- **双方向通信**: ゲーム⇔SNS相互影響システム - -## メタバース浸透戦略 - -### フェーズ1: ゲームとして成立 -- **面白さ優先**: まず普通に楽しいゲームを作る -- **技術実証**: UE + atproto + カード連携の動作確認 -- **コア体験**: unique skillによる特別感の実現 - -### フェーズ2: 段階的メタバース化 -- **現実連携**: SNS⇔ゲーム双方向連携強化 -- **配信統合**: VTuber配信用プラットフォーム化 -- **経済システム**: Play-to-Work要素の段階的導入 - -### フェーズ3: 現実融合 -- **生活統合**: 現実の仕事・生活のゲーム化 -- **価値創出**: ゲーム内活動の現実価値化 -- **社会実装**: 新しい働き方・生き方の実現 - -## 開発状況 - -### 完成済み -- ✅ atproto基盤構築(./at/) -- ✅ カード連携準備(./card/) -- ✅ UE学習環境(./world/book/) -- ✅ yui system設計 - -### 実装中 -- 🔄 Unreal Engine 3D世界構築 -- 🔄 atproto ↔ UE連携システム -- 🔄 unique skill実装 - -### 実装予定 -- ⏳ VRM avatar統合 -- ⏳ motion capture機能 -- ⏳ 配信プラットフォーム統合 -- ⏳ Play-to-Work経済システム - -## 技術的特徴 - -### 革新的要素 -- **惑星型ワールド**: 平面マップの限界を突破 -- **データ主権**: ゲームデータをプレイヤーが完全所有 -- **唯一性担保**: 暗号学的に保証された個人性 -- **現実融合**: SNS⇔ゲーム⇔現実の三位一体 - -### 従来ゲームとの違い -| 要素 | 従来ゲーム | ai.verse | -|------|-----------|----------| -| データ所有権 | 運営会社 | プレイヤー | -| キャラクター | 複製可能 | 唯一性担保 | -| 世界構造 | 平面マップ | 惑星型3D | -| SNS連携 | なし/形式的 | 分散SNS基盤 | -| 現実価値 | ゲーム内限定 | 現実反映 | - -## 未来ビジョン - -### 短期目標(1-2年) -- UE基本実装完了 -- unique skill demo実装 -- atproto ↔ UE連携確立 - -### 中期目標(3-5年) -- VTuber配信プラットフォーム化 -- 経済システム本格稼働 -- ユーザーコミュニティ形成 - -### 長期目標(5-10年) -- **Play-to-Work社会実現**: 仕事・生活・ゲームの境界消失 -- **メタバース一般化**: VRChatのような社会インフラ化 -- **新しい文明形態**: デジタル⇔物理融合社会の先駆け - -## 哲学的意義 - -ai.verseは単なるエンターテインメントではなく、**人類の新しい存在形態の実験場**です。 - -- **存在子理論**: この世界で最も小さいもの(ai)の探求 -- **唯一性原則**: 現実の個人性をデジタルで完全担保 -- **現実反映**: デジタルと物理の境界を溶かす新しい世界観 - -**「現実とゲームの境界がなくなる未来」**の実現を目指します。 - ---- - -*このドキュメントはai.verse submoduleの構造と哲学を基に生成されました* \ No newline at end of file diff --git a/claude/scripts/generate_claude.sh b/claude/scripts/generate_claude.sh deleted file mode 100755 index 763f59a..0000000 --- a/claude/scripts/generate_claude.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/bin/zsh - -# Platform-specific commands -case $OSTYPE in - darwin*) - sed_inplace() { sed -i '' "$@"; } - date_cmd() { gdate "$@"; } - ;; - linux*) - sed_inplace() { sed -i "$@"; } - date_cmd() { date "$@"; } - ;; -esac - -# Directory paths -CLAUDE_ROOT="${0:a:h:h}" -CORE_DIR="$CLAUDE_ROOT/core" -PROJECTS_DIR="$CLAUDE_ROOT/projects" -TEMPLATES_DIR="$CLAUDE_ROOT/templates" - -# Usage function -usage() { - echo "Usage: $0 --project= --output= [--include=]" - echo "" - echo "Options:" - echo " --project= Project name (os, gpt, card, etc.)" - echo " --output= Output file path (default: ./claude.md)" - echo " --include= Components to include (default: core,specific)" - echo " Options: core, specific, architecture, naming, philosophy" - echo "" - echo "Examples:" - echo " $0 --project=os --output=./claude.md" - echo " $0 --project=gpt --include=core,specific --output=../gpt/claude.md" - echo " $0 --project=card --include=philosophy,specific" - exit 1 -} - -# Parse command line arguments -PROJECT="" -OUTPUT_FILE="./claude.md" -INCLUDE_COMPONENTS="core,specific" - -for arg in "$@"; do - case $arg in - --project=*) - PROJECT="${arg#*=}" - ;; - --output=*) - OUTPUT_FILE="${arg#*=}" - ;; - --include=*) - INCLUDE_COMPONENTS="${arg#*=}" - ;; - --help|-h) - usage - ;; - *) - echo "Unknown argument: $arg" - usage - ;; - esac -done - -# Validate required arguments -if [[ -z "$PROJECT" ]]; then - echo "Error: --project is required" - usage -fi - -# Check if project file exists -PROJECT_FILE="$PROJECTS_DIR/$PROJECT.md" -if [[ ! -f "$PROJECT_FILE" ]]; then - echo "Error: Project file not found: $PROJECT_FILE" - echo "Available projects:" - ls "$PROJECTS_DIR"/*.md 2>/dev/null | xargs -n1 basename | sed 's/\.md$//' - exit 1 -fi - -# Create output directory if needed -OUTPUT_DIR="${OUTPUT_FILE:h}" -if [[ "$OUTPUT_DIR" != "$OUTPUT_FILE" && ! -d "$OUTPUT_DIR" ]]; then - mkdir -p "$OUTPUT_DIR" -fi - -# Initialize output file with header from ai.md -if [[ -f "$CLAUDE_ROOT/../ai.md" ]]; then - # Use ai.md as the base - cat "$CLAUDE_ROOT/../ai.md" > "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - echo "---" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - echo "# エコシステム統合設計書(詳細版)" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - echo "このドキュメントは動的生成されました。修正は元ファイルで行ってください。" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" -else - # Fallback to previous behavior - cat > "$OUTPUT_FILE" << 'EOF' -# エコシステム統合設計書 - -このドキュメントは動的生成されました。修正は元ファイルで行ってください。 - -EOF -fi - -# Add generation metadata -echo "生成日時: $(date_cmd '+%Y-%m-%d %H:%M:%S')" >> "$OUTPUT_FILE" -echo "対象プロジェクト: $PROJECT" >> "$OUTPUT_FILE" -echo "含有コンポーネント: $INCLUDE_COMPONENTS" >> "$OUTPUT_FILE" -echo "" >> "$OUTPUT_FILE" - -# Parse include components -IFS=',' read -A COMPONENTS <<< "$INCLUDE_COMPONENTS" - -# Add components based on include list -for component in "${COMPONENTS[@]}"; do - case "$component" in - "core") - cat "$CORE_DIR/philosophy.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - - cat "$CORE_DIR/naming.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - - cat "$CORE_DIR/architecture.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - ;; - "philosophy") - cat "$CORE_DIR/philosophy.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - ;; - "naming") - cat "$CORE_DIR/naming.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - ;; - "architecture") - cat "$CORE_DIR/architecture.md" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - ;; - "specific") - cat "$PROJECT_FILE" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - ;; - *) - echo "Warning: Unknown component: $component" - ;; - esac -done - -# Add footer -cat >> "$OUTPUT_FILE" << 'EOF' - -# footer - -© syui - -# important-instruction-reminders -Do what has been asked; nothing more, nothing less. -NEVER create files unless they're absolutely necessary for achieving your goal. -ALWAYS prefer editing an existing file to creating a new one. -NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User. -EOF - -# Report generation -echo "✅ Generated: $OUTPUT_FILE" -echo "📝 Project: $PROJECT" -echo "📦 Components: $INCLUDE_COMPONENTS" -echo "📏 Size: $(wc -l < "$OUTPUT_FILE") lines" - -# Show component breakdown -echo "" -echo "📋 Component breakdown:" -for component in "${COMPONENTS[@]}"; do - case "$component" in - "core") - echo " - Core (philosophy + naming + architecture)" - ;; - "philosophy"|"naming"|"architecture"|"specific") - echo " - $(echo "${component}" | sed 's/./\U&/')" - ;; - esac -done \ No newline at end of file diff --git a/claude/scripts/session-end.sh b/claude/scripts/session-end.sh deleted file mode 100755 index 574892b..0000000 --- a/claude/scripts/session-end.sh +++ /dev/null @@ -1,227 +0,0 @@ -#!/bin/zsh - -# Claude Code Session End Script -# セッション終了時の標準プロセス - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Configuration -SCRIPT_DIR="${0:a:h}" -REPO_ROOT="${SCRIPT_DIR:h:h}" -SESSION_LOG_DIR="$REPO_ROOT/.claude/sessions" -TIMESTAMP=$(date '+%Y-%m-%d_%H-%M-%S') - -# Create session log directory if it doesn't exist -mkdir -p "$SESSION_LOG_DIR" - -# Usage function -usage() { - echo "Usage: $0 [--project=] [--summary=] [--auto-sync] [--help]" - echo "" - echo "Claude Code Session End Manager" - echo "" - echo "Options:" - echo " --project= Project name (auto-detected if not specified)" - echo " --summary= Session summary (interactive prompt if not specified)" - echo " --auto-sync Automatically sync with parent repository" - echo " --help Show this help message" - echo "" - echo "This script should be run at the end of each Claude Code session to:" - echo " 1. Record session achievements" - echo " 2. Commit changes with proper messages" - echo " 3. Sync with parent repository" - echo " 4. Validate project consistency" - exit 1 -} - -# Logging function -log() { - local level="$1" - shift - local message="$*" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "[$timestamp] [$level] $message" | tee -a "$SESSION_LOG_DIR/session-end.log" -} - -# Parse arguments -PROJECT_NAME="" -SESSION_SUMMARY="" -AUTO_SYNC=false - -for arg in "$@"; do - case $arg in - --project=*) - PROJECT_NAME="${arg#*=}" - ;; - --summary=*) - SESSION_SUMMARY="${arg#*=}" - ;; - --auto-sync) - AUTO_SYNC=true - ;; - --help|-h) - usage - ;; - *) - echo "Unknown argument: $arg" - usage - ;; - esac -done - -# Auto-detect project if not specified -if [[ -z "$PROJECT_NAME" ]]; then - # Check if we're in a submodule directory - if [[ -f ".git" && $(head -1 .git 2>/dev/null) =~ "gitdir:" ]]; then - PROJECT_NAME=$(basename "$PWD") - echo -e "${BLUE}📍 Auto-detected project: $PROJECT_NAME${NC}" - else - echo -e "${YELLOW}⚠️ Could not auto-detect project. Please specify --project=${NC}" - echo "Available projects:" - cd "$REPO_ROOT" - for dir in */; do - if [[ -d "$dir/.git" || -f "$dir/.git" ]]; then - echo " - ${dir%/}" - fi - done - exit 1 - fi -fi - -# Validate project exists -if [[ ! -d "$REPO_ROOT/$PROJECT_NAME" ]]; then - echo -e "${RED}❌ Project '$PROJECT_NAME' not found${NC}" - exit 1 -fi - -cd "$REPO_ROOT/$PROJECT_NAME" - -echo -e "${BLUE}🚀 Starting session end process for: $PROJECT_NAME${NC}" -log "INFO" "Starting session end process for project: $PROJECT_NAME" - -# Check for uncommitted changes -if ! git diff --quiet || ! git diff --cached --quiet; then - echo -e "${YELLOW}📝 Uncommitted changes detected${NC}" - - # Show status - echo -e "${BLUE}Current git status:${NC}" - git status --short - - # Get session summary if not provided - if [[ -z "$SESSION_SUMMARY" ]]; then - echo "" - echo -e "${BLUE}📋 Please provide a session summary:${NC}" - echo "(Describe what was accomplished in this Claude Code session)" - read "SESSION_SUMMARY?> " - - if [[ -z "$SESSION_SUMMARY" ]]; then - echo -e "${RED}❌ Session summary is required${NC}" - exit 1 - fi - fi - - # Stage all changes - git add . - - # Create commit with session summary - COMMIT_MESSAGE="Claude Code Session: $SESSION_SUMMARY - -📅 Session Date: $(date '+%Y-%m-%d %H:%M:%S') -🎯 Project: $PROJECT_NAME -📋 Summary: $SESSION_SUMMARY - -🤖 Generated with Claude Code Session Manager -Co-Authored-By: Claude " - - # Commit changes - if git commit -m "$COMMIT_MESSAGE"; then - echo -e "${GREEN}✅ Changes committed successfully${NC}" - log "INFO" "Session changes committed for $PROJECT_NAME" - - # Save session record - SESSION_RECORD="$SESSION_LOG_DIR/${PROJECT_NAME}_${TIMESTAMP}.md" - cat > "$SESSION_RECORD" << EOF -# Claude Code Session Report - -**Project**: $PROJECT_NAME -**Date**: $(date '+%Y-%m-%d %H:%M:%S') -**Summary**: $SESSION_SUMMARY - -## Changes Made -\`\`\` -$(git show --stat HEAD) -\`\`\` - -## Commit Details -\`\`\` -$(git show --oneline -s HEAD) -\`\`\` - -## Session End Status -- ✅ Changes committed -- ✅ Session logged -$(if [[ "$AUTO_SYNC" == true ]]; then echo "- ✅ Auto-sync enabled"; else echo "- ⏸️ Manual sync required"; fi) -EOF - - echo -e "${GREEN}📋 Session record saved: $SESSION_RECORD${NC}" - - else - echo -e "${RED}❌ Failed to commit changes${NC}" - exit 1 - fi -else - echo -e "${GREEN}✅ No uncommitted changes${NC}" - log "INFO" "No changes to commit in $PROJECT_NAME" -fi - -# Sync with parent repository if requested -if [[ "$AUTO_SYNC" == true ]]; then - echo -e "${BLUE}🔄 Syncing with parent repository...${NC}" - - cd "$REPO_ROOT" - - # Update parent repository to reflect submodule changes - if "$REPO_ROOT/claude/scripts/update-submodules.sh" --module="$PROJECT_NAME" --auto; then - echo -e "${GREEN}✅ Parent repository synced successfully${NC}" - log "INFO" "Parent repository synced for $PROJECT_NAME" - else - echo -e "${YELLOW}⚠️ Parent repository sync failed. Manual sync may be required.${NC}" - log "WARNING" "Parent repository sync failed for $PROJECT_NAME" - fi -else - echo -e "${YELLOW}⏸️ Manual sync required. Run this command when ready:${NC}" - echo " cd $REPO_ROOT && ./claude/scripts/update-submodules.sh --module=$PROJECT_NAME --auto" -fi - -# Validation check -echo -e "${BLUE}🔍 Running validation checks...${NC}" -cd "$REPO_ROOT" - -if "$REPO_ROOT/claude/scripts/update-submodules.sh" --validate > /dev/null 2>&1; then - echo -e "${GREEN}✅ Project consistency validated${NC}" - log "INFO" "Validation passed for $PROJECT_NAME session end" -else - echo -e "${YELLOW}⚠️ Validation warnings detected. Run full validation:${NC}" - echo " ./claude/scripts/update-submodules.sh --validate" -fi - -# Session summary -echo "" -echo -e "${GREEN}🎉 Session end process completed!${NC}" -echo "" -echo -e "${BLUE}📊 Summary:${NC}" -echo " 📦 Project: $PROJECT_NAME" -if [[ -n "$SESSION_SUMMARY" ]]; then - echo " 📋 Summary: $SESSION_SUMMARY" -fi -echo " 📅 Timestamp: $TIMESTAMP" -echo " 🔄 Sync: $(if [[ "$AUTO_SYNC" == true ]]; then echo "Completed"; else echo "Manual required"; fi)" -echo "" -echo -e "${BLUE}📁 Session records: $SESSION_LOG_DIR${NC}" - -log "INFO" "Session end process completed successfully for $PROJECT_NAME" \ No newline at end of file diff --git a/claude/scripts/sync-all.sh b/claude/scripts/sync-all.sh deleted file mode 100755 index 78728d7..0000000 --- a/claude/scripts/sync-all.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/zsh - -# Combined submodule update + Claude docs sync script - -# Platform-specific commands -case $OSTYPE in - darwin*) - date_cmd() { gdate "$@"; } - ;; - linux*) - date_cmd() { date "$@"; } - ;; -esac - -# Colors -BLUE='\033[0;34m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' - -SCRIPT_DIR="${0:a:h}" - -# Usage function -usage() { - echo "Usage: $0 [--dry-run] [--help]" - echo "" - echo "This script performs a complete sync:" - echo "1. Updates all git submodules" - echo "2. Regenerates Claude documentation for all projects" - echo "3. Auto-commits changes if any" - echo "" - echo "Options:" - echo " --dry-run Show what would be done without making changes" - echo " --help Show this help message" - exit 1 -} - -DRY_RUN=false - -for arg in "$@"; do - case $arg in - --dry-run) - DRY_RUN=true - ;; - --help|-h) - usage - ;; - *) - echo "Unknown argument: $arg" - usage - ;; - esac -done - -echo -e "${BLUE}🚀 Starting complete project sync...${NC}" -echo "📅 Time: $(date_cmd '+%Y-%m-%d %H:%M:%S')" - -if [[ "$DRY_RUN" == true ]]; then - echo -e "${YELLOW}🔍 DRY RUN MODE - No changes will be made${NC}" -fi - -echo "" - -# Step 1: Update submodules -echo -e "${BLUE}📦 Step 1: Updating submodules...${NC}" -if [[ "$DRY_RUN" == true ]]; then - "$SCRIPT_DIR/update-submodules.sh" --all --dry-run -else - "$SCRIPT_DIR/update-submodules.sh" --all --auto -fi - -submodule_exit_code=$? -echo "" - -# Step 2: Sync Claude documentation -echo -e "${BLUE}📝 Step 2: Syncing Claude documentation...${NC}" -if [[ "$DRY_RUN" == true ]]; then - "$SCRIPT_DIR/sync_docs.sh" --dry-run --all -else - "$SCRIPT_DIR/sync_docs.sh" --all -fi - -docs_exit_code=$? -echo "" - -# Summary -echo -e "${BLUE}📊 Complete sync summary:${NC}" -if [[ $submodule_exit_code -eq 0 ]]; then - echo -e " ✅ Submodules: ${GREEN}Success${NC}" -else - echo -e " ❌ Submodules: ${RED}Failed${NC}" -fi - -if [[ $docs_exit_code -eq 0 ]]; then - echo -e " ✅ Documentation: ${GREEN}Success${NC}" -else - echo -e " ❌ Documentation: ${RED}Failed${NC}" -fi - -if [[ "$DRY_RUN" == true ]]; then - echo "" - echo -e "${YELLOW}🔍 This was a dry run. To apply changes, run without --dry-run${NC}" -fi - -echo "" -echo -e "${GREEN}🎉 Complete project sync finished!${NC}" - -# Exit with error if any step failed -if [[ $submodule_exit_code -ne 0 || $docs_exit_code -ne 0 ]]; then - exit 1 -fi \ No newline at end of file diff --git a/claude/scripts/sync_docs.sh b/claude/scripts/sync_docs.sh deleted file mode 100755 index c56e175..0000000 --- a/claude/scripts/sync_docs.sh +++ /dev/null @@ -1,188 +0,0 @@ -#!/bin/zsh - -# Platform-specific commands -case $OSTYPE in - darwin*) - sed_inplace() { sed -i '' "$@"; } - date_cmd() { gdate "$@"; } - ;; - linux*) - sed_inplace() { sed -i "$@"; } - date_cmd() { date "$@"; } - ;; -esac - -# Directory paths -CLAUDE_ROOT="${0:a:h:h}" -SCRIPTS_DIR="$CLAUDE_ROOT/scripts" - -# Available projects (scan from projects/ directory) -AVAILABLE_PROJECTS=($(ls "$CLAUDE_ROOT/projects"/*.md 2>/dev/null | xargs -n1 basename | sed 's/\.md$//')) - -# Project directories (scan for claude.md files) -PROJECT_DIRS=( - "$CLAUDE_ROOT/../../os" - "$CLAUDE_ROOT/../../gpt" - "$CLAUDE_ROOT/../../card" - "$CLAUDE_ROOT/../../bot" - "$CLAUDE_ROOT/../../verse" - "$CLAUDE_ROOT/../../shell" - "$CLAUDE_ROOT/../../ai" - "$CLAUDE_ROOT/../../moji" - "$CLAUDE_ROOT/../../game" -) - -# Usage function -usage() { - echo "Usage: $0 [--project=] [--all] [--dry-run] [--help]" - echo "" - echo "Options:" - echo " --project= Sync specific project (${AVAILABLE_PROJECTS[*]})" - echo " --all Sync all available projects" - echo " --dry-run Show what would be done without making changes" - echo " --help Show this help message" - echo "" - echo "Available projects: ${AVAILABLE_PROJECTS[*]}" - echo "" - echo "Examples:" - echo " $0 --project=os # Sync only ai.os" - echo " $0 --all # Sync all projects" - echo " $0 --dry-run --all # Preview all sync operations" - exit 1 -} - -# Parse command line arguments -PROJECT="" -SYNC_ALL=false -DRY_RUN=false - -for arg in "$@"; do - case $arg in - --project=*) - PROJECT="${arg#*=}" - ;; - --all) - SYNC_ALL=true - ;; - --dry-run) - DRY_RUN=true - ;; - --help|-h) - usage - ;; - *) - echo "Unknown argument: $arg" - usage - ;; - esac -done - -# Validate arguments -if [[ -z "$PROJECT" && "$SYNC_ALL" == false ]]; then - echo "Error: Either --project or --all is required" - usage -fi - -if [[ -n "$PROJECT" && "$SYNC_ALL" == true ]]; then - echo "Error: Cannot use both --project and --all" - usage -fi - -# Check if project exists -if [[ -n "$PROJECT" ]]; then - if [[ ! " ${AVAILABLE_PROJECTS[*]} " =~ " $PROJECT " ]]; then - echo "Error: Project '$PROJECT' not found" - echo "Available projects: ${AVAILABLE_PROJECTS[*]}" - exit 1 - fi -fi - -# Sync function -sync_project() { - local project_name="$1" - local target_dir="" - - # Find target directory - for dir in "${PROJECT_DIRS[@]}"; do - if [[ -d "$dir" && "$(basename "$dir")" == "$project_name" ]]; then - target_dir="$dir" - break - fi - done - - if [[ -z "$target_dir" ]]; then - echo "⚠️ Warning: Directory for project '$project_name' not found" - return 1 - fi - - local target_file="$target_dir/claude.md" - - if [[ "$DRY_RUN" == true ]]; then - echo "🔍 [DRY RUN] Would generate: $target_file" - echo " Command: $SCRIPTS_DIR/generate_claude.sh --project=$project_name --output=$target_file" - return 0 - fi - - # Generate the documentation - echo "📝 Syncing: $project_name → $target_file" - - if ! "$SCRIPTS_DIR/generate_claude.sh" --project="$project_name" --output="$target_file" >/dev/null 2>&1; then - echo "❌ Error: Failed to generate documentation for $project_name" - return 1 - fi - - echo "✅ Success: $project_name documentation synced" - return 0 -} - -# Main execution -echo "🚀 Starting documentation sync..." -echo "📅 Time: $(date_cmd '+%Y-%m-%d %H:%M:%S')" - -if [[ "$DRY_RUN" == true ]]; then - echo "🔍 DRY RUN MODE - No files will be modified" -fi - -echo "" - -success_count=0 -error_count=0 - -if [[ "$SYNC_ALL" == true ]]; then - echo "📚 Syncing all projects: ${AVAILABLE_PROJECTS[*]}" - echo "" - - for project in "${AVAILABLE_PROJECTS[@]}"; do - if sync_project "$project"; then - ((success_count++)) - else - ((error_count++)) - fi - done -else - echo "📖 Syncing project: $PROJECT" - echo "" - - if sync_project "$PROJECT"; then - ((success_count++)) - else - ((error_count++)) - fi -fi - -echo "" -echo "📊 Summary:" -echo " ✅ Success: $success_count" -echo " ❌ Errors: $error_count" - -if [[ "$DRY_RUN" == true ]]; then - echo "" - echo "🔍 This was a dry run. To apply changes, run without --dry-run" -fi - -if [[ $error_count -gt 0 ]]; then - exit 1 -fi - -echo "" -echo "🎉 Documentation sync completed successfully!" \ No newline at end of file diff --git a/claude/scripts/update-submodules.sh b/claude/scripts/update-submodules.sh deleted file mode 100755 index 8971acd..0000000 --- a/claude/scripts/update-submodules.sh +++ /dev/null @@ -1,793 +0,0 @@ -#!/bin/zsh - -# Platform-specific commands -case $OSTYPE in - darwin*) - date_cmd() { gdate "$@"; } - ;; - linux*) - date_cmd() { date "$@"; } - ;; -esac - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Configuration -SCRIPT_DIR="${0:a:h}" -REPO_ROOT="${SCRIPT_DIR:h:h}" -LOGFILE="$REPO_ROOT/.submodule-update.log" -AI_JSON="$REPO_ROOT/ai.json" - -# Usage function -usage() { - echo "Usage: $0 [--all] [--module=] [--auto] [--dry-run] [--validate] [--sync] [--add=] [--remove=] [--help]" - echo "" - echo "Options:" - echo " --all Update all submodules" - echo " --module= Update specific submodule (os, gpt, card, etc.)" - echo " --auto Auto-commit if changes detected" - echo " --dry-run Show what would be done without making changes" - echo " --validate Validate URL consistency between ai.json and .gitmodules" - echo " --sync Sync .gitmodules from ai.json configuration" - echo " --add= Add new submodule from ai.json configuration" - echo " --remove= Remove submodule (both from .gitmodules and filesystem)" - echo " --help Show this help message" - echo " --check-consistency Check for project inconsistencies and conflicts" - echo "" - echo "Available submodules:" - git config --file .gitmodules --get-regexp path | awk '{print " " $2}' - exit 1 -} - -# Logging function -log() { - local level="$1" - shift - local message="$*" - local timestamp=$(date_cmd '+%Y-%m-%d %H:%M:%S') - echo "[$timestamp] [$level] $message" | tee -a "$LOGFILE" -} - -# Parse arguments -UPDATE_ALL=false -SPECIFIC_MODULE="" -AUTO_COMMIT=false -DRY_RUN=false -VALIDATE_ONLY=false -SYNC_GITMODULES=false -ADD_MODULE="" -REMOVE_MODULE="" -CHECK_CONSISTENCY=false - -for arg in "$@"; do - case $arg in - --all) - UPDATE_ALL=true - ;; - --module=*) - SPECIFIC_MODULE="${arg#*=}" - ;; - --auto) - AUTO_COMMIT=true - ;; - --dry-run) - DRY_RUN=true - ;; - --validate) - VALIDATE_ONLY=true - ;; - --sync) - SYNC_GITMODULES=true - ;; - --add=*) - ADD_MODULE="${arg#*=}" - ;; - --remove=*) - REMOVE_MODULE="${arg#*=}" - ;; - --check-consistency) - CHECK_CONSISTENCY=true - ;; - --help|-h) - usage - ;; - *) - echo "Unknown argument: $arg" - usage - ;; - esac -done - -# Validate arguments -operations_count=0 -[[ "$UPDATE_ALL" == true ]] && ((operations_count++)) -[[ -n "$SPECIFIC_MODULE" ]] && ((operations_count++)) -[[ "$VALIDATE_ONLY" == true ]] && ((operations_count++)) -[[ "$SYNC_GITMODULES" == true ]] && ((operations_count++)) -[[ -n "$ADD_MODULE" ]] && ((operations_count++)) -[[ -n "$REMOVE_MODULE" ]] && ((operations_count++)) -[[ "$CHECK_CONSISTENCY" == true ]] && ((operations_count++)) - -if [[ $operations_count -eq 0 ]]; then - echo "Error: At least one operation is required" - usage -fi - -if [[ $operations_count -gt 1 ]]; then - echo "Error: Only one operation can be specified at a time" - usage -fi - -# Change to repository root -cd "$REPO_ROOT" || exit 1 - -echo -e "${BLUE}🚀 Starting submodule update...${NC}" -log "INFO" "Starting submodule update (all=$UPDATE_ALL, module=$SPECIFIC_MODULE, auto=$AUTO_COMMIT, dry-run=$DRY_RUN)" - -if [[ "$DRY_RUN" == true ]]; then - echo -e "${YELLOW}🔍 DRY RUN MODE - No changes will be made${NC}" -fi - -# Update function -update_submodule() { - local module_name="$1" - local module_path="$2" - - echo -e "\n${BLUE}📦 Processing: $module_name${NC}" - - # Check if submodule exists - if [[ ! -d "$module_path" ]]; then - echo -e "${RED}❌ Submodule directory not found: $module_path${NC}" - return 1 - fi - - # Get current commit - local current_commit=$(git submodule status "$module_path" | awk '{print $1}' | sed 's/^[+-]//') - - # Get current branch of the submodule - cd "$module_path" || return 1 - local current_branch=$(git branch --show-current) - local target_branch="${branches[$module_name]:-main}" - - if [[ -z "$current_branch" ]]; then - # If not on a branch (detached HEAD), use target branch from ai.json - current_branch="$target_branch" - fi - cd "$REPO_ROOT" - - if [[ "$DRY_RUN" == true ]]; then - echo -e "${YELLOW}🔍 [DRY RUN] Would update $module_name (target branch: $target_branch)${NC}" - echo " Current: $current_commit" - cd "$module_path" || return 1 - git fetch origin >/dev/null 2>&1 - local latest_commit=$(git rev-parse "origin/$target_branch" 2>/dev/null) - echo " Latest: $latest_commit" - cd "$REPO_ROOT" - - if [[ "$current_commit" != "$latest_commit" ]]; then - echo -e "${YELLOW} 📝 Changes available${NC}" - return 0 - else - echo -e "${GREEN} ✅ Already up to date${NC}" - return 1 - fi - fi - - # Update submodule - echo "🔄 Fetching latest changes..." - cd "$module_path" || return 1 - - if ! git fetch origin; then - echo -e "${RED}❌ Failed to fetch from origin${NC}" - cd "$REPO_ROOT" - return 1 - fi - - # Use the target branch from ai.json - local latest_commit=$(git rev-parse "origin/$target_branch" 2>/dev/null) - - if [[ "$current_commit" == "$latest_commit" ]]; then - echo -e "${GREEN}✅ Already up to date${NC}" - cd "$REPO_ROOT" - return 1 - fi - - echo "📝 Updating to latest commit on branch $target_branch (configured in ai.json)..." - # First ensure we're on the correct branch - if ! git checkout "$target_branch"; then - echo -e "${RED}❌ Failed to checkout branch $target_branch${NC}" - cd "$REPO_ROOT" - return 1 - fi - - # Then pull the latest changes - if ! git pull origin "$target_branch"; then - echo -e "${RED}❌ Failed to pull latest changes from $target_branch${NC}" - cd "$REPO_ROOT" - return 1 - fi - - cd "$REPO_ROOT" - - # Get the new commit after update - local new_commit=$(cd "$module_path" && git rev-parse HEAD) - - # Stage the submodule update - git add "$module_path" - - echo -e "${GREEN}✅ Updated $module_name (branch: $target_branch)${NC}" - echo " From: $current_commit" - echo " To: $new_commit" - - log "INFO" "Updated $module_name on branch $target_branch: $current_commit -> $new_commit" - return 0 -} - -# Get list of submodules -declare -A submodules -while IFS= read -r line; do - if [[ $line =~ '^\[submodule "([^"]+)"\]' ]]; then - current_name="${match[1]}" - elif [[ $line =~ '^[[:space:]]*path[[:space:]]*=[[:space:]]*(.+)$' ]]; then - submodules[$current_name]="${match[1]}" - fi -done < .gitmodules - -# Get branch information from ai.json -declare -A branches -get_branch_for_module() { - local module="$1" - local branch="main" # default branch - - if [[ -f "$AI_JSON" ]]; then - # Try to extract branch from ai.json using jq - if command -v jq >/dev/null 2>&1; then - local json_branch=$(jq -r ".ai.${module}.branch // \"main\"" "$AI_JSON" 2>/dev/null) - if [[ -n "$json_branch" && "$json_branch" != "null" ]]; then - branch="$json_branch" - fi - fi - fi - - echo "$branch" -} - -# Get URL and branch information from ai.json -declare -A urls - -get_git_config() { - local config_key="$1" - local default_value="$2" - local value="" - - if [[ -f "$AI_JSON" ]]; then - if command -v jq >/dev/null 2>&1; then - value=$(jq -r ".metadata.git.${config_key} // \"${default_value}\"" "$AI_JSON" 2>/dev/null) - fi - fi - - # Fallback to default if not found - if [[ -z "$value" || "$value" == "null" ]]; then - value="$default_value" - fi - - echo "$value" -} - -# Extract username and repo from JSON path -# For ai.gpt -> username=ai, repo=gpt -extract_git_info_from_path() { - local module="$1" - local username="" - local repo="" - - # Check if module exists in ai.json structure - if [[ -f "$AI_JSON" ]]; then - if command -v jq >/dev/null 2>&1; then - # Get all keys in the ai object - local ai_keys=$(jq -r '.ai | keys[]' "$AI_JSON" 2>/dev/null) - - # Find the first level (username) that contains our module - while IFS= read -r key; do - if jq -e ".ai.${key}.${module}" "$AI_JSON" >/dev/null 2>&1; then - username="$key" - repo="$module" - break - fi - # Also check if the key itself is our module (direct under ai) - if [[ "$key" == "$module" ]]; then - username="ai" # Default namespace - repo="$module" - break - fi - done <<< "$ai_keys" - fi - fi - - # Fallback: assume ai namespace - if [[ -z "$username" || -z "$repo" ]]; then - username="ai" - repo="$module" - fi - - echo "${username}:${repo}" -} - -get_base_url_for_module() { - local module="$1" - local host=$(get_git_config "host" "git.syui.ai") - local protocol=$(get_git_config "protocol" "ssh") - - # Extract username and repo from JSON structure - local git_info=$(extract_git_info_from_path "$module") - local username="${git_info%%:*}" - local repo="${git_info##*:}" - - local url="" - case "$protocol" in - "ssh") - url="git@${host}:${username}/${repo}" - ;; - "https") - url="https://${host}/${username}/${repo}" - ;; - *) - # Default to ssh - url="git@${host}:${username}/${repo}" - ;; - esac - - echo "$url" -} - -get_url_for_module() { - local module="$1" - local url=$(get_base_url_for_module "$module") - - # Check if there's a custom git_url override in ai.json - if [[ -f "$AI_JSON" ]]; then - if command -v jq >/dev/null 2>&1; then - local custom_url=$(jq -r ".ai.${module}.git_url // empty" "$AI_JSON" 2>/dev/null) - if [[ -n "$custom_url" && "$custom_url" != "null" ]]; then - url="$custom_url" - fi - fi - fi - - echo "$url" -} - -# Populate branches and URLs for all modules -for module in "${(k)submodules[@]}"; do - branches[$module]=$(get_branch_for_module "$module") - urls[$module]=$(get_url_for_module "$module") -done - -# Log git configuration for debugging -log "INFO" "Git host: $(get_git_config 'host' 'git.syui.ai'), protocol: $(get_git_config 'protocol' 'ssh')" - -# Debug: Log found submodules -log "INFO" "Found ${#submodules} submodules: ${(k)submodules[@]}" - -# Validation function -validate_url_consistency() { - echo -e "${BLUE}🔍 Validating URL consistency between ai.json and .gitmodules...${NC}" - - local inconsistencies=0 - - for module in "${(k)submodules[@]}"; do - local gitmodules_url=$(git config --file .gitmodules --get "submodule.${module}.url") - local ai_json_url="${urls[$module]}" - - if [[ -n "$ai_json_url" ]]; then - if [[ "$gitmodules_url" != "$ai_json_url" ]]; then - echo -e "${RED}❌ $module: URL mismatch${NC}" - echo " .gitmodules: $gitmodules_url" - echo " ai.json: $ai_json_url" - ((inconsistencies++)) - else - echo -e "${GREEN}✅ $module: URLs match${NC}" - fi - else - echo -e "${YELLOW}⚠️ $module: No git_url in ai.json${NC}" - fi - done - - echo "" - if [[ $inconsistencies -eq 0 ]]; then - echo -e "${GREEN}🎉 All URLs are consistent!${NC}" - log "INFO" "URL validation passed: all URLs consistent" - else - echo -e "${RED}❌ Found $inconsistencies URL inconsistencies${NC}" - echo "Run with --sync to fix inconsistencies" - log "ERROR" "URL validation failed: $inconsistencies inconsistencies" - return 1 - fi -} - -# Sync .gitmodules from ai.json -sync_gitmodules() { - echo -e "${BLUE}🔄 Syncing .gitmodules from ai.json...${NC}" - - local changes=0 - - for module in "${(k)submodules[@]}"; do - local ai_json_url="${urls[$module]}" - local ai_json_branch="${branches[$module]}" - - if [[ -n "$ai_json_url" ]]; then - local current_url=$(git config --file .gitmodules --get "submodule.${module}.url") - - if [[ "$current_url" != "$ai_json_url" ]]; then - echo "📝 Updating $module URL: $current_url -> $ai_json_url" - git config --file .gitmodules "submodule.${module}.url" "$ai_json_url" - ((changes++)) - fi - fi - done - - if [[ $changes -gt 0 ]]; then - echo -e "${GREEN}✅ Updated $changes URL(s) in .gitmodules${NC}" - log "INFO" "Synced .gitmodules: updated $changes URLs" - - if [[ "$AUTO_COMMIT" == true ]]; then - git add .gitmodules - git commit -m "Sync .gitmodules URLs from ai.json - -🔄 Updated $changes submodule URL(s) - -🤖 Generated with submodule sync" - echo -e "${GREEN}✅ Changes committed to .gitmodules${NC}" - fi - else - echo -e "${GREEN}✅ .gitmodules is already in sync${NC}" - fi -} - -# Add new submodule -add_submodule() { - local module="$1" - - echo -e "${BLUE}➕ Adding submodule: $module${NC}" - - local ai_json_url=$(get_url_for_module "$module") - local ai_json_branch=$(get_branch_for_module "$module") - - if [[ -z "$ai_json_url" ]]; then - echo -e "${RED}❌ No git_url found for '$module' in ai.json${NC}" - return 1 - fi - - if [[ -d "$module" ]]; then - echo -e "${RED}❌ Directory '$module' already exists${NC}" - return 1 - fi - - echo "📦 Adding submodule $module" - echo " URL: $ai_json_url" - echo " Branch: $ai_json_branch" - - if [[ "$DRY_RUN" == true ]]; then - echo -e "${YELLOW}🔍 [DRY RUN] Would add submodule${NC}" - return 0 - fi - - if git submodule add -b "$ai_json_branch" "$ai_json_url" "$module"; then - echo -e "${GREEN}✅ Successfully added submodule $module${NC}" - log "INFO" "Added submodule $module from $ai_json_url (branch: $ai_json_branch)" - - if [[ "$AUTO_COMMIT" == true ]]; then - git commit -m "Add submodule: $module - -📦 Added from ai.json configuration -🌐 URL: $ai_json_url -🌿 Branch: $ai_json_branch - -🤖 Generated with submodule manager" - echo -e "${GREEN}✅ Submodule addition committed${NC}" - fi - else - echo -e "${RED}❌ Failed to add submodule $module${NC}" - return 1 - fi -} - -# Remove submodule -remove_submodule() { - local module="$1" - - echo -e "${BLUE}➖ Removing submodule: $module${NC}" - - if [[ ! -d "$module" ]]; then - echo -e "${RED}❌ Submodule '$module' does not exist${NC}" - return 1 - fi - - if [[ "$DRY_RUN" == true ]]; then - echo -e "${YELLOW}🔍 [DRY RUN] Would remove submodule${NC}" - return 0 - fi - - # Remove from .gitmodules - git config --file .gitmodules --remove-section "submodule.$module" 2>/dev/null || true - - # Remove from .git/config - git config --remove-section "submodule.$module" 2>/dev/null || true - - # Remove from git index - git rm --cached "$module" 2>/dev/null || true - - # Remove directory - rm -rf "$module" - - # Remove from .git/modules - rm -rf ".git/modules/$module" - - echo -e "${GREEN}✅ Successfully removed submodule $module${NC}" - log "INFO" "Removed submodule $module" - - if [[ "$AUTO_COMMIT" == true ]]; then - git add .gitmodules "$module" 2>/dev/null || true - git commit -m "Remove submodule: $module - -🗑️ Completely removed submodule - -🤖 Generated with submodule manager" - echo -e "${GREEN}✅ Submodule removal committed${NC}" - fi -} - -# Consistency check function -check_project_consistency() { - echo -e "${BLUE}🔍 Checking project consistency...${NC}" - - local issues=0 - local warnings=0 - - # Check for uncommitted changes in submodules - echo -e "${BLUE}📝 Checking for uncommitted changes...${NC}" - for module in "${(k)submodules[@]}"; do - module_path="${submodules[$module]}" - - if [[ -d "$module_path" ]]; then - cd "$module_path" - - if ! git diff --quiet || ! git diff --cached --quiet; then - echo -e "${YELLOW}⚠️ $module: Has uncommitted changes${NC}" - git status --short | sed 's/^/ /' - ((warnings++)) - else - echo -e "${GREEN}✅ $module: Clean working directory${NC}" - fi - - cd "$REPO_ROOT" - fi - done - - # Check for branch inconsistencies - echo -e "${BLUE}🌿 Checking branch consistency...${NC}" - for module in "${(k)submodules[@]}"; do - module_path="${submodules[$module]}" - expected_branch="${branches[$module]}" - - if [[ -d "$module_path" ]]; then - cd "$module_path" - - local current_branch=$(git branch --show-current) - if [[ -z "$current_branch" ]]; then - current_branch="(detached HEAD)" - fi - - if [[ "$current_branch" != "$expected_branch" ]]; then - echo -e "${YELLOW}⚠️ $module: Branch mismatch${NC}" - echo " Current: $current_branch" - echo " Expected: $expected_branch" - ((warnings++)) - else - echo -e "${GREEN}✅ $module: Correct branch ($current_branch)${NC}" - fi - - cd "$REPO_ROOT" - fi - done - - # Check for remote synchronization - echo -e "${BLUE}🌐 Checking remote synchronization...${NC}" - for module in "${(k)submodules[@]}"; do - module_path="${submodules[$module]}" - - if [[ -d "$module_path" ]]; then - cd "$module_path" - - git fetch --quiet 2>/dev/null || true - - local ahead=$(git rev-list --count HEAD ^origin/HEAD 2>/dev/null || echo "0") - local behind=$(git rev-list --count origin/HEAD ^HEAD 2>/dev/null || echo "0") - - if [[ "$ahead" -gt 0 || "$behind" -gt 0 ]]; then - echo -e "${YELLOW}⚠️ $module: Out of sync with remote${NC}" - if [[ "$ahead" -gt 0 ]]; then - echo " $ahead commits ahead" - fi - if [[ "$behind" -gt 0 ]]; then - echo " $behind commits behind" - fi - ((warnings++)) - else - echo -e "${GREEN}✅ $module: Synchronized with remote${NC}" - fi - - cd "$REPO_ROOT" - fi - done - - # Check parent repository status - echo -e "${BLUE}🏠 Checking parent repository...${NC}" - if ! git diff --quiet || ! git diff --cached --quiet; then - echo -e "${YELLOW}⚠️ Parent repository has uncommitted changes${NC}" - git status --short | sed 's/^/ /' - ((warnings++)) - else - echo -e "${GREEN}✅ Parent repository is clean${NC}" - fi - - # Check for submodule pointer mismatches - echo -e "${BLUE}🔗 Checking submodule pointers...${NC}" - for module in "${(k)submodules[@]}"; do - module_path="${submodules[$module]}" - - if [[ -d "$module_path" ]]; then - local submodule_commit=$(git ls-tree HEAD "$module_path" | awk '{print $3}') - local actual_commit=$(cd "$module_path" && git rev-parse HEAD) - - if [[ "$submodule_commit" != "$actual_commit" ]]; then - echo -e "${YELLOW}⚠️ $module: Submodule pointer mismatch${NC}" - echo " Pointer: $submodule_commit" - echo " Actual: $actual_commit" - ((warnings++)) - else - echo -e "${GREEN}✅ $module: Submodule pointer correct${NC}" - fi - fi - done - - # Summary - echo "" - echo -e "${BLUE}📊 Consistency Check Summary:${NC}" - echo " 📦 Modules checked: ${#submodules}" - - if [[ $issues -eq 0 && $warnings -eq 0 ]]; then - echo -e "${GREEN} ✅ No issues found${NC}" - echo -e "${GREEN}🎉 All projects are consistent!${NC}" - log "INFO" "Consistency check passed: no issues found" - return 0 - else - if [[ $issues -gt 0 ]]; then - echo -e "${RED} ❌ Issues: $issues${NC}" - fi - if [[ $warnings -gt 0 ]]; then - echo -e "${YELLOW} ⚠️ Warnings: $warnings${NC}" - fi - - echo "" - echo -e "${BLUE}💡 Recommended actions:${NC}" - echo " • Commit uncommitted changes in affected modules" - echo " • Switch to expected branches where needed" - echo " • Run: ./claude/scripts/update-submodules.sh --all --auto" - echo " • Use session-end.sh for proper session cleanup" - - log "WARNING" "Consistency check found $issues issues and $warnings warnings" - return 1 - fi -} - -# Handle special operations -if [[ "$VALIDATE_ONLY" == true ]]; then - validate_url_consistency - exit $? -fi - -if [[ "$SYNC_GITMODULES" == true ]]; then - sync_gitmodules - exit 0 -fi - -if [[ -n "$ADD_MODULE" ]]; then - add_submodule "$ADD_MODULE" - exit $? -fi - -if [[ -n "$REMOVE_MODULE" ]]; then - remove_submodule "$REMOVE_MODULE" - exit $? -fi - -if [[ "$CHECK_CONSISTENCY" == true ]]; then - check_project_consistency - exit $? -fi - -# Main execution -success_count=0 -total_count=0 - -if [[ "$UPDATE_ALL" == true ]]; then - echo -e "${BLUE}📚 Updating all submodules...${NC}" - - for module_name in "${(k)submodules[@]}"; do - module_path="${submodules[$module_name]}" - ((total_count++)) - - if update_submodule "$module_name" "$module_path"; then - ((success_count++)) - fi - done -else - echo -e "${BLUE}📖 Updating submodule: $SPECIFIC_MODULE${NC}" - - if [[ -z "${submodules[$SPECIFIC_MODULE]}" ]]; then - echo -e "${RED}❌ Submodule '$SPECIFIC_MODULE' not found${NC}" - echo "Available submodules:" - for name in "${(k)submodules[@]}"; do - echo " - $name (path: ${submodules[$name]})" - done - exit 1 - fi - - module_path="${submodules[$SPECIFIC_MODULE]}" - ((total_count++)) - - if update_submodule "$SPECIFIC_MODULE" "$module_path"; then - ((success_count++)) - fi -fi - -# Summary -echo "" -echo -e "${BLUE}📊 Summary:${NC}" -echo " 📦 Modules processed: $total_count" -echo " ✅ Updates applied: $success_count" -echo " 📝 No changes: $((total_count - success_count))" - -if [[ "$DRY_RUN" == true ]]; then - echo "" - echo -e "${YELLOW}🔍 This was a dry run. To apply changes, run without --dry-run${NC}" - exit 0 -fi - -# Auto-commit if requested and changes exist -if [[ "$success_count" -gt 0 ]]; then - if [[ "$AUTO_COMMIT" == true ]]; then - echo "" - echo -e "${BLUE}💾 Auto-committing submodule updates...${NC}" - - commit_message="Update submodules - -📦 Updated modules: $success_count/$total_count -$(git diff --cached --name-only | sed 's/^/- /') - -🤖 Generated with submodule auto-update -$(date_cmd '+%Y-%m-%d %H:%M:%S')" - - if git commit -m "$commit_message"; then - echo -e "${GREEN}✅ Changes committed successfully${NC}" - log "INFO" "Auto-committed $success_count submodule updates" - else - echo -e "${RED}❌ Failed to commit changes${NC}" - log "ERROR" "Failed to auto-commit submodule updates" - fi - else - echo "" - echo -e "${YELLOW}📝 Changes staged but not committed. Run 'git commit' to commit them.${NC}" - echo "Or use --auto flag to commit automatically." - fi -fi - -echo "" -echo -e "${GREEN}🎉 Submodule update completed!${NC}" -log "INFO" "Submodule update completed: $success_count/$total_count updated" \ No newline at end of file diff --git a/claude/templates/.keep b/claude/templates/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/gpt b/gpt index 1106746..5564db0 160000 --- a/gpt +++ b/gpt @@ -1 +1 @@ -Subproject commit 110674659b5594b614b604dbcf1c48e743a4aa29 +Subproject commit 5564db014a67570405c7c79d9c76bb00ac7ad91c diff --git a/session_logs/session_2025-06-07_20-51-12.md b/session_logs/session_2025-06-07_20-51-12.md deleted file mode 100644 index 694274e..0000000 --- a/session_logs/session_2025-06-07_20-51-12.md +++ /dev/null @@ -1,24 +0,0 @@ -# Session Summary - 2025-06-07_20-51-12 - -## Timestamp -2025-06-07 20:51:12 UTC - -## Projects Status -- **ai**: claude.md ✅ README.md ✅ -- **bot**: claude.md ❌ README.md ✅ -- **card**: claude.md ✅ README.md ✅ -- **game**: claude.md ✅ README.md ✅ -- **gpt**: claude.md ✅ README.md ✅ -- **moji**: claude.md ✅ README.md ✅ -- **os**: claude.md ✅ README.md ✅ -- **shell**: claude.md ✅ README.md ✅ -- **verse**: claude.md ✅ README.md ✅ - - -## Next Actions -- Documentation sync completed -- README files updated -- Metadata refreshed - ---- -*Generated by aigpt session-end processing* diff --git a/session_logs/session_2025-06-07_20-58-56.md b/session_logs/session_2025-06-07_20-58-56.md deleted file mode 100644 index 539d434..0000000 --- a/session_logs/session_2025-06-07_20-58-56.md +++ /dev/null @@ -1,24 +0,0 @@ -# Session Summary - 2025-06-07_20-58-56 - -## Timestamp -2025-06-07 20:58:56 UTC - -## Projects Status -- **ai**: claude.md ✅ README.md ✅ -- **bot**: claude.md ❌ README.md ✅ -- **card**: claude.md ✅ README.md ✅ -- **game**: claude.md ✅ README.md ✅ -- **gpt**: claude.md ✅ README.md ✅ -- **moji**: claude.md ✅ README.md ✅ -- **os**: claude.md ✅ README.md ✅ -- **shell**: claude.md ✅ README.md ✅ -- **verse**: claude.md ✅ README.md ✅ - - -## Next Actions -- Documentation sync completed -- README files updated -- Metadata refreshed - ---- -*Generated by aigpt session-end processing*