Skip to content

Commit

Permalink
Merge branch 'release/5.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Sunwood-ai-labs committed Jun 14, 2024
2 parents 8db3928 + 14af4ce commit 8d0774d
Show file tree
Hide file tree
Showing 11 changed files with 481 additions and 209 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -166,3 +166,4 @@ SourceSageAssets
temp/
.SourceSageAssets
.Gaiah.md
issue_response.txt
223 changes: 21 additions & 202 deletions README.md

Large diffs are not rendered by default.

54 changes: 54 additions & 0 deletions docs/COMMITCRAFT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<p align="center">
<img src="https://raw.githubusercontent.com/Sunwood-ai-labs/SourceSage/main/docs/icon/head_icon5.png" width="100%">
</p>

# CommitCraft:AIを活用した効率的なコミットメッセージ生成

CommitCraftは、開発中のステージされた変更を追跡し、AIを活用して適切なコミットメッセージを自動生成するツールです。これにより、開発者はコミットの内容を正確に記述することができ、プロジェクトの変更履歴をより明確に管理できます。

## 使用方法

1. SourceSageのCLIコマンドから、以下のようにパラメータを指定してCommitCraftを実行します。

```bash
sourcesage --mode CommitCraft --model-name "使用するAIモデル名" --stage-info-file "ステージ情報のマークダウンファイルパス" --commit-craft-output "CommitCraftの出力ディレクトリ" --llm-output "LLMの出力ファイル名"
```

2. CommitCraftは指定されたステージ情報のマークダウンファイルを読み込み、AIを使用して適切なコミットメッセージを自動的に生成します。

3. 生成されたコミットメッセージは、指定された出力ディレクトリ内のLLMの出力ファイルに保存されます。

## パラメータ

- `--model-name`: 使用するAIモデル名を指定します(デフォルトは`None`)。
- `--stage-info-file`: ステージ情報のマークダウンファイルのパスを指定します。
- `--commit-craft-output`: CommitCraftの出力ディレクトリを指定します。
- `--llm-output`: LLMの出力ファイル名を指定します。

## サンプル

以下は、SourceSageのCLIコマンドを使用してCommitCraftを実行するサンプルです。

```bash
sourcesage --mode CommitCraft --model-name "gemini/gemini-1.5-pro-latest" --stage-info-file ".SourceSageAssets\COMMIT_CRAFT/STAGE_INFO\STAGE_INFO_AND_PROMT_GAIAH_B.md" --commit-craft-output ".SourceSageAssets/COMMIT_CRAFT/" --llm-output "llm_output.md"
```

このコマンドでは、以下のパラメータを指定しています。

- `--model-name "gemini/gemini-1.5-pro-latest"`: 使用するAIモデル名を"gemini/gemini-1.5-pro-latest"に指定します。
- `--stage-info-file ".SourceSageAssets\COMMIT_CRAFT/STAGE_INFO\STAGE_INFO_AND_PROMT_GAIAH_B.md"`: ステージ情報のマークダウンファイルのパスを指定します。
- `--commit-craft-output ".SourceSageAssets/COMMIT_CRAFT/"`: CommitCraftの出力ディレクトリを指定します。
- `--llm-output "llm_output.md"`: LLMの出力ファイル名を"llm_output.md"に指定します。

CommitCraftは、指定されたステージ情報のマークダウンファイルを読み込み、AIを使用して適切なコミットメッセージを自動生成します。生成されたコミットメッセージは、指定された出力ディレクトリ内のLLMの出力ファイルに保存されます。

以下は、CommitCraftで使用されるステージ情報のマークダウンファイルのサンプルです。

- [ステージ情報とプロンプトのサンプル](../SAMPLE/SAMPLE_STAGE_INFO_AND_PROMT.md)
- [絵文字を使用したサンプル](../SAMPLE/SAMPLE_STAGE_INFO_AND_PROMT_EMOJI.md)
- [Gaiah用のサンプル](../SAMPLE/SAMPLE_STAGE_INFO_AND_PROMT_GAIAH.md)
- [Issueとマージされたサンプル](../SAMPLE/SAMPLE_STAGE_INFO_AND_ISSUES_AND_PROMT.md)

これらのサンプルファイルは、CommitCraftがAIを使用してコミットメッセージを生成する際の入力として使用されます。開発者は、これらのサンプルを参考にしてステージ情報のマークダウンファイルを作成することができます。

CommitCraftを使用することで、開発者はコミットメッセージを考える負担を軽減し、一貫性のある適切なコミットメッセージを自動的に生成できます。これにより、プロジェクトの変更履歴がより明確になり、コードレビューやコラボレーションがスムーズに行えるようになります。
61 changes: 61 additions & 0 deletions docs/DOCUMIND.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

