This component is responsible for orchastrating the main logic for Codenator. It has five main actions:
- Generate: This action Takes a prompt and generates text and script in context of a conversation.
- Scan: Takes a script and send it to Code Scanner, if recommendations found to fix vulnrabilities, it sends back the recomendations to the LLM model to generate new text and script.
- Execute: Takes a script, encrypt it and send to Code Executor, if zthe execution fails, it sends back failure message to LLM model to generate new text and script.
- Save: Uses LLM to generate task description embedding then send it with script to Task Store to save it.
- Load: Uses LLM to generate input text embedding and send it to Task Store to search for similar stored tasks.
Controller component requires the following IAM permissions
dynamodb:GetItem
kms:encrypt
To start Controller server, you can use the below command:
$ main.py [optional args]
[optional args]
can be any combination of:
--host
: host url, default value localhost
--port
: host port, default value 8080
--api-layer-host
: API Layer host url, default value localhost
--api-layer-port
: API Layer host port, default value 8080
--code-scanner-host
: Code Scanner host url, default value localhost
--code-scanner-port
: Code Scanner host port, default value 8080
--code-executor-host
: Code Executor host url, default value localhost
--code-executor-port
: Code Executor host port, default value 8080
--task-store-host
: Task Store host url, default value localhost
--task-store-port
: Task Store host port, default value 8080
--workers
: number of uvicorn workers, default value 3
--namespace
: namespace used to publish CloudWatc Metrics, default value Codenator/controller/
--kms
: Amazon KMS key id or alias used to encrypt script sent to Code Executor.
--prompt-database-file
: Loads Prompt Store from file if no DynamoDB table name was provided in --prompt-store-name
option.
--prompt-store-name
: DynamoDB table name used for Prompt Store.
--models-metadata-db
: DynamoDB table name used to load languages and models metadata.
--models-metadata-file
: Loads models metadata from file if no DynamoDB table name was provided in --models-metadata-db
option.
--languages-file
: Loads languages metadata from file if no DynamoDB table name was provided in --models-metadata-db
option.
--conv-bucket
: Amazon S3 bucket name used for conversation memory and logging.
--conv-prefix
: Amazon S3 prefix name used for conversation memory and logging.
Task Store has the following API endpoints:
/ping
(GET): A standard health check endpoint./list_languages
(GET): Lists all supported programming languages./generate
(POST): for Generate action- Required parameters:
prompt
: Text prompt.
model_family
: currently supportsbedrock
orsagemaker
.
model_name
: name of the model to invoke (see DynamoDB section for more information)
language
: programing language to use. - Optional parameters:
model_params
: parameters used for model, (see DynamoDB section for more information).
conv_id
: conversation id, if empty a new conversation is started.
stream
: aboolean
value used to stream response.
- Required parameters:
/scan
(POST): for Scan action- Required parameters:
script
: Script to scan.
model_family
: currently supportsbedrock
orsagemaker
.
model_name
: name of the model to invoke (see DynamoDB section for more information)
language
: programing language to use.
conv_id
: conversation id. - Optional parameters:
model_params
: parameters used for model, (see DynamoDB section for more information).
scanner
: defaults tosemgrep
. valid valuescodeguru
orsemgrep
.
stream
: aboolean
value used to stream response.
- Required parameters:
/execute
(POST): for Execute action- Required parameters:
script
: Script to execute.
model_family
: currently supportsbedrock
orsagemaker
.
model_name
: name of the model to invoke (see DynamoDB section for more information)
language
: programing language to use.
conv_id
: conversation id. - Optional parameters:
model_params
: parameters used for model, (see DynamoDB section for more information).
stream
: aboolean
value used to stream response.
- Required parameters:
/save
(POST): for Save action- Required parameters:
script
: Script to save.
model_family
: currently supportsbedrock
orsagemaker
.
model_name
: name of the model to invoke (see DynamoDB section for more information)
language
: programing language to use.
embedding_model_family
: same asmodel_family
but for embedding.
embedding_model_name
: same asmodel_name
but for embedding. - Optional parameters:
model_params
: parameters used for model, (see DynamoDB section for more information).
embedding_model_params
: same asmodel_params
but for embedding.
- Required parameters:
/load
(POST): for Load action- Required parameters:
prompt
: text prompt used to load a task.
model_family
: currently supportsbedrock
orsagemaker
.
model_name
: name of the model to invoke (see DynamoDB section for more information)
language
: programing language to use.
embedding_model_family
: same asmodel_family
but for embedding.
embedding_model_name
: same asmodel_name
but for embedding. - Optional parameters:
model_params
: parameters used for model, (see DynamoDB section for more information).
embedding_model_params
: same asmodel_params
but for embedding.
threshold
: similarity threshold, defaulst to0.1
.
limit
: number of search results to return, defaults to1
- Required parameters: