From b215677a79fa2f913e1f80afcb2036a9b527774b Mon Sep 17 00:00:00 2001 From: Juan Antonio Osorio Date: Tue, 21 Jan 2025 16:55:55 +0200 Subject: [PATCH 1/8] Add initial documentation on workspaces This does not yet document the UI, but it does document the workspace prompt CLI. Signed-off-by: Juan Antonio Osorio --- docs/features/workspaces.md | 135 ++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 docs/features/workspaces.md diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md new file mode 100644 index 0000000..925863e --- /dev/null +++ b/docs/features/workspaces.md @@ -0,0 +1,135 @@ +--- +title: Workspaces +description: Codegate workspaces +sidebar_position: 40 +--- + +## Overview + +The "Workspaces" feature in CodeGate is designed to help users organize and +customize their interactions with large language models (LLMs). Each workspace +acts as a distinct environment with its own configurations and resources, +allowing for personalized settings and efficient management of different +projects or tasks. + +## Key Features + +- **Custom Configurations**: Each workspace can have its own settings and system + prompts for interacting with LLMs, enabling tailored responses and behaviors. +- **Resource Management**: Workspaces act as containers for bucketing resources + within CodeGate, making it easier to manage and switch between different projects. +- **Isolation and Independence**: Configurations in one workspace do not affect + others, providing clarity and precision in how settings are applied. + +## Working with Workspaces + +### Creating a Workspace + +To create a new workspace, use the following command from your chat prompt interface: + +```bash +codegate workspace add $NAME +``` + +This initializes a new workspace with the specified name. + +Note that workspace names may only contain alphanumeric characters with dashes. + +### Switching Workspaces + +To switch between workspaces, you can activate a different workspace by using: + +```bash +codegate workspace activate $NAME +``` + +The active workspace is the current environment for commands and configurations. + +### Listing Workspaces + +For a quickly accessible overview of all workspaces, including which is currently +active, use: + +```bash +codegate workspace list +``` + +### Customizing System Prompts + +One of the key advantages of workspaces is the ability to set a custom system +prompt. This can be done using the following command: + +```bash +codegate system-prompt -w $WORKSPACE_NAME set $SYSTEM_PROMPT +``` + +Replace `$WORKSPACE_NAME` with your desired workspace and `$SYSTEM_PROMPT` with +your custom prompt text. + +Note that if you don't specify a workspace explicitly, the command will take an +the active workspace into use. + +#### Example + +Suppose you want to set a custom system prompt for a workspace named "project-alpha": + +```bash +codegate system-prompt -w project-alpha set Start each conversation with "Welcome to Project Alpha Assistant. How can I help today?" +``` + +This will enhance your prompt when you're working in that workspace. + +### Archiving a workspace + +In order to "archive" a workspace, use the following command in your prompt: + +```bash +codegate workspace remove $WORKSPACE_NAME +``` + +This will not fully delete the workspace, but will set it in "archived mode". You +may still recover an archived workspace. + +### Listing Archived Workspaces + +To view a list of all archived workspaces, use the following command: + +```bash +codegate workspace list-archived +``` + +This command will display all workspaces that have been archived, allowing you +to review which projects are stored for potential future use. + +### Restoring an Archived Workspace + +If you need to reactivate an archived workspace, you can restore it using the +following command: + +```bash +codegate workspace restore $WORKSPACE_NAME +``` + +Replace `$WORKSPACE_NAME` with the name of the workspace you wish to restore. +Once restored, it will appear in your active workspace list. + +### Deleting an Archived Workspace + +In cases where an archived workspace is no longer needed and can be safely removed, +you can permanently delete it with: + +```bash +codegate workspace delete-archived $WORKSPACE_NAME +``` + +Make sure to double-check before executing this command, as it will permanently +remove the specified workspace from your system. + +## Best Practices + +- Utilize workspaces to separate different projects or objectives, ensuring each + has a dedicated configuration. +- Regularly review and update the system prompts to align with the evolving needs + of your projects. +- Use resource bucketing to keep assets organized and easily accessible within + their respective workspaces. From a02669d3f3d25b7cdee8a9ecbad24726d1330516 Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Tue, 21 Jan 2025 16:57:25 -0500 Subject: [PATCH 2/8] Language and style updates, add rename command --- docs/features/workspaces.md | 177 ++++++++++++++++++++++-------------- 1 file changed, 109 insertions(+), 68 deletions(-) diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md index 925863e..9622b94 100644 --- a/docs/features/workspaces.md +++ b/docs/features/workspaces.md @@ -1,135 +1,176 @@ --- title: Workspaces -description: Codegate workspaces +description: Organize and customize your project environments sidebar_position: 40 --- ## Overview -The "Workspaces" feature in CodeGate is designed to help users organize and -customize their interactions with large language models (LLMs). Each workspace -acts as a distinct environment with its own configurations and resources, -allowing for personalized settings and efficient management of different -projects or tasks. +_Workspaces_ in CodeGate allow you to organize and customize your interactions +with large language models (LLMs). Each workspace is a distinct environment with +its own configurations and resources, enabling personalized settings and +efficient management of different projects or tasks. -## Key Features +## Key features -- **Custom Configurations**: Each workspace can have its own settings and system +- **Custom configurations**: Each workspace can have its own settings and system prompts for interacting with LLMs, enabling tailored responses and behaviors. -- **Resource Management**: Workspaces act as containers for bucketing resources - within CodeGate, making it easier to manage and switch between different projects. -- **Isolation and Independence**: Configurations in one workspace do not affect +- **Resource management**: Workspaces act as containers for organizing resources + within CodeGate, making it easier to manage and switch between different + projects. +- **Isolation and independence**: Configurations in one workspace do not affect others, providing clarity and precision in how settings are applied. -## Working with Workspaces +## Working with workspaces -### Creating a Workspace +:::info Default workspace -To create a new workspace, use the following command from your chat prompt interface: +CodeGate ships with a default workspace named `default`. This workspace cannot +be renamed, archived, or deleted. -```bash -codegate workspace add $NAME +::: + +You can manage workspaces using `codegate workspace` commands sent through your +AI assistant's chat interface. To see all available commands: + +```plain +codegate workspace -h ``` -This initializes a new workspace with the specified name. +:::note -Note that workspace names may only contain alphanumeric characters with dashes. +Currently, workspaces are not shown in the CodeGate dashboard. Stay tuned! -### Switching Workspaces +::: -To switch between workspaces, you can activate a different workspace by using: +### Create a workspace {#add} -```bash -codegate workspace activate $NAME +To create a new workspace: + +```plain +codegate workspace add WORKSPACE_NAME ``` -The active workspace is the current environment for commands and configurations. +Replace `WORKSPACE_NAME` with a name for the new workspace. Names can only +contain alphanumeric characters, hyphens (`-`), and underscores (`_`). -### Listing Workspaces +:::note -For a quickly accessible overview of all workspaces, including which is currently -active, use: +Workspace names are case-sensitive. -```bash +::: + +### List workspaces {#list} + +Get a list of all non-archived workspaces: + +```plain codegate workspace list ``` -### Customizing System Prompts +The currently active workspace is indicated as **(active)** in the list. -One of the key advantages of workspaces is the ability to set a custom system -prompt. This can be done using the following command: +### Activate a workspace {#activate} -```bash -codegate system-prompt -w $WORKSPACE_NAME set $SYSTEM_PROMPT +Switch between workspaces using the `activate` command. The active workspace is +the current environment for commands and configuration. + +```plain +codegate workspace activate WORKSPACE_NAME ``` -Replace `$WORKSPACE_NAME` with your desired workspace and `$SYSTEM_PROMPT` with -your custom prompt text. +Replace `WORKSPACE_NAME` with the name of the workspace to activate +(case-sensitive). -Note that if you don't specify a workspace explicitly, the command will take an -the active workspace into use. +### Customize the system prompt {#system-prompt} -#### Example +One of the key advantages of workspaces is the ability to customize the system +prompt with extra project-specific context or instructions. -Suppose you want to set a custom system prompt for a workspace named "project-alpha": +```plain +codegate system-prompt [-w WORKSPACE_NAME] set SYSTEM_PROMPT +``` -```bash +Replace `SYSTEM_PROMPT` with your custom prompt text. + +Optionally, specify the workspace to modify with `-w WORKSPACE_NAME`. If you +don't explicitly set a workspace, the currently active workspace is modified. + +**Example**: Set a custom system prompt for the workspace named "project-alpha": + +```plain codegate system-prompt -w project-alpha set Start each conversation with "Welcome to Project Alpha Assistant. How can I help today?" ``` -This will enhance your prompt when you're working in that workspace. +### Rename a workspace {#rename} -### Archiving a workspace +To change the name of an existing workspace: -In order to "archive" a workspace, use the following command in your prompt: +```plain +codegate workspace rename WORKSPACE_NAME NEW_WORKSPACE_NAME +``` -```bash -codegate workspace remove $WORKSPACE_NAME +Replace `WORKSPACE_NAME` with the current name of the workspace, and +`NEW_WORKSPACE_NAME` with the new name to set. + +### Archive a workspace {#archive} + +You can mark a workspace as archived without permanently deleting it. This is +useful in situations when you are not actively working on a project but may want +to come back to it later. + +```plain +codegate workspace remove WORKSPACE_NAME ``` -This will not fully delete the workspace, but will set it in "archived mode". You -may still recover an archived workspace. +Replace `WORKSPACE_NAME` with the name of the workspace to archive. Archived +workspaces can be [restored](#restore) later or [permanently deleted](#delete). -### Listing Archived Workspaces +### List archived workspaces {#list-archived} -To view a list of all archived workspaces, use the following command: +Get a list of all archived workspaces: -```bash +```plain codegate workspace list-archived ``` -This command will display all workspaces that have been archived, allowing you -to review which projects are stored for potential future use. +Archived workspaces can be [restored](#restore) or +[permanently deleted](#delete), but cannot be activated. -### Restoring an Archived Workspace +### Restore an archived workspace {#restore} -If you need to reactivate an archived workspace, you can restore it using the -following command: +Use the `restore` command to recover an [archived](#archive) workspace. Once +restored, a workspace will appear in your available [workspace list](#list) and +can be [activated](#activate). ```bash -codegate workspace restore $WORKSPACE_NAME +codegate workspace restore WORKSPACE_NAME ``` -Replace `$WORKSPACE_NAME` with the name of the workspace you wish to restore. -Once restored, it will appear in your active workspace list. +Replace `WORKSPACE_NAME` with the name of the workspace to restore. -### Deleting an Archived Workspace +### Permanently delete a workspace {#delete} -In cases where an archived workspace is no longer needed and can be safely removed, -you can permanently delete it with: +The `delete-archived` command permanently deletes an archived workspace. ```bash -codegate workspace delete-archived $WORKSPACE_NAME +codegate workspace delete-archived WORKSPACE_NAME ``` -Make sure to double-check before executing this command, as it will permanently -remove the specified workspace from your system. +Replace `WORKSPACE_NAME` with the name of the workspace to delete. + +:::warning + +Deletion is permanent. Ensure that the workspace is no longer needed and can be +safely removed. There is no confirmation when you run this command. + +::: -## Best Practices +## Recommendations -- Utilize workspaces to separate different projects or objectives, ensuring each - has a dedicated configuration. -- Regularly review and update the system prompts to align with the evolving needs - of your projects. +- Use workspaces to separate different projects or objectives, ensuring each has + a dedicated configuration. +- Regularly review and update the system prompts to align with the evolving + needs of your projects. - Use resource bucketing to keep assets organized and easily accessible within their respective workspaces. From 5ca2944156a9ba842b5306ce5015ffcfaa41c9d4 Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Tue, 21 Jan 2025 18:06:57 -0500 Subject: [PATCH 3/8] Fix code block languages Missed a few - normalize all to plain --- docs/features/workspaces.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md index 9622b94..268190d 100644 --- a/docs/features/workspaces.md +++ b/docs/features/workspaces.md @@ -143,7 +143,7 @@ Use the `restore` command to recover an [archived](#archive) workspace. Once restored, a workspace will appear in your available [workspace list](#list) and can be [activated](#activate). -```bash +```plain codegate workspace restore WORKSPACE_NAME ``` @@ -153,7 +153,7 @@ Replace `WORKSPACE_NAME` with the name of the workspace to restore. The `delete-archived` command permanently deletes an archived workspace. -```bash +```plain codegate workspace delete-archived WORKSPACE_NAME ``` From 4e7da0fdc3908ab1440a060a4c45a7219f46cce2 Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Wed, 22 Jan 2025 09:32:53 -0500 Subject: [PATCH 4/8] CLI updates --- docs/features/workspaces.md | 39 +++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md index 268190d..afad44b 100644 --- a/docs/features/workspaces.md +++ b/docs/features/workspaces.md @@ -31,18 +31,12 @@ be renamed, archived, or deleted. ::: You can manage workspaces using `codegate workspace` commands sent through your -AI assistant's chat interface. To see all available commands: +AI assistant's chat interface. To see all available commands, run: ```plain codegate workspace -h ``` -:::note - -Currently, workspaces are not shown in the CodeGate dashboard. Stay tuned! - -::: - ### Create a workspace {#add} To create a new workspace: @@ -54,12 +48,6 @@ codegate workspace add WORKSPACE_NAME Replace `WORKSPACE_NAME` with a name for the new workspace. Names can only contain alphanumeric characters, hyphens (`-`), and underscores (`_`). -:::note - -Workspace names are case-sensitive. - -::: - ### List workspaces {#list} Get a list of all non-archived workspaces: @@ -79,16 +67,17 @@ the current environment for commands and configuration. codegate workspace activate WORKSPACE_NAME ``` -Replace `WORKSPACE_NAME` with the name of the workspace to activate -(case-sensitive). +Replace `WORKSPACE_NAME` with the name of the workspace to activate. ### Customize the system prompt {#system-prompt} One of the key advantages of workspaces is the ability to customize the system -prompt with extra project-specific context or instructions. +prompt with extra project-specific instructions. + +To add custom instructions to your system prompt: ```plain -codegate system-prompt [-w WORKSPACE_NAME] set SYSTEM_PROMPT +codegate custom-instructions [-w WORKSPACE_NAME] set SYSTEM_PROMPT ``` Replace `SYSTEM_PROMPT` with your custom prompt text. @@ -102,6 +91,18 @@ don't explicitly set a workspace, the currently active workspace is modified. codegate system-prompt -w project-alpha set Start each conversation with "Welcome to Project Alpha Assistant. How can I help today?" ``` +To show the current custom instructions on a workspace: + +```plain +codegate custom-instructions [-w WORKSPACE_NAME] show +``` + +To reset (clear) the custom instructions for a workspace: + +```plain +codegate custom-instructions [-w WORKSPACE_NAME] reset +``` + ### Rename a workspace {#rename} To change the name of an existing workspace: @@ -120,7 +121,7 @@ useful in situations when you are not actively working on a project but may want to come back to it later. ```plain -codegate workspace remove WORKSPACE_NAME +codegate workspace archive WORKSPACE_NAME ``` Replace `WORKSPACE_NAME` with the name of the workspace to archive. Archived @@ -162,7 +163,7 @@ Replace `WORKSPACE_NAME` with the name of the workspace to delete. :::warning Deletion is permanent. Ensure that the workspace is no longer needed and can be -safely removed. There is no confirmation when you run this command. +safely removed. ::: From 7ce973143558e0e73ff7b882ce89d30fdc4cfa11 Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Wed, 22 Jan 2025 14:20:45 -0500 Subject: [PATCH 5/8] Fix plaintext code blocks language --- docs/features/security-reviews.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/features/security-reviews.md b/docs/features/security-reviews.md index b3d4078..2c2d1ca 100644 --- a/docs/features/security-reviews.md +++ b/docs/features/security-reviews.md @@ -25,13 +25,13 @@ more secure recommendations and code suggestions. ### Example prompts -```plain +```text Review the following Python files for potential security vulnerabilities: @app.py @main.py ``` -```plain +```text Analyze the AuthUser function in @login.py for any security issues ``` From f5723af4abba1026d58b66f6470a4a33d90143e7 Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Wed, 22 Jan 2025 14:33:18 -0500 Subject: [PATCH 6/8] Add workspaces UI docs and update descriptions --- docs/features/workspaces.md | 177 ------------- docs/features/workspaces.mdx | 247 ++++++++++++++++++ static/img/features/workspace-menu-dark.webp | Bin 0 -> 45690 bytes static/img/features/workspace-menu-light.webp | Bin 0 -> 48846 bytes 4 files changed, 247 insertions(+), 177 deletions(-) delete mode 100644 docs/features/workspaces.md create mode 100644 docs/features/workspaces.mdx create mode 100644 static/img/features/workspace-menu-dark.webp create mode 100644 static/img/features/workspace-menu-light.webp diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md deleted file mode 100644 index afad44b..0000000 --- a/docs/features/workspaces.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Workspaces -description: Organize and customize your project environments -sidebar_position: 40 ---- - -## Overview - -_Workspaces_ in CodeGate allow you to organize and customize your interactions -with large language models (LLMs). Each workspace is a distinct environment with -its own configurations and resources, enabling personalized settings and -efficient management of different projects or tasks. - -## Key features - -- **Custom configurations**: Each workspace can have its own settings and system - prompts for interacting with LLMs, enabling tailored responses and behaviors. -- **Resource management**: Workspaces act as containers for organizing resources - within CodeGate, making it easier to manage and switch between different - projects. -- **Isolation and independence**: Configurations in one workspace do not affect - others, providing clarity and precision in how settings are applied. - -## Working with workspaces - -:::info Default workspace - -CodeGate ships with a default workspace named `default`. This workspace cannot -be renamed, archived, or deleted. - -::: - -You can manage workspaces using `codegate workspace` commands sent through your -AI assistant's chat interface. To see all available commands, run: - -```plain -codegate workspace -h -``` - -### Create a workspace {#add} - -To create a new workspace: - -```plain -codegate workspace add WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with a name for the new workspace. Names can only -contain alphanumeric characters, hyphens (`-`), and underscores (`_`). - -### List workspaces {#list} - -Get a list of all non-archived workspaces: - -```plain -codegate workspace list -``` - -The currently active workspace is indicated as **(active)** in the list. - -### Activate a workspace {#activate} - -Switch between workspaces using the `activate` command. The active workspace is -the current environment for commands and configuration. - -```plain -codegate workspace activate WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with the name of the workspace to activate. - -### Customize the system prompt {#system-prompt} - -One of the key advantages of workspaces is the ability to customize the system -prompt with extra project-specific instructions. - -To add custom instructions to your system prompt: - -```plain -codegate custom-instructions [-w WORKSPACE_NAME] set SYSTEM_PROMPT -``` - -Replace `SYSTEM_PROMPT` with your custom prompt text. - -Optionally, specify the workspace to modify with `-w WORKSPACE_NAME`. If you -don't explicitly set a workspace, the currently active workspace is modified. - -**Example**: Set a custom system prompt for the workspace named "project-alpha": - -```plain -codegate system-prompt -w project-alpha set Start each conversation with "Welcome to Project Alpha Assistant. How can I help today?" -``` - -To show the current custom instructions on a workspace: - -```plain -codegate custom-instructions [-w WORKSPACE_NAME] show -``` - -To reset (clear) the custom instructions for a workspace: - -```plain -codegate custom-instructions [-w WORKSPACE_NAME] reset -``` - -### Rename a workspace {#rename} - -To change the name of an existing workspace: - -```plain -codegate workspace rename WORKSPACE_NAME NEW_WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with the current name of the workspace, and -`NEW_WORKSPACE_NAME` with the new name to set. - -### Archive a workspace {#archive} - -You can mark a workspace as archived without permanently deleting it. This is -useful in situations when you are not actively working on a project but may want -to come back to it later. - -```plain -codegate workspace archive WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with the name of the workspace to archive. Archived -workspaces can be [restored](#restore) later or [permanently deleted](#delete). - -### List archived workspaces {#list-archived} - -Get a list of all archived workspaces: - -```plain -codegate workspace list-archived -``` - -Archived workspaces can be [restored](#restore) or -[permanently deleted](#delete), but cannot be activated. - -### Restore an archived workspace {#restore} - -Use the `restore` command to recover an [archived](#archive) workspace. Once -restored, a workspace will appear in your available [workspace list](#list) and -can be [activated](#activate). - -```plain -codegate workspace restore WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with the name of the workspace to restore. - -### Permanently delete a workspace {#delete} - -The `delete-archived` command permanently deletes an archived workspace. - -```plain -codegate workspace delete-archived WORKSPACE_NAME -``` - -Replace `WORKSPACE_NAME` with the name of the workspace to delete. - -:::warning - -Deletion is permanent. Ensure that the workspace is no longer needed and can be -safely removed. - -::: - -## Recommendations - -- Use workspaces to separate different projects or objectives, ensuring each has - a dedicated configuration. -- Regularly review and update the system prompts to align with the evolving - needs of your projects. -- Use resource bucketing to keep assets organized and easily accessible within - their respective workspaces. diff --git a/docs/features/workspaces.mdx b/docs/features/workspaces.mdx new file mode 100644 index 0000000..84d30ae --- /dev/null +++ b/docs/features/workspaces.mdx @@ -0,0 +1,247 @@ +--- +title: Workspaces +description: Organize and customize your project environments +sidebar_position: 40 +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; +import ThemedImage from '@theme/ThemedImage'; + +## Overview + +_Workspaces_ in CodeGate allow you to organize and customize your interactions +with large language models (LLMs). Each workspace is a distinct environment with +its own configuration and history, enabling personalized settings and efficient +management of your projects or tasks. + +Examples might include workspaces for different projects you're working on, or +for specific tasks like code reviews or generating documentation. You can add +custom instructions to each workspace to customize its behavior suitable to the +task at hand. + +## Key features + +Workspaces offer several key features: + +- **Custom instructions**: Customize your interactions with LLMs by augmenting + your AI assistant's system prompt, enabling tailored responses and behaviors + for different types of tasks. + +- **Prompt and alert history**: Your LLM interactions (prompt history) and + CodeGate security detections (alert history) are recorded in the active + workspace, allowing you to track and review past interactions. + +- **Isolation**: Configurations and data in one workspace do not affect others, + providing clarity when reviewing your AI-assisted coding history and precision + in tailoring your custom instructions. + +:::tip Recommendations + +- Use workspaces to separate different projects or objectives, with customized + instructions to optimize your work in each focus area. +- Switch your active workspace as you move between projects or tasks. This helps + you maintain your prompt and alert history for each project. +- Regularly review and update your custom instructions to align with the + evolving needs of your projects. + +::: + +## Working with workspaces + +You can view and manage your workspaces from the +[CodeGate dashboard](../how-to/dashboard.md) +([http://localhost:9090](http://localhost:9090)) or using commands in your AI +assistant's chat interface. + +:::info Default workspace + +CodeGate ships with a default workspace named `default`. This workspace cannot +be renamed, archived, or deleted. + +::: + +Only one workspace is active at any one time, and all AI assistant interactions +occur within that workspace. + +You can perform several actions on workspaces: + +- **Activate**: Activate a workspace for use. Only one workspace can be active + at a time. +- **Add**: Create a new workspace. +- **Rename**: Change the name of a workspace. +- **Custom instructions**: Add custom instructions to augment your AI + assistant's system prompt. +- **Archive**: Mark a workspace as archived without permanently deleting it. The + workspace is hidden from the available workspaces list, but can be restored + later. This is useful when you are not actively working on a project but may + want to come back to it in the future. +- **Delete**: Permanently delete an archived workspace (CLI only). + +## Manage workspaces using the dashboard + +### Select the active workspace + +The currently active workspace is displayed at the top of the CodeGate dashboard +interface. You can change the active workspace by expanding the workspace +drop-down menu. Select the workspace you want to activate. You can also search +by name to quickly find the desired workspace. + + +_The workspace menu in the CodeGate dashboard_ + +### Manage workspaces + +To manage all your workspaces, select **Manage Workspaces** in the workspace +menu. + +Click **Create Workspace** to add a new workspace. Workspace names can contain +alphanumeric characters, hyphens (`-`), and underscores (`_`). Names are +converted to lowercase, and must be unique. + +In the workspace list, click the **Settings** button next to a workspace to open +the workspace settings screen. From here you can rename the workspace, set the +custom prompt instructions, or archive the workspace. Archived workspaces can be +restored from the Manage Workspaces screen, or permanently deleted +[using the CLI](#delete). + +## Manage workspaces using the chat CLI + +You can manage workspaces using `codegate workspace` commands sent through your +AI assistant's chat interface. To see all available commands, run: + +```text +codegate workspace -h +``` + +### Create a workspace \{#add} + +To create a new workspace: + +```text +codegate workspace add WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with a name for the new workspace. Names can only +contain alphanumeric characters, hyphens (`-`), and underscores (`_`). + +### List workspaces \{#list} + +Get a list of all non-archived workspaces: + +```text +codegate workspace list +``` + +The currently active workspace is indicated as **(active)** in the list. + +### Activate a workspace \{#activate} + +Switch between workspaces using the `activate` command. The active workspace is +the current environment for commands and configuration. + +```text +codegate workspace activate WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with the name of the workspace to activate. + +### Customize the system prompt \{#custom-instructions} + +To add custom instructions to your system prompt: + +```text +codegate custom-instructions [-w WORKSPACE_NAME] set SYSTEM_PROMPT +``` + +Replace `SYSTEM_PROMPT` with your custom prompt text. Optionally, specify the +workspace to modify with `-w WORKSPACE_NAME`. If you don't explicitly set a +workspace, the currently active workspace is modified. + +**Example**: Set a custom system prompt for the workspace named "project-alpha": + +```text +codegate custom-instructions -w project-alpha set Start each conversation with "Welcome to Project Alpha Assistant. How can I help today?" +``` + +To show the current custom instructions on a workspace: + +```text +codegate custom-instructions [-w WORKSPACE_NAME] show +``` + +To reset (clear) the custom instructions for a workspace: + +```text +codegate custom-instructions [-w WORKSPACE_NAME] reset +``` + +### Rename a workspace \{#rename} + +To change the name of an existing workspace: + +```text +codegate workspace rename WORKSPACE_NAME NEW_WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with the current name of the workspace, and +`NEW_WORKSPACE_NAME` with the new name to set. + +### Archive a workspace \{#archive} + +To archive a workspace: + +```text +codegate workspace archive WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with the name of the workspace to archive. You cannot +archive the currently active workspace. Archived workspaces can be +[restored](#restore) later or [permanently deleted](#delete). + +### List archived workspaces \{#list-archived} + +Get a list of all archived workspaces: + +```text +codegate workspace list-archived +``` + +Archived workspaces can be [restored](#restore) or +[permanently deleted](#delete), but cannot be activated. + +### Restore an archived workspace \{#restore} + +Use the `restore` command to recover an [archived](#archive) workspace. Once +restored, a workspace will appear in your available [workspace list](#list) and +can be [activated](#activate). + +```text +codegate workspace restore WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with the name of the workspace to restore. + +### Permanently delete a workspace \{#delete} + +The `delete-archived` command permanently deletes an archived workspace. + +```text +codegate workspace delete-archived WORKSPACE_NAME +``` + +Replace `WORKSPACE_NAME` with the name of the workspace to delete. + +:::warning + +Deletion is permanent. Ensure that the workspace is no longer needed and can be +safely removed. + +::: diff --git a/static/img/features/workspace-menu-dark.webp b/static/img/features/workspace-menu-dark.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa35aeffddfc84688f6d35b16bd32014d41867f0 GIT binary patch literal 45690 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 D1uv18 literal 0 HcmV?d00001 diff --git a/static/img/features/workspace-menu-light.webp b/static/img/features/workspace-menu-light.webp new file mode 100644 index 0000000000000000000000000000000000000000..9436e245771076def411c7ad0c6ec24f97b5150a GIT binary patch literal 48846 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òPp-mCjsnC?z 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 Date: Wed, 22 Jan 2025 14:33:46 -0500 Subject: [PATCH 7/8] Add GitHub-style theme switch support --- src/css/custom.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/css/custom.css b/src/css/custom.css index 1732830..3322c31 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -43,6 +43,12 @@ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } +/* Enables GitHub-style light/dark mode switching without the ThemedImage component */ +[data-theme='light'] img[src$='#gh-dark-mode-only'], +[data-theme='dark'] img[src$='#gh-light-mode-only'] { + display: none; +} + html[data-theme='dark'] { --ifm-background-color: #111827; --ifm-color-content: #d1d5db; From 3c471a84b6a64ef466dfb865709c3d265744643c Mon Sep 17 00:00:00 2001 From: Dan Barr Date: Wed, 22 Jan 2025 14:41:36 -0500 Subject: [PATCH 8/8] Add workspaces to changelog --- docs/about/changelog.md | 5 +++++ docs/index.md | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/about/changelog.md b/docs/about/changelog.md index 697d039..45f525c 100644 --- a/docs/about/changelog.md +++ b/docs/about/changelog.md @@ -13,6 +13,11 @@ Major features and changes are noted here. To review all updates, see the Related: [Upgrade CodeGate](../how-to/install.md#upgrade-codegate) +- **Workspaces** - 22 Jan, 2025\ + Now available in CodeGate v0.1.12, workspaces help you organize and customize + your AI-assisted development. Learn more in + [Workspaces](../features/workspaces.mdx). + - **Aider support** - 13 Jan, 2025\ CodeGate version 0.1.6 adds support for [Aider](https://aider.chat/), an LLM pair programmer in your terminal. See the diff --git a/docs/index.md b/docs/index.md index 06dd537..f7f4b82 100644 --- a/docs/index.md +++ b/docs/index.md @@ -73,15 +73,16 @@ project. Please join us in the `#codegate` channel on the Follow one of the the quickstart guides to get up and running quickly: -- [Quickstart guide - GitHub Copilot](quickstart-copilot.mdx) to integrate +- [Quickstart guide - GitHub Copilot](./quickstart-copilot.mdx) to integrate CodeGate with GitHub Copilot and VS Code - [Quickstart guide - Continue](./quickstart-continue.mdx) to integrate CodeGate with the open source Continue extension, VS Code, and a local Ollama server -Review the [installation instructions](how-to/install.md). +Review the [installation instructions](./how-to/install.md). Learn more about CodeGate's features: -- [Secrets encryption](features/secrets-encryption.md) -- [Dependency risk awareness](features/dependency-risk.md) -- [Security reviews](features/security-reviews.md) +- [Secrets encryption](./features/secrets-encryption.md) +- [Dependency risk awareness](./features/dependency-risk.md) +- [Security reviews](./features/security-reviews.md) +- [Workspaces](./features/workspaces.mdx)