diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml
new file mode 100644
index 0000000..a74ef2b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/1.bug.yml
@@ -0,0 +1,173 @@
+name: Bug report 🐛
+description: Create a bug report for AutoGPT.
+labels: ['status: needs triage']
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ### ⚠️ Before you continue
+ * Check out our [backlog], [roadmap] and join our [discord] to discuss what's going on
+ * If you need help, you can ask in the [discussions] section or in [#tech-support]
+ * **Thoroughly search the [existing issues] before creating a new one**
+ * Read our [wiki page on Contributing]
+ [backlog]: https://github.com/orgs/Significant-Gravitas/projects/1
+ [roadmap]: https://github.com/orgs/Significant-Gravitas/projects/2
+ [discord]: https://discord.gg/autogpt
+ [discussions]: https://github.com/Significant-Gravitas/AutoGPT/discussions
+ [#tech-support]: https://discord.com/channels/1092243196446249134/1092275629602394184
+ [existing issues]: https://github.com/Significant-Gravitas/AutoGPT/issues?q=is%3Aissue
+ [wiki page on Contributing]: https://github.com/Significant-Gravitas/AutoGPT/wiki/Contributing
+
+ - type: checkboxes
+ attributes:
+ label: ⚠️ Search for existing issues first ⚠️
+ description: >
+ Please [search the history](https://github.com/Significant-Gravitas/AutoGPT/issues)
+ to see if an issue already exists for the same problem.
+ options:
+ - label: I have searched the existing issues, and there is no existing issue for my problem
+ required: true
+
+ - type: markdown
+ attributes:
+ value: |
+ Please confirm that the issue you have is described well and precise in the title above ⬆️.
+ A good rule of thumb: What would you type if you were searching for the issue?
+
+ For example:
+ BAD - my AutoGPT keeps looping
+ GOOD - After performing execute_python_file, AutoGPT goes into a loop where it keeps trying to execute the file.
+
+ ⚠️ SUPER-busy repo, please help the volunteer maintainers.
+ The less time we spend here, the more time we can spend building AutoGPT.
+
+ Please help us help you by following these steps:
+ - Search for existing issues, adding a comment when you have the same or similar issue is tidier than "new issue" and
+ newer issues will not be reviewed earlier, this is dependent on the current priorities set by our wonderful team
+ - Ask on our Discord if your issue is known when you are unsure (https://discord.gg/autogpt)
+ - Provide relevant info:
+ - Provide commit-hash (`git rev-parse HEAD` gets it) if possible
+ - If it's a pip/packages issue, mention this in the title and provide pip version, python version
+ - If it's a crash, provide traceback and describe the error you got as precise as possible in the title.
+
+ - type: dropdown
+ attributes:
+ label: Which Operating System are you using?
+ description: >
+ Please select the operating system you were using to run AutoGPT when this problem occurred.
+ options:
+ - Windows
+ - Linux
+ - MacOS
+ - Docker
+ - Devcontainer / Codespace
+ - Windows Subsystem for Linux (WSL)
+ - Other
+ validations:
+ required: true
+ nested_fields:
+ - type: text
+ attributes:
+ label: Specify the system
+ description: Please specify the system you are working on.
+
+ - type: dropdown
+ attributes:
+ label: Which version of AutoGPT are you using?
+ description: |
+ Please select which version of AutoGPT you were using when this issue occurred.
+ If you downloaded the code from the [releases page](https://github.com/Significant-Gravitas/AutoGPT/releases/) make sure you were using the latest code.
+ **If you weren't please try with the [latest code](https://github.com/Significant-Gravitas/AutoGPT/releases/)**.
+ If installed with git you can run `git branch` to see which version of AutoGPT you are running.
+ options:
+ - Latest Release
+ - Stable (branch)
+ - Master (branch)
+ validations:
+ required: true
+
+ - type: dropdown
+ attributes:
+ label: What LLM Provider do you use?
+ description: >
+ If you are using AutoGPT with `SMART_LLM=gpt-3.5-turbo`, your problems may be caused by
+ the [limitations](https://github.com/Significant-Gravitas/AutoGPT/issues?q=is%3Aissue+label%3A%22AI+model+limitation%22) of GPT-3.5.
+ options:
+ - Azure
+ - Groq
+ - Anthropic
+ - Llamafile
+ - Other (detail in issue)
+ validations:
+ required: true
+
+ - type: dropdown
+ attributes:
+ label: Which area covers your issue best?
+ description: >
+ Select the area related to the issue you are reporting.
+ options:
+ - Installation and setup
+ - Memory
+ - Performance
+ - Prompt
+ - Commands
+ - Plugins
+ - AI Model Limitations
+ - Challenges
+ - Documentation
+ - Logging
+ - Agents
+ - Other
+ validations:
+ required: true
+ autolabels: true
+ nested_fields:
+ - type: text
+ attributes:
+ label: Specify the area
+ description: Please specify the area you think is best related to the issue.
+
+ - type: input
+ attributes:
+ label: What commit or version are you using?
+ description: It is helpful for us to reproduce to know what version of the software you were using when this happened. Please run `git log -n 1 --pretty=format:"%H"` to output the full commit hash.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Describe your issue.
+ description: Describe the problem you are experiencing. Try to describe only the issue and phrase it short but clear. ⚠️ Provide NO other data in this field
+ validations:
+ required: true
+
+ #Following are optional file content uploads
+ - type: markdown
+ attributes:
+ value: |
+ ⚠️The following is OPTIONAL, please keep in mind that the log files may contain personal information such as credentials.⚠️
+
+ "The log files are located in the folder 'logs' inside the main AutoGPT folder."
+
+ - type: textarea
+ attributes:
+ label: Upload Activity Log Content
+ description: |
+ Upload the activity log content, this can help us understand the issue better.
+ To do this, go to the folder logs in your main AutoGPT folder, open activity.log and copy/paste the contents to this field.
+ ⚠️ The activity log may contain personal data given to AutoGPT by you in prompt or input as well as
+ any personal information that AutoGPT collected out of files during last run. Do not add the activity log if you are not comfortable with sharing it. ⚠️
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Upload Error Log Content
+ description: |
+ Upload the error log content, this will help us understand the issue better.
+ To do this, go to the folder logs in your main AutoGPT folder, open error.log and copy/paste the contents to this field.
+ ⚠️ The error log may contain personal data given to AutoGPT by you in prompt or input as well as
+ any personal information that AutoGPT collected out of files during last run. Do not add the activity log if you are not comfortable with sharing it. ⚠️
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/2.feature.yml b/.github/ISSUE_TEMPLATE/2.feature.yml
new file mode 100644
index 0000000..d673c1f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/2.feature.yml
@@ -0,0 +1,28 @@
+name: Feature request 🚀
+description: Suggest a new idea for AutoGPT!
+labels: ['status: needs triage']
+body:
+ - type: markdown
+ attributes:
+ value: |
+ First, check out our [wiki page on Contributing](https://github.com/Significant-Gravitas/AutoGPT/wiki/Contributing)
+ Please provide a searchable summary of the issue in the title above ⬆️.
+ - type: checkboxes
+ attributes:
+ label: Duplicates
+ description: Please [search the history](https://github.com/Significant-Gravitas/AutoGPT/issues) to see if an issue already exists for the same problem.
+ options:
+ - label: I have searched the existing issues
+ required: true
+ - type: textarea
+ attributes:
+ label: Summary 💡
+ description: Describe how it should work.
+ - type: textarea
+ attributes:
+ label: Examples 🌈
+ description: Provide a link to other implementations, or screenshots of the expected behavior.
+ - type: textarea
+ attributes:
+ label: Motivation 🔦
+ description: What are you trying to accomplish? How has the lack of this feature affected you? Providing context helps us come up with a solution that is more useful in the real world.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..9b348b5
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,38 @@
+
+
+### Changes 🏗️
+
+
+
+### Checklist 📋
+
+#### For code changes:
+- [ ] I have clearly listed my changes in the PR description
+- [ ] I have made a test plan
+- [ ] I have tested my changes according to the test plan:
+
+ - [ ] ...
+
+
+ Example test plan
+
+ - [ ] Create from scratch and execute an agent with at least 3 blocks
+ - [ ] Import an agent from file upload, and confirm it executes correctly
+ - [ ] Upload agent to marketplace
+ - [ ] Import an agent from marketplace and confirm it executes correctly
+ - [ ] Edit an agent from monitor, and confirm it executes correctly
+
+
+#### For configuration changes:
+- [ ] `.env.example` is updated or already compatible with my changes
+- [ ] `docker-compose.yml` is updated or already compatible with my changes
+- [ ] I have included a list of my configuration changes in the PR description (under **Changes**)
+
+
+ Examples of configuration changes
+
+ - Changing ports
+ - Adding new services that need to communicate with each other
+ - Secrets or environment variable changes
+ - New or infrastructure changes such as databases
+
diff --git a/.github/workflows/scripts/check_actions_status.py b/.github/workflows/scripts/check_actions_status.py
new file mode 100644
index 0000000..37f83da
--- /dev/null
+++ b/.github/workflows/scripts/check_actions_status.py
@@ -0,0 +1,116 @@
+import json
+import os
+import requests
+import sys
+import time
+from typing import Dict, List, Tuple
+
+CHECK_INTERVAL = 30
+
+
+def get_environment_variables() -> Tuple[str, str, str, str, str]:
+ """Retrieve and return necessary environment variables."""
+ try:
+ with open(os.environ["GITHUB_EVENT_PATH"]) as f:
+ event = json.load(f)
+
+ # Handle both PR and merge group events
+ if "pull_request" in event:
+ sha = event["pull_request"]["head"]["sha"]
+ else:
+ sha = os.environ["GITHUB_SHA"]
+
+ return (
+ os.environ["GITHUB_API_URL"],
+ os.environ["GITHUB_REPOSITORY"],
+ sha,
+ os.environ["GITHUB_TOKEN"],
+ os.environ["GITHUB_RUN_ID"],
+ )
+ except KeyError as e:
+ print(f"Error: Missing required environment variable or event data: {e}")
+ sys.exit(1)
+
+
+def make_api_request(url: str, headers: Dict[str, str]) -> Dict:
+ """Make an API request and return the JSON response."""
+ try:
+ print("Making API request to:", url)
+ response = requests.get(url, headers=headers, timeout=10)
+ response.raise_for_status()
+ return response.json()
+ except requests.RequestException as e:
+ print(f"Error: API request failed. {e}")
+ sys.exit(1)
+
+
+def process_check_runs(check_runs: List[Dict]) -> Tuple[bool, bool]:
+ """Process check runs and return their status."""
+ runs_in_progress = False
+ all_others_passed = True
+
+ for run in check_runs:
+ if str(run["name"]) != "Check PR Status":
+ status = run["status"]
+ conclusion = run["conclusion"]
+
+ if status == "completed":
+ if conclusion not in ["success", "skipped", "neutral"]:
+ all_others_passed = False
+ print(
+ f"Check run {run['name']} (ID: {run['id']}) has conclusion: {conclusion}"
+ )
+ else:
+ runs_in_progress = True
+ print(f"Check run {run['name']} (ID: {run['id']}) is still {status}.")
+ all_others_passed = False
+ else:
+ print(
+ f"Skipping check run {run['name']} (ID: {run['id']}) as it is the current run."
+ )
+
+ return runs_in_progress, all_others_passed
+
+
+def main():
+ api_url, repo, sha, github_token, current_run_id = get_environment_variables()
+
+ endpoint = f"{api_url}/repos/{repo}/commits/{sha}/check-runs"
+ headers = {
+ "Accept": "application/vnd.github.v3+json",
+ }
+ if github_token:
+ headers["Authorization"] = f"token {github_token}"
+
+ print(f"Current run ID: {current_run_id}")
+
+ while True:
+ data = make_api_request(endpoint, headers)
+
+ check_runs = data["check_runs"]
+
+ print("Processing check runs...")
+
+ print(check_runs)
+
+ runs_in_progress, all_others_passed = process_check_runs(check_runs)
+
+ if not runs_in_progress:
+ break
+
+ print(
+ "Some check runs are still in progress. "
+ f"Waiting {CHECK_INTERVAL} seconds before checking again..."
+ )
+ time.sleep(CHECK_INTERVAL)
+
+ if all_others_passed:
+ print("All other completed check runs have passed. This check passes.")
+ sys.exit(0)
+ else:
+ print("Some check runs have failed or have not completed. This check fails.")
+ sys.exit(1)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/.vscode/all-projects.code-workspace b/.vscode/all-projects.code-workspace
new file mode 100644
index 0000000..d5f6dfc
--- /dev/null
+++ b/.vscode/all-projects.code-workspace
@@ -0,0 +1,77 @@
+{
+ "folders": [
+ {
+ "name": "frontend",
+ "path": "../tourai_platform/frontend"
+ },
+ {
+ "name": "backend",
+ "path": "../tourai_platform/backend"
+ },
+ {
+ "name": "build",
+ "path": "../build"
+ },
+ {
+ "name": "models",
+ "path": "../models"
+ },
+ {
+ "name": "infra",
+ "path": "../models/infra"
+ },
+ {
+ "name": "checkpoints",
+ "path": "../models/checkpoints"
+ },
+ {
+ "name": "data",
+ "path": "../models/data"
+ },
+ {
+ "name": "libs",
+ "path": "../models/data/tourai_libs"
+ },
+ {
+ "name": "node_modules",
+ "path": "../node_modules"
+ },
+ {
+ "name": "public",
+ "path": "../public"
+ },
+ {
+ "name": "server",
+ "path": "../server"
+ },
+ {
+ "name": "src",
+ "path": "../src"
+ },
+ {
+ "name": "docs",
+ "path": "../docs"
+ },
+ {
+ "name": "logs",
+ "path": "../logs"
+ },
+ {
+ "name": "[root]",
+ "path": ".."
+ }
+ ],
+ "settings": {
+ "python.analysis.typeCheckingMode": "basic"
+ },
+ "extensions": {
+ "recommendations": [
+ "charliermarsh.ruff",
+ "dart-code.flutter",
+ "ms-python.black-formatter",
+ "ms-python.vscode-pylance",
+ "prisma.prisma",
+ "qwtel.sqlite-viewer"
+ ]
+ }
+}
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..c87827e
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,68 @@
+{
+ "version": "0.1.0",
+ "isValid": "false",
+ "configurations": [
+ {
+ "name": "Frontend: Server Side",
+ "type": "node-terminal",
+ "request": "launch",
+ "cwd": "${workspaceFolder}/tourai_platform/frontend",
+ "command": "yarn dev"
+ },
+ {
+ "name": "Frontend: Client Side",
+ "type": "msedge",
+ "request": "launch",
+ "url": "http://localhost:3000"
+ },
+ {
+ "name": "Frontend: Full Stack",
+ "type": "node-terminal",
+
+ "request": "launch",
+ "command": "yarn dev",
+ "cwd": "${workspaceFolder}/tourai_platform/frontend",
+ "serverReadyAction": {
+ "pattern": "- Local:.+(https?://.+)",
+ "uriFormat": "%s",
+ "action": "debugWithEdge"
+ }
+ },
+ {
+ "name": "Backend",
+ "type": "debugpy",
+ "request": "launch",
+ "module": "backend.app",
+ // "env": {
+ // "ENV": "dev"
+ // },
+ "envFile": "${workspaceFolder}/backend/.env",
+ "justMyCode": false,
+ "cwd": "${workspaceFolder}/tourai_platform/backend"
+ },
+ {
+ "name": "Marketplace",
+ "type": "debugpy",
+ "request": "launch",
+ "module": "tourai_platform.market.main",
+ "env": {
+ "ENV": "dev"
+ },
+ "envFile": "${workspaceFolder}/market/.env",
+ "justMyCode": false,
+ "cwd": "${workspaceFolder}/market"
+ }
+ ],
+ "compounds": [
+ {
+ "name": "Everything",
+ "configurations": ["Backend", "Frontend: Full Stack"],
+ // "preLaunchTask": "${defaultBuildTask}",
+ "stopAll": true,
+ "presentation": {
+ "hidden": false,
+ "order": 0
+ }
+ }
+ ]
+}
diff --git a/docs/screenshots/readme.md b/docs/screenshots/readme.md
new file mode 100644
index 0000000..455b2f8
--- /dev/null
+++ b/docs/screenshots/readme.md
@@ -0,0 +1,2 @@
+This folder contains screenshots to record each status during product development.
+File named by "Screenshot"-"Created Day"-"Version"
\ No newline at end of file