fabric/installer/client/cli/fabric.py

130 lines
4.3 KiB
Python
Raw Normal View History

2024-03-05 10:42:02 +00:00
from .utils import Standalone, Update, Setup, Alias
2024-02-08 20:54:42 +00:00
import argparse
import sys
import os
script_directory = os.path.dirname(os.path.realpath(__file__))
2024-02-08 20:54:42 +00:00
def main():
2024-02-08 20:54:42 +00:00
parser = argparse.ArgumentParser(
description="An open source framework for augmenting humans using AI."
)
parser.add_argument("--text", "-t", help="Text to extract summary from")
parser.add_argument(
2024-02-18 21:34:47 +00:00
"--copy", "-C", help="Copy the response to the clipboard", action="store_true"
2024-02-08 20:54:42 +00:00
)
2024-03-04 22:09:25 +00:00
parser.add_argument(
'--agents', '-a', choices=['trip_planner', 'ApiKeys'],
help="Use an AI agent to help you with a task. Acceptable values are 'trip_planner' or 'ApiKeys'. This option cannot be used with any other flag."
)
2024-02-08 20:54:42 +00:00
parser.add_argument(
"--output",
"-o",
help="Save the response to a file",
nargs="?",
const="analyzepaper.txt",
default=None,
)
parser.add_argument(
"--stream",
"-s",
help="Use this option if you want to see the results in realtime. NOTE: You will not be able to pipe the output into another command.",
action="store_true",
)
parser.add_argument(
"--list", "-l", help="List available patterns", action="store_true"
)
parser.add_argument(
"--update", "-u", help="Update patterns", action="store_true")
2024-02-08 20:54:42 +00:00
parser.add_argument("--pattern", "-p", help="The pattern (prompt) to use")
parser.add_argument(
"--setup", help="Set up your fabric instance", action="store_true"
)
parser.add_argument(
"--model", "-m", help="Select the model to use (GPT-4 by default)", default="gpt-4-turbo-preview"
)
parser.add_argument(
"--listmodels", help="List all available models", action="store_true"
)
2024-02-18 21:34:47 +00:00
parser.add_argument('--context', '-c',
help="Use Context file (context.md) to add context to your pattern", action="store_true")
2024-02-08 20:54:42 +00:00
args = parser.parse_args()
home_holder = os.path.expanduser("~")
config = os.path.join(home_holder, ".config", "fabric")
config_patterns_directory = os.path.join(config, "patterns")
2024-02-18 21:48:47 +00:00
config_context = os.path.join(config, "context.md")
2024-02-08 20:54:42 +00:00
env_file = os.path.join(config, ".env")
if not os.path.exists(config):
os.makedirs(config)
if args.setup:
Setup().run()
Alias()
2024-02-08 20:54:42 +00:00
sys.exit()
if not os.path.exists(env_file) or not os.path.exists(config_patterns_directory):
print("Please run --setup to set up your API key and download patterns.")
sys.exit()
if not os.path.exists(config_patterns_directory):
Update()
Alias()
2024-02-08 20:54:42 +00:00
sys.exit()
2024-03-04 22:09:25 +00:00
if args.agents:
# Handle the agents logic
if args.agents == 'trip_planner':
2024-03-05 10:42:02 +00:00
from .agents.trip_planner.main import planner_cli
2024-02-28 15:17:57 +00:00
tripcrew = planner_cli()
tripcrew.ask()
2024-03-03 20:19:10 +00:00
sys.exit()
2024-03-04 22:09:25 +00:00
elif args.agents == 'ApiKeys':
2024-03-05 10:42:02 +00:00
from .utils import AgentSetup
2024-03-03 20:19:10 +00:00
AgentSetup().run()
sys.exit()
2024-02-08 20:54:42 +00:00
if args.update:
Update()
Alias()
2024-02-08 20:54:42 +00:00
sys.exit()
2024-02-18 21:48:47 +00:00
if args.context:
if not os.path.exists(os.path.join(config, "context.md")):
print("Please create a context.md file in ~/.config/fabric")
sys.exit()
2024-02-08 20:54:42 +00:00
standalone = Standalone(args, args.pattern)
if args.list:
try:
direct = sorted(os.listdir(config_patterns_directory))
2024-02-08 20:54:42 +00:00
for d in direct:
print(d)
sys.exit()
except FileNotFoundError:
print("No patterns found")
sys.exit()
if args.listmodels:
standalone.fetch_available_models()
sys.exit()
if args.text is not None:
text = args.text
else:
text = standalone.get_cli_input()
if args.stream and not args.context:
2024-02-08 20:54:42 +00:00
standalone.streamMessage(text)
2024-02-24 21:39:48 +00:00
sys.exit()
if args.stream and args.context:
2024-02-18 21:48:47 +00:00
with open(config_context, "r") as f:
context = f.read()
standalone.streamMessage(text, context=context)
2024-02-24 21:39:48 +00:00
sys.exit()
elif args.context:
2024-02-18 21:48:47 +00:00
with open(config_context, "r") as f:
context = f.read()
standalone.sendMessage(text, context=context)
2024-02-24 21:39:48 +00:00
sys.exit()
2024-02-08 20:54:42 +00:00
else:
standalone.sendMessage(text)
2024-02-24 21:39:48 +00:00
sys.exit()
if __name__ == "__main__":
main()