{"_id":"@berlysia/ralf","_rev":"2-3d8651170f56977dade9d92d6d7e84df","name":"@berlysia/ralf","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"@berlysia/ralf","version":"0.0.1","license":"MIT","_id":"@berlysia/ralf@0.0.1","maintainers":[{"name":"berlysia","email":"berlysia@gmail.com"}],"bin":{"ralf":"dist/index.js"},"dist":{"shasum":"ceb5bb49043b0c134f3b46dd8aa34c7ac2c4940b","tarball":"https://registry.npmjs.org/@berlysia/ralf/-/ralf-0.0.1.tgz","fileCount":5,"integrity":"sha512-RYlTUxXjUvaYdZJgsnVJWgMspSliVQ7lf6M2VE40CXcYIBQI0Y2nh4/Ff5luN2lQCifhf5DM/DOTb670PzjDnQ==","signatures":[{"sig":"MEYCIQDXalQno4r7rDWnmxpRHDWWMX0GPk7x3bSZIF9+zJjheAIhALtON/CjgwvNQRq4NWwcJ9tfc7Y+kMlk7XVq8LKZYUFf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":532653},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"node src/index.ts","lint":"tsgo --noEmit && tsgo --project tsconfig.test.json","test":"vitest run","build":"pnpm run generate:schema && tsup src/index.ts --format esm --dts --clean","start":"pnpm run build && node dist/index.js","test:watch":"vitest","link:global":"pnpm run build && pnpm link --global","bench:context":"node scripts/bench-context-load.ts","unlink:global":"pnpm unlink --global","generate:schema":"node scripts/generate-schema.ts","checkpoint:watch":"node scripts/checkpoint-watch.ts","checkpoint:replay":"node scripts/checkpoint-replay.ts"},"_npmUser":{"name":"berlysia","email":"berlysia@gmail.com"},"_npmVersion":"11.6.2","description":"Recursive Autonomous Loop Framework — AI-driven self-improvement orchestrator","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"4.3.6","yaml":"2.8.2","chalk":"^5.3.0","gunshi":"0.28.0","@openai/codex-sdk":"0.98.0","@anthropic-ai/claude-agent-sdk":"0.2.37"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.0.0","@vitest/coverage-v8":"2.1.9","@typescript/native-preview":"7.0.0-dev.20260208.1"},"_npmOperationalInternal":{"tmp":"tmp/ralf_0.0.1_1773168649099_0.5400278857392018","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@berlysia/ralf","version":"0.0.6","description":"Recursive Autonomous Loop Framework — AI-driven self-improvement orchestrator","keywords":["tanstack-intent"],"license":"MIT","bin":{"ralf":"dist/index.js"},"type":"module","publishConfig":{"access":"public"},"scripts":{"generate:schema":"node scripts/generate-schema.ts","build":"pnpm run generate:schema && tsup src/index.ts --format esm --dts --clean","dev":"node src/index.ts","start":"pnpm run build && node dist/index.js","test":"vitest run","test:watch":"vitest","lint":"oxlint && tsgo --noEmit && tsgo --project tsconfig.test.json","bench:context":"node scripts/bench-context-load.ts","checkpoint:watch":"node scripts/checkpoint-watch.ts","checkpoint:replay":"node scripts/checkpoint-replay.ts","link:global":"pnpm run build && pnpm link --global","unlink:global":"pnpm unlink --global","format":"prettier --write .","format:check":"prettier --check .","release":"pnpm lint && pnpm build && pnpm format:check && pnpm test && npm version"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"0.2.37","@openai/codex-sdk":"0.98.0","chalk":"^5.3.0","gunshi":"0.28.0","yaml":"2.8.2","zod":"4.3.6"},"devDependencies":{"@tanstack/intent":"0.0.14","@types/node":"^20.0.0","@typescript/native-preview":"7.0.0-dev.20260208.1","@vitest/coverage-v8":"2.1.9","lefthook":"2.1.2","oxlint":"1.51.0","prettier":"3.8.1","tsup":"^8.0.0","typescript":"^5.5.0","vitest":"^2.0.0"},"engines":{"node":">=22"},"packageManager":"pnpm@10.27.0","gitHead":"3b75d32527bbb4047b7cc52b15a4f6f83956dd68","_id":"@berlysia/ralf@0.0.6","_nodeVersion":"22.22.1","_npmVersion":"11.12.0","dist":{"integrity":"sha512-fwrfGCpkhO5+cC7k5RymLIRvSCY1mI4sOSYUOkz0Nx8dPAVUx2w5sJV+crbFYkqWQCrBGJstRnSy1ait28BLuA==","shasum":"2754a905b7670520704ae86464ae88c8f2ff13b4","tarball":"https://registry.npmjs.org/@berlysia/ralf/-/ralf-0.0.6.tgz","fileCount":19,"unpackedSize":596960,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEjekkoaneigaMOR2PbOwvw48nAoZq8PsKp3YKaQcDbRAiAVeEckdlFH52/EHvxz8M7KTLaKROZRsgD7eLKJz7fp1w=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:087b8c5b-2bf3-430f-a419-557d04f4e565"}},"directories":{},"maintainers":[{"name":"berlysia","email":"berlysia@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ralf_0.0.6_1774115233843_0.0012727695190950516"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T18:50:48.941Z","modified":"2026-03-21T17:47:14.176Z","0.0.1":"2026-03-10T18:50:49.246Z","0.0.6":"2026-03-21T17:47:14.067Z"},"license":"MIT","description":"Recursive Autonomous Loop Framework — AI-driven self-improvement orchestrator","maintainers":[{"name":"berlysia","email":"berlysia@gmail.com"}],"readme":"# RALF — Recursive Autonomous Loop Framework\n\nロールベースの自己改善フレームワーク。Claude Code / Codex 等のコーディングエージェントをオーケストレーションし、Product / Architect / Engineer / Reviewer の4ロール + Director で改善ループを回す CLIツール。\n\n## Features\n\n- **ロールベース実行** — Product / Architect / Engineer / Reviewer の4ロールがそれぞれ専門的視点で改善を提案・実行\n- **Director** — LLMベースのウォッチドッグがロール実行を評価し、次のアクションを動的に決定\n- **エージェント抽象化** — `IAgentAdapter` インターフェースにより Claude Code / Codex / カスタムツールを差し替え可能\n- **判断ポイント** — `<judgment_needed>` タグでエージェントが一時停止し、人間に設計判断・リスク確認を委ねる\n- **エンハンスメントキュー** — `<enhancement_proposal>` タグでループを止めずに改善提案を蓄積・レビュー\n- **トピックバックログ** — フォーカスや探索トピックを park / pick で管理\n- **段階的モデルルーティング** — ロール別に異なるモデルを使い分け\n- **永続化** — JSON Lines 形式で履歴・判断・提案を保存\n- **リトライ・タイムアウト** — エージェント呼び出しの耐障害性\n\n## Requirements\n\n- Node.js >= 20\n- pnpm\n- [Claude Code](https://claude.com/claude-code) CLI（エージェントとして使用する場合）\n\n## Install\n\n```bash\npnpm install\npnpm build\n```\n\n## Usage\n\n```bash\n# 基本実行（4ロール全て）\nralf run --codebase ./src\n\n# フォーカスを指定\nralf run --focus \"error handling is inconsistent across modules\"\n\n# ロール選択・バジェット\nralf run --roles product,architect,engineer,reviewer\nralf run --role-budget 30\n\n# コスト上限付きで実行（SDK アダプタがデフォルト）\nralf run --max-budget-usd 5.00\n\n# モデル指定\nralf run --model claude-sonnet-4-5-20250929\n\n# Director無効化（コスト節約）\nralf run --no-director\n\n# 複数スプリント連続実行\nralf run --sprints 3\n\n# 承認済み提案の一括適用（blitz）\nralf run --blitz 5\n\n# トピックバックログからフォーカスを選択\nralf run --from-backlog\n\n# エンハンスメント提案管理\nralf proposal add --title \"改善タイトル\" --category performance\nralf proposal list --status approved\nralf proposal review\nralf proposal apply\n\n# 週次レポート生成\nralf report\n\n# プロジェクトヘルスダッシュボード\nralf status\n\n# トピックバックログ管理\nralf topic list\nralf topic park\nralf topic pick\n\n# フレームワーク自己改善（MEP）\nralf self-improve list\nralf self-improve review\n\n# スプリントログの可視化\nralf visualize\n```\n\n### `ralf run` 主要オプション\n\n| オプション          | デフォルト  | 説明                                   |\n| ------------------- | ----------- | -------------------------------------- |\n| `--codebase`        | `./src`     | 対象コードベースのパス                 |\n| `--focus`           | -           | 改善フォーカス指示                     |\n| `--roles`           | 全ロール    | 実行するロール（カンマ区切り）         |\n| `--role-budget`     | -           | ロール呼び出し上限                     |\n| `--model`           | _(default)_ | 使用するモデル                         |\n| `--adapter`         | `sdk`       | エージェント実行方式（`sdk` / `cli`）  |\n| `--sdk-provider`    | `claude`    | SDKプロバイダ（`claude` / `codex`）    |\n| `--max-budget-usd`  | -           | 最大予算USD                            |\n| `--no-director`     | -           | Director無効化                         |\n| `--sprints`         | `1`         | 連続実行スプリント数                   |\n| `--blitz`           | `0`         | blitz で適用する提案数                 |\n| `--cycles`          | `1`         | sprint+blitz サイクル数                |\n| `--auto-commit`     | `false`     | スプリント後に自動コミット             |\n| `--from-backlog`    | -           | トピックバックログからフォーカスを選択 |\n| `--no-enhancements` | -           | エンハンスメント検出を無効化           |\n\n### 設定ファイル配置\n\n設定ファイルは `<projectRoot>/.config/ralf/` に集約。\n\n- `config.yaml` — run コマンド既定値（`language` など）と `models` 設定\n- `project-context.md` — プロジェクト文脈の明示指定\n- `work-guidance.md` — 実行時ガイダンス\n\n### Config YAML 例\n\n`.config/ralf/config.yaml`\n\n```yaml\nlanguage: ja\nmodels:\n  default: claude-sonnet-4-6\n  roles:\n    engineer: claude-opus-4-6\n```\n\n## Design\n\n詳細な設計思想は [docs/DESIGN.md](docs/DESIGN.md) を参照。\n\n### 実行モデル\n\n```\n基本:   Agent SDK の query() で流す（デフォルト）。--adapter cli で CLI版にフォールバック可。\nロール: Product → Architect → Engineer → Reviewer の順にロールを実行。\n        Director が各ロール実行後の結果を評価し、追加ロール呼び出しを判断。\n例外1:  エージェントが <judgment_needed> を出力 → 一時停止 → 人間に判断を求める → 回答を注入して再開\n例外2:  エージェントが <enhancement_proposal> を出力 → キューに投函 → ループは止めず続行\n```\n\n### 設計原則\n\n1. **エージェントは差し替え可能** — `IAgentAdapter` を実装すれば何でも繋がる\n2. **ロールは関心の分離** — 各ロールが専門的視点で改善を提案・実行\n3. **Director は監視役** — LLMベースのウォッチドッグが次のアクションを動的に決定\n4. **人間が最終判断者** — 自動化は提案まで。破壊的変更・設計判断は必ず人間に聞く\n\n## Development\n\n```bash\n# テスト実行\npnpm test\n\n# 型チェック\npnpm lint\n\n# 開発実行\npnpm dev\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","keywords":["tanstack-intent"]}