From 7d8189f09f82743975e38466169b826e7c5f7352 Mon Sep 17 00:00:00 2001 From: Mark Waddle Date: Fri, 8 Nov 2024 11:05:17 -0800 Subject: [PATCH] Simplifies start-up of assistants (#231) `start-semantic-workbench-assistant` now has default assistant app name, simplifying start-up command line, and therefore launch.json, for assistants --- .../explorer-assistant/.vscode/launch.json | 1 - assistants/explorer-assistant/README.md | 2 +- .../.vscode/launch.json | 1 - .../guided-conversation-assistant/README.md | 2 +- .../prospector-assistant/.vscode/launch.json | 1 - assistants/prospector-assistant/README.md | 2 +- .../skill-assistant/.vscode/launch.json | 1 - assistants/skill-assistant/README.md | 2 +- .../python-01-echo-bot/.vscode/launch.json | 1 - examples/python/python-01-echo-bot/README.md | 2 +- .../python-01-echo-bot/assistant/__init__.py | 3 +++ .../.vscode/launch.json | 1 - .../python/python-02-simple-chatbot/README.md | 2 +- .../assistant/__init__.py | 3 +++ .../.vscode/launch.json | 1 - .../python-03-multimodel-chatbot/README.md | 2 +- .../assistant/__init__.py | 3 +++ .../semantic-workbench-assistant/README.md | 2 +- .../pyproject.toml | 1 + .../semantic_workbench_assistant/start.py | 21 ++++++------------- tools/docker/Dockerfile.assistant | 2 +- tools/makefiles/docker-assistant.mk | 5 +++++ tools/run-canonical-agent.ps1 | 2 +- tools/run-canonical-agent.sh | 2 +- tools/run-python-example1.sh | 2 +- tools/run-python-example2.ps1 | 2 +- tools/run-python-example2.sh | 2 +- tools/run-service.ps1 | 2 +- tools/run-service.sh | 2 +- workbench-app/Makefile | 4 ++++ workbench-service/Dockerfile | 2 +- workbench-service/Makefile | 12 +++++++++++ workbench-service/README.md | 2 +- workbench-service/pyproject.toml | 1 + 34 files changed, 56 insertions(+), 40 deletions(-) diff --git a/assistants/explorer-assistant/.vscode/launch.json b/assistants/explorer-assistant/.vscode/launch.json index 05060ee8..682ee10e 100644 --- a/assistants/explorer-assistant/.vscode/launch.json +++ b/assistants/explorer-assistant/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "assistants: explorer-assistant", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/assistants/explorer-assistant/README.md b/assistants/explorer-assistant/README.md index 9cad5819..68f469f8 100644 --- a/assistants/explorer-assistant/README.md +++ b/assistants/explorer-assistant/README.md @@ -51,7 +51,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/assistants/guided-conversation-assistant/.vscode/launch.json b/assistants/guided-conversation-assistant/.vscode/launch.json index 17c1bc79..fb690fb0 100644 --- a/assistants/guided-conversation-assistant/.vscode/launch.json +++ b/assistants/guided-conversation-assistant/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "assistants: guided-conversation-assistant", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/assistants/guided-conversation-assistant/README.md b/assistants/guided-conversation-assistant/README.md index aede5854..86272890 100644 --- a/assistants/guided-conversation-assistant/README.md +++ b/assistants/guided-conversation-assistant/README.md @@ -51,7 +51,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/assistants/prospector-assistant/.vscode/launch.json b/assistants/prospector-assistant/.vscode/launch.json index 5be48502..491caf3a 100644 --- a/assistants/prospector-assistant/.vscode/launch.json +++ b/assistants/prospector-assistant/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "assistants: prospector-assistant", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/assistants/prospector-assistant/README.md b/assistants/prospector-assistant/README.md index b934db14..5ac4a08f 100644 --- a/assistants/prospector-assistant/README.md +++ b/assistants/prospector-assistant/README.md @@ -51,7 +51,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/assistants/skill-assistant/.vscode/launch.json b/assistants/skill-assistant/.vscode/launch.json index df9521cd..894cd2bb 100644 --- a/assistants/skill-assistant/.vscode/launch.json +++ b/assistants/skill-assistant/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "assistants: skill-assistant", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.skill_assistant:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/assistants/skill-assistant/README.md b/assistants/skill-assistant/README.md index c776ae86..106b36fc 100644 --- a/assistants/skill-assistant/README.md +++ b/assistants/skill-assistant/README.md @@ -68,7 +68,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/examples/python/python-01-echo-bot/.vscode/launch.json b/examples/python/python-01-echo-bot/.vscode/launch.json index 8ecf3b9e..0ddb72ff 100644 --- a/examples/python/python-01-echo-bot/.vscode/launch.json +++ b/examples/python/python-01-echo-bot/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "examples: python-01-echo-bot", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/examples/python/python-01-echo-bot/README.md b/examples/python/python-01-echo-bot/README.md index e3942187..94ba378d 100644 --- a/examples/python/python-01-echo-bot/README.md +++ b/examples/python/python-01-echo-bot/README.md @@ -35,7 +35,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/examples/python/python-01-echo-bot/assistant/__init__.py b/examples/python/python-01-echo-bot/assistant/__init__.py index e69de29b..df97212d 100644 --- a/examples/python/python-01-echo-bot/assistant/__init__.py +++ b/examples/python/python-01-echo-bot/assistant/__init__.py @@ -0,0 +1,3 @@ +from .chat import app + +__all__ = ["app"] diff --git a/examples/python/python-02-simple-chatbot/.vscode/launch.json b/examples/python/python-02-simple-chatbot/.vscode/launch.json index 5938004a..ed952ebe 100644 --- a/examples/python/python-02-simple-chatbot/.vscode/launch.json +++ b/examples/python/python-02-simple-chatbot/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "examples: python-02-simple-chatbot", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}" } ] diff --git a/examples/python/python-02-simple-chatbot/README.md b/examples/python/python-02-simple-chatbot/README.md index 0ed8cf31..543b0517 100644 --- a/examples/python/python-02-simple-chatbot/README.md +++ b/examples/python/python-02-simple-chatbot/README.md @@ -52,7 +52,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/examples/python/python-02-simple-chatbot/assistant/__init__.py b/examples/python/python-02-simple-chatbot/assistant/__init__.py index e69de29b..df97212d 100644 --- a/examples/python/python-02-simple-chatbot/assistant/__init__.py +++ b/examples/python/python-02-simple-chatbot/assistant/__init__.py @@ -0,0 +1,3 @@ +from .chat import app + +__all__ = ["app"] diff --git a/examples/python/python-03-multimodel-chatbot/.vscode/launch.json b/examples/python/python-03-multimodel-chatbot/.vscode/launch.json index 545e0773..4b9cb3e6 100644 --- a/examples/python/python-03-multimodel-chatbot/.vscode/launch.json +++ b/examples/python/python-03-multimodel-chatbot/.vscode/launch.json @@ -7,7 +7,6 @@ "name": "examples: python-03-multimodel-chatbot", "cwd": "${workspaceFolder}", "module": "semantic_workbench_assistant.start", - "args": ["assistant.chat:app"], "consoleTitle": "${workspaceFolderBasename}", "justMyCode": false } diff --git a/examples/python/python-03-multimodel-chatbot/README.md b/examples/python/python-03-multimodel-chatbot/README.md index 7059d625..0f31712a 100644 --- a/examples/python/python-03-multimodel-chatbot/README.md +++ b/examples/python/python-03-multimodel-chatbot/README.md @@ -51,7 +51,7 @@ command line, using `uv`: ``` cd -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant ``` ## Create your own assistant diff --git a/examples/python/python-03-multimodel-chatbot/assistant/__init__.py b/examples/python/python-03-multimodel-chatbot/assistant/__init__.py index e69de29b..df97212d 100644 --- a/examples/python/python-03-multimodel-chatbot/assistant/__init__.py +++ b/examples/python/python-03-multimodel-chatbot/assistant/__init__.py @@ -0,0 +1,3 @@ +from .chat import app + +__all__ = ["app"] diff --git a/libraries/python/semantic-workbench-assistant/README.md b/libraries/python/semantic-workbench-assistant/README.md index fdc1ce62..d319ab8f 100644 --- a/libraries/python/semantic-workbench-assistant/README.md +++ b/libraries/python/semantic-workbench-assistant/README.md @@ -10,5 +10,5 @@ To start the canonical assistant: ```sh cd workbench-service -start-semantic-workbench-assistant semantic_workbench_assistant.canonical:app +start-assistant semantic_workbench_assistant.canonical:app ``` diff --git a/libraries/python/semantic-workbench-assistant/pyproject.toml b/libraries/python/semantic-workbench-assistant/pyproject.toml index 8341a633..fa3d5648 100644 --- a/libraries/python/semantic-workbench-assistant/pyproject.toml +++ b/libraries/python/semantic-workbench-assistant/pyproject.toml @@ -30,6 +30,7 @@ semantic-workbench-api-model = { path = "../semantic-workbench-api-model", edita [project.scripts] start-semantic-workbench-assistant = "semantic_workbench_assistant.start:main" +start-assistant = "semantic_workbench_assistant.start:main" [build-system] requires = ["hatchling"] diff --git a/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/start.py b/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/start.py index ddd6d9eb..ce07e94d 100644 --- a/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/start.py +++ b/libraries/python/semantic-workbench-assistant/semantic_workbench_assistant/start.py @@ -19,6 +19,12 @@ def main(): parse_args = argparse.ArgumentParser( description="start a FastAPI assistant service", formatter_class=argparse.ArgumentDefaultsHelpFormatter ) + parse_args.add_argument( + "--app", + type=str, + help="assistant app to start; ex: workbench_assistant.canonical:app", + default=os.getenv("ASSISTANT_APP", "assistant:app"), + ) parse_args.add_argument( "--port", dest="port", @@ -66,21 +72,6 @@ def main(): "--reload", dest="reload", nargs="?", action="store", type=str, default="false", help="enable auto-reload" ) - app = os.getenv("ASSISTANT_APP", None) - if app: - parse_args.add_argument( - "--app", - type=str, - help="assistant app to start; ex: workbench_assistant.canonical:app", - default=app, - ) - else: - parse_args.add_argument( - "app", - type=str, - help="assistant app to start; ex: workbench_assistant.canonical:app", - ) - args = parse_args.parse_args() assistant_root_module = args.app.split(":")[0].split(".")[0] diff --git a/tools/docker/Dockerfile.assistant b/tools/docker/Dockerfile.assistant index 9e41ee8a..cad8e68a 100644 --- a/tools/docker/Dockerfile.assistant +++ b/tools/docker/Dockerfile.assistant @@ -54,4 +54,4 @@ ENV assistant__port=3001 SHELL ["/bin/bash", "-c"] ENTRYPOINT ["/scripts/docker-entrypoint.sh"] -CMD ["start-semantic-workbench-assistant"] +CMD ["start-assistant"] diff --git a/tools/makefiles/docker-assistant.mk b/tools/makefiles/docker-assistant.mk index e73b9367..3573cc0f 100644 --- a/tools/makefiles/docker-assistant.mk +++ b/tools/makefiles/docker-assistant.mk @@ -23,3 +23,8 @@ ASSISTANT__WORKBENCH_SERVICE_URL ?= http://host.docker.internal:3000 docker-run-local: docker-build docker run --rm -it --add-host=host.docker.internal:host-gateway --env assistant__workbench_service_url=$(ASSISTANT__WORKBENCH_SERVICE_URL) $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG) + + +.PHONY: start +start: + uv run start-assistant diff --git a/tools/run-canonical-agent.ps1 b/tools/run-canonical-agent.ps1 index 85b460ac..c82192c8 100644 --- a/tools/run-canonical-agent.ps1 +++ b/tools/run-canonical-agent.ps1 @@ -15,4 +15,4 @@ Set-Location $root Set-Location "workbench-service" # Run the command -uv run start-semantic-workbench-assistant semantic_workbench_assistant.canonical:app \ No newline at end of file +uv run start-assistant semantic_workbench_assistant.canonical:app diff --git a/tools/run-canonical-agent.sh b/tools/run-canonical-agent.sh index 7c62180e..65158207 100755 --- a/tools/run-canonical-agent.sh +++ b/tools/run-canonical-agent.sh @@ -7,4 +7,4 @@ cd $ROOT cd workbench-service -uv run start-semantic-workbench-assistant semantic_workbench_assistant.canonical:app +uv run start-assistant semantic_workbench_assistant.canonical:app diff --git a/tools/run-python-example1.sh b/tools/run-python-example1.sh index 3652b4a2..3f11d362 100755 --- a/tools/run-python-example1.sh +++ b/tools/run-python-example1.sh @@ -7,4 +7,4 @@ cd $ROOT cd examples/python/python-01-echo-bot -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant diff --git a/tools/run-python-example2.ps1 b/tools/run-python-example2.ps1 index b0a4e232..7b91d0ac 100644 --- a/tools/run-python-example2.ps1 +++ b/tools/run-python-example2.ps1 @@ -15,4 +15,4 @@ Set-Location $root Set-Location "examples/python/python-02-simple-chatbot" # Run the commands -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant diff --git a/tools/run-python-example2.sh b/tools/run-python-example2.sh index 420db84b..8131bc41 100755 --- a/tools/run-python-example2.sh +++ b/tools/run-python-example2.sh @@ -7,4 +7,4 @@ cd $ROOT cd examples/python/python-02-simple-chatbot -uv run start-semantic-workbench-assistant assistant.chat:app +uv run start-assistant diff --git a/tools/run-service.ps1 b/tools/run-service.ps1 index e3b13b11..d004842e 100644 --- a/tools/run-service.ps1 +++ b/tools/run-service.ps1 @@ -17,4 +17,4 @@ Set-Location "workbench-service" # Note: this creates the .data folder at # path ./workbench-service/.data # rather than ./workbench-service/.data -uv run start-semantic-workbench-service +uv run start-service diff --git a/tools/run-service.sh b/tools/run-service.sh index cc22703c..451340ef 100755 --- a/tools/run-service.sh +++ b/tools/run-service.sh @@ -10,4 +10,4 @@ cd workbench-service # Note: this creates the .data folder at # path ./workbench-service/.data # rather than ./workbench-service/.data -uv run start-semantic-workbench-service +uv run start-service diff --git a/workbench-app/Makefile b/workbench-app/Makefile index 261fca03..e45a76b7 100644 --- a/workbench-app/Makefile +++ b/workbench-app/Makefile @@ -22,4 +22,8 @@ format: install lint: install pnpm run lint +.PHONY: start +start: + pnpm run start + include $(repo_root)/tools/makefiles/shell.mk diff --git a/workbench-service/Dockerfile b/workbench-service/Dockerfile index 7289a5fa..4a2d7689 100644 --- a/workbench-service/Dockerfile +++ b/workbench-service/Dockerfile @@ -44,4 +44,4 @@ ENV workbench__service__port=3000 SHELL ["/bin/bash", "-c"] ENTRYPOINT ["/scripts/docker-entrypoint.sh"] -CMD ["start-semantic-workbench-service"] +CMD ["start-service"] diff --git a/workbench-service/Makefile b/workbench-service/Makefile index 54f22f67..85b8e8a3 100644 --- a/workbench-service/Makefile +++ b/workbench-service/Makefile @@ -2,7 +2,19 @@ repo_root = $(shell git rev-parse --show-toplevel) include $(repo_root)/tools/makefiles/python.mk +-include ./.env + +DBTYPE ?= sqlite + +ifeq ($(DBTYPE), postgresql) WORKBENCH__DB__URL ?= postgresql:///workbench +else +WORKBENCH__DB__URL ?= sqlite:///.data/workbench.db +endif + +.PHONY: start +start: + WORKBENCH__DB__URL="$(WORKBENCH__DB__URL)" uv run start-service .PHONY: alembic-upgrade-head alembic-upgrade-head: diff --git a/workbench-service/README.md b/workbench-service/README.md index 8699f607..c76ff2ae 100644 --- a/workbench-service/README.md +++ b/workbench-service/README.md @@ -51,5 +51,5 @@ To run and/or debug in VS Code, View->Run, "service: semantic-workbench-service" In the [workbench-service](./) directory ```sh -uv run start-semantic-workbench-service +uv run start-service ``` diff --git a/workbench-service/pyproject.toml b/workbench-service/pyproject.toml index 1bc03a87..85a5aa68 100644 --- a/workbench-service/pyproject.toml +++ b/workbench-service/pyproject.toml @@ -48,6 +48,7 @@ semantic-workbench-assistant = { path = "../libraries/python/semantic-workbench- [project.scripts] start-semantic-workbench-service = "semantic_workbench_service.start:main" +start-service = "semantic_workbench_service.start:main" [build-system] requires = ["hatchling"]