<p align="center">
<img src="https://raw.githubusercontent.com/Sunwood-ai-labs/SourceSage/main/docs/icon/head_icon7.png" width="100%">
</p>

# DocuMind:AIを活用した効率的なリリースノート生成

DocuMindは、リリース後のプロジェクトの統合とドキュメント化を支援するツールです。SourceSageが生成するプロジェクトの概要と、自動生成されたGitの変更履歴を組み合わせることで、プロジェクトの全体像を明確に把握できます。これにより、開発者はプロジェクトのドキュメントを効率的に作成し、メンテナンス性を向上させることができます。

## 使用方法

1. SourceSageのCLIコマンドから、以下のようにパラメータを指定してDocuMindを実行します。

```bash
sourcesage --mode DocuMind --docuMind-model "使用するAIモデル名" --docuMind-db "DocuMindのデータベースファイルのパス" --docuMind-release-report "リリースレポートのパス" --docuMind-changelog "変更履歴のパス" --docuMind-output "リリースノートの出力パス" --docuMind-prompt-output "リリースノート作成のプロンプト" --repo-name "リポジトリの名前" --repo-version "リポジトリのバージョン"
```

2. DocuMindは指定されたデータベースファイル、リリースレポート、変更履歴を読み込み、AIを使用してリリースノートを自動的に生成します。

3. 生成されたリリースノートは、指定された出力パスに保存されます。また、リリースノート作成のプロンプトも別ファイルに保存されます。

## パラメータ

- `--docuMind-model`: 使用するAIモデル名を指定します。
- `--docuMind-db`: DocuMindのデータベースファイルのパスを指定します。
- `--docuMind-release-report`: リリースレポートのパスを指定します。
- `--docuMind-changelog`: 変更履歴のパスを指定します。
- `--docuMind-output`: リリースノートの出力パスを指定します。
- `--docuMind-prompt-output`: リリースノート作成のプロンプトの出力パスを指定します。
- `--repo-name`: リポジトリの名前を指定します。
- `--repo-version`: リポジトリのバージョンを指定します。

## サンプル

以下は、SourceSageのCLIコマンドを使用してDocuMindを実行するサンプルです。

```bash
sourcesage --mode DocuMind --docuMind-model "gemini/gemini-1.5-pro-latest" --docuMind-db ".SourceSageAssets\DOCUMIND\Repository_summary.md" --docuMind-release-report ".SourceSageAssets\RELEASE_REPORT\Report_v5.0.2.md" --docuMind-changelog ".SourceSageAssets\Changelog\CHANGELOG_release_5.0.2.md" --docuMind-output ".SourceSageAssets/DOCUMIND/RELEASE_NOTES_v5.0.2.md" --docuMind-prompt-output ".SourceSageAssets/DOCUMIND/_PROMPT_v5.0.2.md" --repo-name "SourceSage" --repo-version "v0.5.0"
```

このコマンドでは、以下のパラメータを指定しています。

- `--docuMind-model "gemini/gemini-1.5-pro-latest"`: 使用するAIモデル名を"gemini/gemini-1.5-pro-latest"に指定します。
- `--docuMind-db ".SourceSageAssets\DOCUMIND\Repository_summary.md"`: DocuMindのデータベースファイルのパスを指定します。
- `--docuMind-release-report ".SourceSageAssets\RELEASE_REPORT\Report_v5.0.2.md"`: リリースレポートのパスを指定します。
- `--docuMind-changelog ".SourceSageAssets\Changelog\CHANGELOG_release_5.0.2.md"`: 変更履歴のパスを指定します。
- `--docuMind-output ".SourceSageAssets/DOCUMIND/RELEASE_NOTES_v5.0.2.md"`: リリースノートの出力パスを指定します。
- `--docuMind-prompt-output ".SourceSageAssets/DOCUMIND/_PROMPT_v5.0.2.md"`: リリースノート作成のプロンプトの出力パスを指定します。
- `--repo-name "SourceSage"`: リポジトリの名前を"SourceSage"に指定します。
- `--repo-version "v0.5.0"`: リポジトリのバージョンを"v0.5.0"に指定します。

DocuMindは、指定されたデータベースファイル、リリースレポート、変更履歴を読み込み、AIを使用してリリースノートを自動的に生成します。生成されたリリースノートは、指定された出力パスに保存されます。また、リリースノート作成のプロンプトも別ファイルに保存されます。

以下は、DocuMindで使用されるデータベースファイルと変更履歴のサンプルです。

- [DocuMindのサンプル](./SAMPLE/SAMPLE_DocuMind.md)
- [変更履歴のサンプル](./SAMPLE/SAMPLE_CHANGELOG_release_4.1.0.md)

これらのサンプルファイルは、DocuMindがAIを使用してリリースノートを生成する際の入力として使用されます。開発者は、これらのサンプルを参考にしてデータベースファイルや変更履歴を作成することができます。

DocuMindを使用することで、開発者はドキュメント作成の負担を軽減し、常に最新の状態を反映したドキュメントを自動的に生成できます。これにより、プロジェクトのメンテナンス性が向上し、開発者はより重要なタスクに集中できるようになります。
50 changes: 50 additions & 0 deletions docs/ISSUEWISE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<p align="center">
<img src="https://raw.githubusercontent.com/Sunwood-ai-labs/SourceSage/main/docs/icon/head_icon4.png" width="100%">
</p>

# IssueWize:AIを活用した効率的なIssue作成

IssueWizeは、開発者が提供するIssueの概要から、AIを活用して詳細なIssueを自動的に作成するツールです。これにより、開発者はIssueの作成にかかる時間を大幅に削減し、プロジェクトの課題を効率的に管理することができます。

## 使用方法

1. SourceSageのCLIコマンドから、以下のようにパラメータを指定してIssueWizeを実行します。

```bash
sourcesage --mode IssueWize --issue-summary "Issueの概要" --project-name "プロジェクト名" --milestone-name "マイルストーン名" --repo-overview-file "リポジトリ概要のマークダウンファイルパス" --issuewize-model "使用するAIモデル名"
```

2. IssueWizeは指定されたIssueの概要とリポジトリ概要を元に、AIを使用して詳細なIssueを自動的に作成します。

3. 作成されたIssueには、タイトル、本文、ラベル、プロジェクト、マイルストーンが設定されます。

4. Issueの本文には、AIが生成した詳細な要件定義やペルソナなどが記載されたマークダウンが含まれます。

## パラメータ

- `--issue-summary`: Issueの概要を指定します。
- `--project-name`: プロジェクト名を指定します。
- `--milestone-name`: マイルストーン名を指定します。
- `--repo-overview-file`: リポジトリ概要のマークダウンファイルのパスを指定します。
- `--issuewize-model`: 使用するAIモデル名を指定します(デフォルトは`gemini/gemini-1.5-flash`)。

## サンプル

以下はSourceSageのCLIコマンドを使用してIssueWizeを実行するサンプルです。

```bash
sourcesage --mode IssueWize --issue-summary "IssueWize.pyをSourceSageのCLIコマンドから実行できるようにコマンドを追加する。SourceSageのCLIコマンドからパラメータを指定できるようにしたい(repo_overview_fileやモデル名などのパラメータ)" --project-name "TaskSphere" --milestone-name "Sprint01" --repo-overview-file ".SourceSageAssets\DOCUMIND\Repository_summary.md" --issuewize-model "gemini/gemini-1.5-flash"
```

このコマンドでは、以下のパラメータを指定しています。

- `--mode IssueWize`: IssueWizeモードを実行することを指定します。
- `--issue-summary "..."`: Issueの概要を指定します。ここでは、IssueWize.pyをSourceSageのCLIコマンドから実行できるようにするための要件が記載されています。
- `--project-name "TaskSphere"`: プロジェクト名を"TaskSphere"に指定します。
- `--milestone-name "Sprint01"`: マイルストーン名を"Sprint01"に指定します。
- `--repo-overview-file ".SourceSageAssets\DOCUMIND\Repository_summary.md"`: リポジトリ概要のマークダウンファイルのパスを指定します。
- `--issuewize-model "gemini/gemini-1.5-flash"`: 使用するAIモデル名を"gemini/gemini-1.5-flash"に指定します。

このコマンドを実行すると、IssueWizeは指定されたパラメータを使用して、AIによる詳細なIssueの自動生成を行います。生成されたIssueには、タイトル、本文、ラベル、プロジェクト、マイルストーンが設定されます。

開発者は、このようにSourceSageのCLIコマンドからIssueWizeを実行することで、Issueの作成にかかる時間を大幅に削減し、効率的なプロジェクト管理を実現できます。
40 changes: 40 additions & 0 deletions docs/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

# 使用方法

SourceSageを使用するには、まずPythonのパッケージマネージャーであるpipを使ってインストールします。

## セットアップ

```bash
pip install sourcesage
```

## 基本的な使い方

SourceSageをプロジェクトで使用するには、以下の手順に従ってください:

1. ターミナルまたはコマンドプロンプトを開きます。
2. `cd`コマンドを使って、解析対象のプロジェクトのルートディレクトリに移動します。
3. 次に、以下のコマンドを実行してSourceSageを起動します:
```bash
sourcesage
```
4. SourceSageが実行されると、`SourceSageAssets`ディレクトリに各種ファイルが生成されます。

## リポジトリ情報の取得

デフォルトでは、SourceSageは現在のディレクトリをプロジェクトのルートとして解析します。ただし、GitHub上のリポジトリのIssueも取得したい場合は、以下のようにリポジトリのオーナー名とリポジトリ名をコマンドライン引数で指定します:

```bash
sourcesage --owner Sunwood-ai-labs --repository SourceSage
```

## 除外ファイルの指定

作業ディレクトリに`.SourceSageignore`ファイルを作成することで、任意のファイルやディレクトリを処理から除外できます。このファイルには、除外したいファイルやディレクトリのパターンを1行ずつ記述します。

`.SourceSageignore`ファイルを使用する場合は、以下のようにコマンドライン引数で指定します:

```bash
sourcesage --owner Sunwood-ai-labs --repository SourceSage --ignore-file .SourceSageignore
```
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
name='sourcesage',

# パッケージのバージョン
version='5.1.1',
version='5.2.0',

# パッケージに含めるモジュールを自動的に探す
packages=find_packages(),
Expand Down
26 changes: 24 additions & 2 deletions sourcesage/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from .config.constants import Constants
from .modules.CommitCraft import CommitCraft
from .modules.DocuMind import DocuMind
from .modules.IssueWize import IssueWize

logger.configure(
handlers=[
Expand All @@ -34,8 +35,7 @@ def main():
parser.add_argument('--repo', help='リポジトリへのパス', default='./')
parser.add_argument('--owner', help='リポジトリのオーナー', default='Sunwood-ai-labs')
parser.add_argument('--repository', help='リポジトリの名前', default='SourceSage')
parser.add_argument('--mode', nargs='+', help='実行するモード: Sage, GenerateReport, CommitCraft, DocuMind, または all', default='all')

parser.add_argument('--mode', nargs='+', help='実行するモード: Sage, GenerateReport, CommitCraft, DocuMind, IssueWize, またはall', default='all')
# ==============================================
# 変更履歴の設定
#
Expand Down Expand Up @@ -73,6 +73,15 @@ def main():
parser.add_argument('--output-path', type=str, default=".SourceSageAssets/RELEASE_REPORT/", help='Markdownレポートの保存先フォルダ')
parser.add_argument('--report-file-name', type=str, default="Report_{latest_tag}.md", help='Markdownレポートのファイル名。{latest_tag}は最新のタグに置換されます。')

# ==============================================
# IssueWize用の引数を追加
#
parser.add_argument('--issue-summary', type=str, default=None, help='Issueの概要')
parser.add_argument('--project-name', type=str, default=None, help='IssueWizeのプロジェクト名')
parser.add_argument('--milestone-name', type=str, default=None, help='IssueWizeのマイルストーン名')
parser.add_argument('--repo-overview-file', type=str, default=None, help='リポジトリ概要のマークダウンファイルパス')
parser.add_argument('--issuewize-model', type=str, default=None, help='IssueWizeで使用するモデル名')

# ==============================================
# CommitCraft用の引数を追加
#
Expand Down Expand Up @@ -119,6 +128,7 @@ def main():
key = key.replace("-", "_")
logger.debug(">> {: >30} : {: <20}".format(str(key), str(value)))


# -----------------------------------------------
# SourceSageの実行
if 'all' in args.mode or 'Sage' in args.mode:
Expand All @@ -127,6 +137,18 @@ def main():
args.changelog_start_tag, args.changelog_end_tag)
sourcesage.run()

# -----------------------------------------------
# IssueWizeを使用してIssueを作成
#
if 'all' in args.mode or 'IssueWize' in args.mode:
issuewize = IssueWize(model=args.issuewize_model)
if args.issue_summary and args.project_name and args.repo_overview_file:
logger.info("IssueWizeを使用してIssueを作成します...")
issuewize.create_optimized_issue(args.issue_summary, args.project_name, args.milestone_name, args.repo_overview_file)
else:
logger.warning("IssueWizeの実行に必要なパラメータが指定されていません。--issue-summary, --project-name, --repo-overview-fileを指定してください。")


# -----------------------------------------------
# レポートの生成
#
Expand Down
1 change: 1 addition & 0 deletions sourcesage/modules/GitCommander.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import subprocess

# logger.level("SUBCMD", no=25, color="<green>", icon="✓")
logger.level("SUBPROCESS", no=15, color="<cyan>", icon="🔍")

def run_command(command, cwd=None, check=True, preview=True):
"""
Expand Down
Loading

0 comments on commit 8d0774d

Please sign in to comment.