forked from cleveragents/cleveragents-core
feat(discovery): Add environment variable extraction and migration mapping
This commit is contained in:
@@ -160,3 +160,5 @@ claude-flow
|
||||
claude-flow.bat
|
||||
claude-flow.ps1
|
||||
hive-mind-prompt-*.txt
|
||||
|
||||
plandex/
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Environment Variable Mapping
|
||||
# Old Name -> New Name
|
||||
#==================================================
|
||||
|
||||
PLANDEX_ENV -> CLEVERAGENTS_ENV
|
||||
PLANDEX_API_HOST -> CLEVERAGENTS_API_HOST
|
||||
PLANDEX_AWS_PROFILE -> CLEVERAGENTS_AWS_PROFILE
|
||||
PLANDEX_SKIP_UPGRADE -> CLEVERAGENTS_SKIP_UPGRADE
|
||||
PLANDEX_OUT_DIR -> CLEVERAGENTS_OUT_DIR
|
||||
PLANDEX_DEV_CLI_OUT_DIR -> CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
PLANDEX_DEV_CLI_NAME -> CLEVERAGENTS_DEV_CLI_NAME
|
||||
PLANDEX_DEV_CLI_ALIAS -> CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
GOPATH -> CLEVERAGENTS_GOPATH
|
||||
GOENV -> CLEVERAGENTS_GOENV
|
||||
PLANDEX_BASE_DIR -> CLEVERAGENTS_BASE_DIR
|
||||
API_HOST -> CLEVERAGENTS_API_HOST
|
||||
PORT -> CLEVERAGENTS_PORT
|
||||
DATABASE_URL -> CLEVERAGENTS_DATABASE_URL
|
||||
LOCAL_MODE -> CLEVERAGENTS_LOCAL_MODE
|
||||
OLLAMA_BASE_URL -> CLEVERAGENTS_OLLAMA_BASE_URL
|
||||
SMTP_HOST -> CLEVERAGENTS_SMTP_HOST
|
||||
SMTP_PORT -> CLEVERAGENTS_SMTP_PORT
|
||||
SMTP_USER -> CLEVERAGENTS_SMTP_USER
|
||||
SMTP_PASSWORD -> CLEVERAGENTS_SMTP_PASSWORD
|
||||
DB_HOST -> CLEVERAGENTS_DB_HOST
|
||||
DB_PORT -> CLEVERAGENTS_DB_PORT
|
||||
DB_USER -> CLEVERAGENTS_DB_USER
|
||||
DB_PASSWORD -> CLEVERAGENTS_DB_PASSWORD
|
||||
DB_NAME -> CLEVERAGENTS_DB_NAME
|
||||
MIGRATIONS_DIR -> CLEVERAGENTS_MIGRATIONS_DIR
|
||||
PLANDEX_CLOUD -> CLEVERAGENTS_CLOUD
|
||||
SMTP_FROM -> CLEVERAGENTS_SMTP_FROM
|
||||
IS_CLOUD -> CLEVERAGENTS_IS_CLOUD
|
||||
APP_SUBDOMAIN -> CLEVERAGENTS_APP_SUBDOMAIN
|
||||
IP -> CLEVERAGENTS_IP
|
||||
ECS_CONTAINER_METADATA_URI -> CLEVERAGENTS_ECS_CONTAINER_METADATA_URI
|
||||
LITELLM_PROXY_DIR -> CLEVERAGENTS_LITELLM_PROXY_DIR
|
||||
PATH -> CLEVERAGENTS_PATH
|
||||
HOME -> CLEVERAGENTS_HOME
|
||||
VERBOSE_LOGGING -> CLEVERAGENTS_VERBOSE_LOGGING
|
||||
PLANDEX_REPL_SESSION_ID -> CLEVERAGENTS_REPL_SESSION_ID
|
||||
EDITOR -> CLEVERAGENTS_EDITOR
|
||||
VISUAL -> CLEVERAGENTS_VISUAL
|
||||
SHELL -> CLEVERAGENTS_SHELL
|
||||
PLANDEX_REPL -> CLEVERAGENTS_REPL
|
||||
PLANDEX_REPL_OUTPUT_FILE -> CLEVERAGENTS_REPL_OUTPUT_FILE
|
||||
GLAMOUR_STYLE -> CLEVERAGENTS_GLAMOUR_STYLE
|
||||
PLANDEX_DISABLE_SUGGESTIONS -> CLEVERAGENTS_DISABLE_SUGGESTIONS
|
||||
PLANDEX_COLUMNS -> CLEVERAGENTS_COLUMNS
|
||||
COLUMNS -> CLEVERAGENTS_COLUMNS
|
||||
PLANDEX_STREAM_FOREGROUND_COLOR -> CLEVERAGENTS_STREAM_FOREGROUND_COLOR
|
||||
@@ -0,0 +1,158 @@
|
||||
# Environment Variable Migration Guide
|
||||
|
||||
## Overview
|
||||
|
||||
Total variables: 66
|
||||
Variables requiring migration: 16
|
||||
Documented variables: 39
|
||||
Code-only variables: 27
|
||||
|
||||
## Variable Mappings
|
||||
|
||||
| Old Name | New Name | Category | Default | Description |
|
||||
|----------|----------|----------|---------|-------------|
|
||||
| COLUMNS | CLEVERAGENTS_COLUMNS | CLI | (none) | |
|
||||
| EDITOR | CLEVERAGENTS_EDITOR | CLI | (none) | |
|
||||
| GLAMOUR_STYLE | CLEVERAGENTS_GLAMOUR_STYLE | CLI | (none) | |
|
||||
| PLANDEX_COLUMNS | CLEVERAGENTS_COLUMNS | CLI | (none) | |
|
||||
| PLANDEX_DISABLE_SUGGESTIONS | CLEVERAGENTS_DISABLE_SUGGESTIONS | CLI | (none) | |
|
||||
| PLANDEX_REPL | CLEVERAGENTS_REPL | CLI | (none) | |
|
||||
| PLANDEX_REPL_OUTPUT_FILE | CLEVERAGENTS_REPL_OUTPUT_FILE | CLI | (none) | |
|
||||
| PLANDEX_REPL_SESSION_ID | CLEVERAGENTS_REPL_SESSION_ID | CLI | (none) | |
|
||||
| PLANDEX_STREAM_FOREGROUND_COLOR | CLEVERAGENTS_STREAM_FOREGROUND_COLOR | CLI | (none) | |
|
||||
| SHELL | CLEVERAGENTS_SHELL | CLI | (none) | |
|
||||
| VISUAL | CLEVERAGENTS_VISUAL | CLI | (none) | |
|
||||
| GOPATH | CLEVERAGENTS_GOPATH | Development | (none) | This should be already set to your Go folder if yo... |
|
||||
| PLANDEX_DEV_CLI_ALIAS | CLEVERAGENTS_DEV_CLI_ALIAS | Development | pdxd | The alias for the development binary when using de... |
|
||||
| PLANDEX_DEV_CLI_NAME | CLEVERAGENTS_DEV_CLI_NAME | Development | plandex-dev | The name of the development binary when using dev.... |
|
||||
| PLANDEX_DEV_CLI_OUT_DIR | CLEVERAGENTS_DEV_CLI_OUT_DIR | Development | /usr/local/bin | Where the development binary should be output when... |
|
||||
| PLANDEX_OUT_DIR | CLEVERAGENTS_OUT_DIR | Development | /usr/local/bin | Where the development binary should be output when... |
|
||||
| API_HOST | CLEVERAGENTS_API_HOST | General | (none) | The host the API server listens on. Defaults to 'h... |
|
||||
| DATABASE_URL | CLEVERAGENTS_DATABASE_URL | General | (none) | The URL of the PostgreSQL database. Defaults to 'p... |
|
||||
| GOENV | CLEVERAGENTS_GOENV | General | development | Whether to run in development or production mode. ... |
|
||||
| LOCAL_MODE | CLEVERAGENTS_LOCAL_MODE | General | (none) | Whether to run in local mode |
|
||||
| OLLAMA_BASE_URL | CLEVERAGENTS_OLLAMA_BASE_URL | General | (none) | The base URL of the Ollama server—only need when t... |
|
||||
| PLANDEX_API_HOST | CLEVERAGENTS_API_HOST | General | (none) | Defaults to 'http://localhost:8099' if PLANDEX_ENV... |
|
||||
| PLANDEX_BASE_DIR | CLEVERAGENTS_BASE_DIR | General | (none) | The base directory to read and write files. Defaul... |
|
||||
| PLANDEX_ENV | CLEVERAGENTS_ENV | General | development | Set this to 'development' to default to the local ... |
|
||||
| PORT | CLEVERAGENTS_PORT | General | 8099 | The port the server listens on. Defaults to 8099. |
|
||||
| ANTHROPIC_API_KEY | ANTHROPIC_API_KEY | LLM Providers | (none) | Your Anthropic API key |
|
||||
| AWS_ACCESS_KEY_ID | AWS_ACCESS_KEY_ID | LLM Providers | (none) | Your AWS access key ID |
|
||||
| AWS_INFERENCE_PROFILE_ARN | AWS_INFERENCE_PROFILE_ARN | LLM Providers | (none) | Your AWS inference profile ARN |
|
||||
| AWS_REGION | AWS_REGION | LLM Providers | (none) | Your AWS region |
|
||||
| AWS_SECRET_ACCESS_KEY | AWS_SECRET_ACCESS_KEY | LLM Providers | (none) | Your AWS secret access key |
|
||||
| AWS_SESSION_TOKEN | AWS_SESSION_TOKEN | LLM Providers | (none) | Your AWS session token |
|
||||
| AZURE_API_BASE | AZURE_API_BASE | LLM Providers | (none) | Your Azure OpenAI API base URL |
|
||||
| AZURE_API_VERSION | AZURE_API_VERSION | LLM Providers | (none) | Your Azure OpenAI API version |
|
||||
| AZURE_DEPLOYMENTS_MAP | AZURE_DEPLOYMENTS_MAP | LLM Providers | (none) | Your Azure OpenAI deployments map—a JSON object ma... |
|
||||
| AZURE_OPENAI_API_KEY | AZURE_OPENAI_API_KEY | LLM Providers | (none) | Your Azure OpenAI API key |
|
||||
| DEEPSEEK_API_KEY | DEEPSEEK_API_KEY | LLM Providers | (none) | Your DeepSeek API key |
|
||||
| GEMINI_API_KEY | GEMINI_API_KEY | LLM Providers | (none) | Your Google AI Studio API key |
|
||||
| GOOGLE_APPLICATION_CREDENTIALS | GOOGLE_APPLICATION_CREDENTIALS | LLM Providers | (none) | Your Google Vertex AI credentials file path |
|
||||
| OPENAI_API_KEY | OPENAI_API_KEY | LLM Providers | (none) | Your OpenAI key |
|
||||
| OPENAI_ORG_ID | OPENAI_ORG_ID | LLM Providers | (none) | Your OpenAI organization ID. Defaults to empty. |
|
||||
| OPENROUTER_API_KEY | OPENROUTER_API_KEY | LLM Providers | (none) | Your OpenRouter.ai API key |
|
||||
| PERPLEXITY_API_KEY | PERPLEXITY_API_KEY | LLM Providers | (none) | Your Perplexity API key |
|
||||
| PLANDEX_AWS_PROFILE | CLEVERAGENTS_AWS_PROFILE | LLM Providers | (none) | Name of AWS profile in ~/.aws/credentials to use f... |
|
||||
| VERTEXAI_LOCATION | VERTEXAI_LOCATION | LLM Providers | (none) | Your Google Vertex AI location |
|
||||
| VERTEXAI_PROJECT | VERTEXAI_PROJECT | LLM Providers | (none) | Your Google Vertex AI project ID |
|
||||
| SMTP_HOST | CLEVERAGENTS_SMTP_HOST | SMTP | (none) | Your SMTP host. |
|
||||
| SMTP_PASSWORD | CLEVERAGENTS_SMTP_PASSWORD | SMTP | (none) | SMTP password. |
|
||||
| SMTP_PORT | CLEVERAGENTS_SMTP_PORT | SMTP | (none) | Set this to 1025 e.g. if you are using mailhog. |
|
||||
| SMTP_USER | CLEVERAGENTS_SMTP_USER | SMTP | (none) | SMTP username. |
|
||||
| APP_SUBDOMAIN | CLEVERAGENTS_APP_SUBDOMAIN | Server | (none) | |
|
||||
| DB_HOST | CLEVERAGENTS_DB_HOST | Server | (none) | |
|
||||
| DB_NAME | CLEVERAGENTS_DB_NAME | Server | (none) | |
|
||||
| DB_PASSWORD | CLEVERAGENTS_DB_PASSWORD | Server | (none) | |
|
||||
| DB_PORT | CLEVERAGENTS_DB_PORT | Server | (none) | |
|
||||
| DB_USER | CLEVERAGENTS_DB_USER | Server | (none) | |
|
||||
| ECS_CONTAINER_METADATA_URI | CLEVERAGENTS_ECS_CONTAINER_METADATA_URI | Server | (none) | |
|
||||
| HOME | CLEVERAGENTS_HOME | Server | (none) | |
|
||||
| IP | CLEVERAGENTS_IP | Server | (none) | |
|
||||
| IS_CLOUD | CLEVERAGENTS_IS_CLOUD | Server | (none) | |
|
||||
| LITELLM_PROXY_DIR | CLEVERAGENTS_LITELLM_PROXY_DIR | Server | (none) | |
|
||||
| MIGRATIONS_DIR | CLEVERAGENTS_MIGRATIONS_DIR | Server | (none) | |
|
||||
| PATH | CLEVERAGENTS_PATH | Server | (none) | |
|
||||
| PLANDEX_CLOUD | CLEVERAGENTS_CLOUD | Server | (none) | |
|
||||
| SMTP_FROM | CLEVERAGENTS_SMTP_FROM | Server | (none) | |
|
||||
| VERBOSE_LOGGING | CLEVERAGENTS_VERBOSE_LOGGING | Server | (none) | |
|
||||
| PLANDEX_SKIP_UPGRADE | CLEVERAGENTS_SKIP_UPGRADE | Upgrades | (none) | Set this to '1' to skip the auto-upgrade check whe... |
|
||||
|
||||
## Conflicts and Warnings
|
||||
|
||||
- **PLANDEX_ENV**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_ENV
|
||||
|
||||
- **PLANDEX_API_HOST**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_API_HOST
|
||||
|
||||
- **PLANDEX_AWS_PROFILE**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_AWS_PROFILE
|
||||
|
||||
- **PLANDEX_SKIP_UPGRADE**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_SKIP_UPGRADE
|
||||
|
||||
- **PLANDEX_OUT_DIR**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_OUT_DIR
|
||||
|
||||
- **PLANDEX_DEV_CLI_OUT_DIR**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
|
||||
- **PLANDEX_DEV_CLI_OUT_DIR**: Development-specific variable, may need reconsideration
|
||||
- Type: development_only
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
|
||||
- **PLANDEX_DEV_CLI_NAME**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_NAME
|
||||
|
||||
- **PLANDEX_DEV_CLI_NAME**: Development-specific variable, may need reconsideration
|
||||
- Type: development_only
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_NAME
|
||||
|
||||
- **PLANDEX_DEV_CLI_ALIAS**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
|
||||
- **PLANDEX_DEV_CLI_ALIAS**: Development-specific variable, may need reconsideration
|
||||
- Type: development_only
|
||||
- Suggested: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
|
||||
- **PLANDEX_BASE_DIR**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_BASE_DIR
|
||||
|
||||
- **PLANDEX_CLOUD**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_CLOUD
|
||||
|
||||
- **PLANDEX_REPL_SESSION_ID**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_REPL_SESSION_ID
|
||||
|
||||
- **PLANDEX_REPL**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_REPL
|
||||
|
||||
- **PLANDEX_REPL_OUTPUT_FILE**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_REPL_OUTPUT_FILE
|
||||
|
||||
- **PLANDEX_DISABLE_SUGGESTIONS**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_DISABLE_SUGGESTIONS
|
||||
|
||||
- **PLANDEX_COLUMNS**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_COLUMNS
|
||||
|
||||
- **PLANDEX_STREAM_FOREGROUND_COLOR**: Rename from Plandex to CleverAgents namespace
|
||||
- Type: migration_required
|
||||
- Suggested: CLEVERAGENTS_STREAM_FOREGROUND_COLOR
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,886 @@
|
||||
variables:
|
||||
COLUMNS:
|
||||
name: COLUMNS
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/term/utils.go:109
|
||||
proposed_cleveragents_name: CLEVERAGENTS_COLUMNS
|
||||
EDITOR:
|
||||
name: EDITOR
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/cmd/plan_exec_helpers.go:41
|
||||
proposed_cleveragents_name: CLEVERAGENTS_EDITOR
|
||||
GLAMOUR_STYLE:
|
||||
name: GLAMOUR_STYLE
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/term/format.go:35
|
||||
proposed_cleveragents_name: CLEVERAGENTS_GLAMOUR_STYLE
|
||||
PLANDEX_COLUMNS:
|
||||
name: PLANDEX_COLUMNS
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/term/utils.go:88
|
||||
- app/cli/term/utils.go:89
|
||||
proposed_cleveragents_name: CLEVERAGENTS_COLUMNS
|
||||
PLANDEX_DISABLE_SUGGESTIONS:
|
||||
name: PLANDEX_DISABLE_SUGGESTIONS
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/term/help.go:180
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DISABLE_SUGGESTIONS
|
||||
PLANDEX_REPL:
|
||||
name: PLANDEX_REPL
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/lib/repl.go:163
|
||||
- app/cli/stream_tui/run.go:102
|
||||
- app/cli/term/repl.go:5
|
||||
proposed_cleveragents_name: CLEVERAGENTS_REPL
|
||||
PLANDEX_REPL_OUTPUT_FILE:
|
||||
name: PLANDEX_REPL_OUTPUT_FILE
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/stream_tui/run.go:102
|
||||
- app/cli/stream_tui/run.go:104
|
||||
proposed_cleveragents_name: CLEVERAGENTS_REPL_OUTPUT_FILE
|
||||
PLANDEX_REPL_SESSION_ID:
|
||||
name: PLANDEX_REPL_SESSION_ID
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/cmd/load.go:58
|
||||
- app/cli/cmd/usage.go:73
|
||||
- app/cli/cmd/usage.go:82
|
||||
- app/cli/cmd/usage.go:240
|
||||
- app/cli/cmd/usage.go:259
|
||||
- app/cli/plan_exec/tell.go:150
|
||||
proposed_cleveragents_name: CLEVERAGENTS_REPL_SESSION_ID
|
||||
PLANDEX_STREAM_FOREGROUND_COLOR:
|
||||
name: PLANDEX_STREAM_FOREGROUND_COLOR
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/term/utils.go:125
|
||||
- app/cli/term/utils.go:126
|
||||
proposed_cleveragents_name: CLEVERAGENTS_STREAM_FOREGROUND_COLOR
|
||||
SHELL:
|
||||
name: SHELL
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/lib/apply.go:375
|
||||
- app/cli/term/os.go:15
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SHELL
|
||||
VISUAL:
|
||||
name: VISUAL
|
||||
default: ''
|
||||
description: ''
|
||||
category: CLI
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/cmd/plan_exec_helpers.go:43
|
||||
proposed_cleveragents_name: CLEVERAGENTS_VISUAL
|
||||
GOPATH:
|
||||
name: GOPATH
|
||||
default: ''
|
||||
description: This should be already set to your Go folder if you've installed
|
||||
Golang.
|
||||
category: Development
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_GOPATH
|
||||
PLANDEX_DEV_CLI_ALIAS:
|
||||
name: PLANDEX_DEV_CLI_ALIAS
|
||||
default: pdxd
|
||||
description: The alias for the development binary when using dev.sh
|
||||
category: Development
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
PLANDEX_DEV_CLI_NAME:
|
||||
name: PLANDEX_DEV_CLI_NAME
|
||||
default: plandex-dev
|
||||
description: The name of the development binary when using dev.sh
|
||||
category: Development
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DEV_CLI_NAME
|
||||
PLANDEX_DEV_CLI_OUT_DIR:
|
||||
name: PLANDEX_DEV_CLI_OUT_DIR
|
||||
default: /usr/local/bin
|
||||
description: Where the development binary should be output when using dev.sh
|
||||
category: Development
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
PLANDEX_OUT_DIR:
|
||||
name: PLANDEX_OUT_DIR
|
||||
default: /usr/local/bin
|
||||
description: Where the development binary should be output when using dev.sh
|
||||
category: Development
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_OUT_DIR
|
||||
API_HOST:
|
||||
name: API_HOST
|
||||
default: ''
|
||||
description: The host the API server listens on. Defaults to 'http://localhost:$PORT'.
|
||||
In production mode, should be a host like 'https://api.your-domain.ai'.
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: CLEVERAGENTS_API_HOST
|
||||
DATABASE_URL:
|
||||
name: DATABASE_URL
|
||||
default: ''
|
||||
description: The URL of the PostgreSQL database. Defaults to 'postgres://plandex:plandex@plandex-postgres:5432/plandex?sslmode=disable'
|
||||
in development mode
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:27
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DATABASE_URL
|
||||
GOENV:
|
||||
name: GOENV
|
||||
default: development
|
||||
description: Whether to run in development or production mode. Must be 'development'
|
||||
or 'production'
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/account_helpers.go:17
|
||||
- app/server/db/db.go:57
|
||||
- app/server/db/db.go:129
|
||||
- app/server/db/db.go:137
|
||||
- app/server/db/db.go:150
|
||||
- app/server/db/fs.go:20
|
||||
- app/server/db/fs.go:21
|
||||
- app/server/db/fs.go:28
|
||||
- app/server/email/invite.go:12
|
||||
- app/server/email/verification.go:14
|
||||
- app/server/email/verification.go:31
|
||||
- app/server/handlers/accounts.go:29
|
||||
- app/server/handlers/accounts.go:123
|
||||
- app/server/handlers/auth_helpers.go:98
|
||||
- app/server/handlers/auth_helpers.go:108
|
||||
- app/server/handlers/auth_helpers.go:145
|
||||
- app/server/handlers/auth_helpers.go:152
|
||||
- app/server/handlers/auth_helpers.go:201
|
||||
- app/server/handlers/auth_helpers.go:209
|
||||
- app/server/handlers/auth_helpers.go:260
|
||||
- app/server/handlers/auth_helpers.go:300
|
||||
- app/server/handlers/auth_helpers.go:436
|
||||
- app/server/handlers/invites.go:22
|
||||
- app/server/handlers/invites.go:165
|
||||
- app/server/handlers/invites.go:223
|
||||
- app/server/handlers/invites.go:281
|
||||
- app/server/handlers/invites.go:339
|
||||
- app/server/handlers/sessions.go:85
|
||||
- app/server/handlers/users.go:21
|
||||
- app/server/handlers/users.go:96
|
||||
- app/server/host/ip.go:16
|
||||
- app/server/model/client.go:538
|
||||
- app/server/setup/setup.go:67
|
||||
proposed_cleveragents_name: CLEVERAGENTS_GOENV
|
||||
LOCAL_MODE:
|
||||
name: LOCAL_MODE
|
||||
default: ''
|
||||
description: Whether to run in local mode
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/account_helpers.go:17
|
||||
- app/server/db/fs.go:21
|
||||
- app/server/handlers/accounts.go:29
|
||||
- app/server/handlers/accounts.go:123
|
||||
- app/server/handlers/auth_helpers.go:300
|
||||
- app/server/handlers/auth_helpers.go:436
|
||||
- app/server/handlers/invites.go:22
|
||||
- app/server/handlers/invites.go:165
|
||||
- app/server/handlers/invites.go:223
|
||||
- app/server/handlers/invites.go:281
|
||||
- app/server/handlers/invites.go:339
|
||||
- app/server/handlers/sessions.go:85
|
||||
- app/server/handlers/users.go:21
|
||||
- app/server/handlers/users.go:96
|
||||
proposed_cleveragents_name: CLEVERAGENTS_LOCAL_MODE
|
||||
OLLAMA_BASE_URL:
|
||||
name: OLLAMA_BASE_URL
|
||||
default: ''
|
||||
description: "The base URL of the Ollama server\u2014only need when the server\
|
||||
\ is running in a Docker container and needs to access Ollama models running\
|
||||
\ outside of the container"
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/model/client.go:295
|
||||
- app/server/model/client.go:296
|
||||
- app/server/model/litellm.go:125
|
||||
- app/server/model/litellm.go:128
|
||||
proposed_cleveragents_name: CLEVERAGENTS_OLLAMA_BASE_URL
|
||||
PLANDEX_API_HOST:
|
||||
name: PLANDEX_API_HOST
|
||||
default: ''
|
||||
description: "Defaults to 'http://localhost:8099' if PLANDEX_ENV is development,\
|
||||
\ otherwise it's 'https://api.plandex.ai'\u2014override this to use a different\
|
||||
\ host."
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/api/clients.go:25
|
||||
proposed_cleveragents_name: CLEVERAGENTS_API_HOST
|
||||
PLANDEX_BASE_DIR:
|
||||
name: PLANDEX_BASE_DIR
|
||||
default: ''
|
||||
description: The base directory to read and write files. Defaults to '$HOME/plandex-server'
|
||||
in development mode, '/plandex-server' in production.
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/fs.go:19
|
||||
- app/server/db/fs.go:25
|
||||
proposed_cleveragents_name: CLEVERAGENTS_BASE_DIR
|
||||
PLANDEX_ENV:
|
||||
name: PLANDEX_ENV
|
||||
default: development
|
||||
description: Set this to 'development' to default to the local development server
|
||||
instead of Plandex Cloud when working on Plandex itself.
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/api/clients.go:24
|
||||
- app/cli/fs/fs.go:33
|
||||
- app/cli/fs/fs.go:73
|
||||
- app/cli/fs/fs.go:122
|
||||
proposed_cleveragents_name: CLEVERAGENTS_ENV
|
||||
PORT:
|
||||
name: PORT
|
||||
default: '8099'
|
||||
description: The port the server listens on. Defaults to 8099.
|
||||
category: General
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/handlers/proxy_helper.go:48
|
||||
- app/server/setup/setup.go:85
|
||||
proposed_cleveragents_name: CLEVERAGENTS_PORT
|
||||
ANTHROPIC_API_KEY:
|
||||
name: ANTHROPIC_API_KEY
|
||||
default: ''
|
||||
description: Your Anthropic API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: ANTHROPIC_API_KEY
|
||||
AWS_ACCESS_KEY_ID:
|
||||
name: AWS_ACCESS_KEY_ID
|
||||
default: ''
|
||||
description: Your AWS access key ID
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AWS_ACCESS_KEY_ID
|
||||
AWS_INFERENCE_PROFILE_ARN:
|
||||
name: AWS_INFERENCE_PROFILE_ARN
|
||||
default: ''
|
||||
description: Your AWS inference profile ARN
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AWS_INFERENCE_PROFILE_ARN
|
||||
AWS_REGION:
|
||||
name: AWS_REGION
|
||||
default: ''
|
||||
description: Your AWS region
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AWS_REGION
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
name: AWS_SECRET_ACCESS_KEY
|
||||
default: ''
|
||||
description: Your AWS secret access key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AWS_SECRET_ACCESS_KEY
|
||||
AWS_SESSION_TOKEN:
|
||||
name: AWS_SESSION_TOKEN
|
||||
default: ''
|
||||
description: Your AWS session token
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AWS_SESSION_TOKEN
|
||||
AZURE_API_BASE:
|
||||
name: AZURE_API_BASE
|
||||
default: ''
|
||||
description: Your Azure OpenAI API base URL
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AZURE_API_BASE
|
||||
AZURE_API_VERSION:
|
||||
name: AZURE_API_VERSION
|
||||
default: ''
|
||||
description: Your Azure OpenAI API version
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AZURE_API_VERSION
|
||||
AZURE_DEPLOYMENTS_MAP:
|
||||
name: AZURE_DEPLOYMENTS_MAP
|
||||
default: ''
|
||||
description: "Your Azure OpenAI deployments map\u2014a JSON object mapping model\
|
||||
\ names to deployment names (only needed if deployment names are different from\
|
||||
\ model names)"
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AZURE_DEPLOYMENTS_MAP
|
||||
AZURE_OPENAI_API_KEY:
|
||||
name: AZURE_OPENAI_API_KEY
|
||||
default: ''
|
||||
description: Your Azure OpenAI API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: AZURE_OPENAI_API_KEY
|
||||
DEEPSEEK_API_KEY:
|
||||
name: DEEPSEEK_API_KEY
|
||||
default: ''
|
||||
description: Your DeepSeek API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: DEEPSEEK_API_KEY
|
||||
GEMINI_API_KEY:
|
||||
name: GEMINI_API_KEY
|
||||
default: ''
|
||||
description: Your Google AI Studio API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: GEMINI_API_KEY
|
||||
GOOGLE_APPLICATION_CREDENTIALS:
|
||||
name: GOOGLE_APPLICATION_CREDENTIALS
|
||||
default: ''
|
||||
description: Your Google Vertex AI credentials file path
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: GOOGLE_APPLICATION_CREDENTIALS
|
||||
OPENAI_API_KEY:
|
||||
name: OPENAI_API_KEY
|
||||
default: ''
|
||||
description: Your OpenAI key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: OPENAI_API_KEY
|
||||
OPENAI_ORG_ID:
|
||||
name: OPENAI_ORG_ID
|
||||
default: ''
|
||||
description: Your OpenAI organization ID. Defaults to empty.
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/lib/context_load.go:65
|
||||
- app/cli/lib/context_load.go:84
|
||||
proposed_cleveragents_name: OPENAI_ORG_ID
|
||||
OPENROUTER_API_KEY:
|
||||
name: OPENROUTER_API_KEY
|
||||
default: ''
|
||||
description: Your OpenRouter.ai API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: OPENROUTER_API_KEY
|
||||
PERPLEXITY_API_KEY:
|
||||
name: PERPLEXITY_API_KEY
|
||||
default: ''
|
||||
description: Your Perplexity API key
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: PERPLEXITY_API_KEY
|
||||
PLANDEX_AWS_PROFILE:
|
||||
name: PLANDEX_AWS_PROFILE
|
||||
default: ''
|
||||
description: Name of AWS profile in ~/.aws/credentials to use for AWS Bedrock.
|
||||
If not set, the credentials file won't be used.
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/lib/model_credentials.go:247
|
||||
proposed_cleveragents_name: CLEVERAGENTS_AWS_PROFILE
|
||||
VERTEXAI_LOCATION:
|
||||
name: VERTEXAI_LOCATION
|
||||
default: ''
|
||||
description: Your Google Vertex AI location
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: VERTEXAI_LOCATION
|
||||
VERTEXAI_PROJECT:
|
||||
name: VERTEXAI_PROJECT
|
||||
default: ''
|
||||
description: Your Google Vertex AI project ID
|
||||
category: LLM Providers
|
||||
sources:
|
||||
- documentation
|
||||
usage_locations: []
|
||||
proposed_cleveragents_name: VERTEXAI_PROJECT
|
||||
SMTP_HOST:
|
||||
name: SMTP_HOST
|
||||
default: ''
|
||||
description: Your SMTP host.
|
||||
category: SMTP
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/email.go:56
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SMTP_HOST
|
||||
SMTP_PASSWORD:
|
||||
name: SMTP_PASSWORD
|
||||
default: ''
|
||||
description: SMTP password.
|
||||
category: SMTP
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/email.go:59
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SMTP_PASSWORD
|
||||
SMTP_PORT:
|
||||
name: SMTP_PORT
|
||||
default: ''
|
||||
description: Set this to 1025 e.g. if you are using mailhog.
|
||||
category: SMTP
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/email.go:57
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SMTP_PORT
|
||||
SMTP_USER:
|
||||
name: SMTP_USER
|
||||
default: ''
|
||||
description: SMTP username.
|
||||
category: SMTP
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/email.go:58
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SMTP_USER
|
||||
APP_SUBDOMAIN:
|
||||
name: APP_SUBDOMAIN
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/handlers/auth_helpers.go:99
|
||||
- app/server/handlers/auth_helpers.go:146
|
||||
- app/server/handlers/auth_helpers.go:202
|
||||
proposed_cleveragents_name: CLEVERAGENTS_APP_SUBDOMAIN
|
||||
DB_HOST:
|
||||
name: DB_HOST
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:29
|
||||
- app/server/db/db.go:36
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DB_HOST
|
||||
DB_NAME:
|
||||
name: DB_NAME
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:33
|
||||
- app/server/db/db.go:36
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DB_NAME
|
||||
DB_PASSWORD:
|
||||
name: DB_PASSWORD
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:32
|
||||
- app/server/db/db.go:34
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DB_PASSWORD
|
||||
DB_PORT:
|
||||
name: DB_PORT
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:30
|
||||
- app/server/db/db.go:36
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DB_PORT
|
||||
DB_USER:
|
||||
name: DB_USER
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:31
|
||||
- app/server/db/db.go:36
|
||||
proposed_cleveragents_name: CLEVERAGENTS_DB_USER
|
||||
ECS_CONTAINER_METADATA_URI:
|
||||
name: ECS_CONTAINER_METADATA_URI
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/host/ip.go:48
|
||||
proposed_cleveragents_name: CLEVERAGENTS_ECS_CONTAINER_METADATA_URI
|
||||
HOME:
|
||||
name: HOME
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/model/litellm.go:122
|
||||
proposed_cleveragents_name: CLEVERAGENTS_HOME
|
||||
IP:
|
||||
name: IP
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/host/ip.go:31
|
||||
- app/server/host/ip.go:32
|
||||
proposed_cleveragents_name: CLEVERAGENTS_IP
|
||||
IS_CLOUD:
|
||||
name: IS_CLOUD
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/invite.go:20
|
||||
- app/server/email/verification.go:24
|
||||
- app/server/handlers/accounts.go:23
|
||||
- app/server/handlers/client_helper.go:72
|
||||
- app/server/handlers/models.go:39
|
||||
- app/server/handlers/models.go:46
|
||||
- app/server/handlers/models.go:127
|
||||
- app/server/handlers/models.go:213
|
||||
- app/server/handlers/models.go:245
|
||||
- app/server/handlers/models.go:437
|
||||
- app/server/handlers/orgs.go:58
|
||||
- app/server/handlers/settings.go:117
|
||||
- app/server/handlers/settings.go:137
|
||||
- app/server/host/ip.go:21
|
||||
- app/server/routes/routes.go:56
|
||||
proposed_cleveragents_name: CLEVERAGENTS_IS_CLOUD
|
||||
LITELLM_PROXY_DIR:
|
||||
name: LITELLM_PROXY_DIR
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/model/litellm.go:115
|
||||
- app/server/model/litellm.go:116
|
||||
proposed_cleveragents_name: CLEVERAGENTS_LITELLM_PROXY_DIR
|
||||
MIGRATIONS_DIR:
|
||||
name: MIGRATIONS_DIR
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/db.go:98
|
||||
- app/server/db/db.go:99
|
||||
proposed_cleveragents_name: CLEVERAGENTS_MIGRATIONS_DIR
|
||||
PATH:
|
||||
name: PATH
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/model/litellm.go:121
|
||||
proposed_cleveragents_name: CLEVERAGENTS_PATH
|
||||
PLANDEX_CLOUD:
|
||||
name: PLANDEX_CLOUD
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/db/settings_helpers.go:28
|
||||
- app/server/db/settings_helpers.go:114
|
||||
- app/server/db/settings_helpers.go:148
|
||||
proposed_cleveragents_name: CLEVERAGENTS_CLOUD
|
||||
SMTP_FROM:
|
||||
name: SMTP_FROM
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/email/email.go:60
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SMTP_FROM
|
||||
VERBOSE_LOGGING:
|
||||
name: VERBOSE_LOGGING
|
||||
default: ''
|
||||
description: ''
|
||||
category: Server
|
||||
sources:
|
||||
- code
|
||||
usage_locations:
|
||||
- app/server/syntax/file_map/map.go:15
|
||||
proposed_cleveragents_name: CLEVERAGENTS_VERBOSE_LOGGING
|
||||
PLANDEX_SKIP_UPGRADE:
|
||||
name: PLANDEX_SKIP_UPGRADE
|
||||
default: ''
|
||||
description: Set this to '1' to skip the auto-upgrade check when running the CLI.
|
||||
category: Upgrades
|
||||
sources:
|
||||
- documentation
|
||||
- code
|
||||
usage_locations:
|
||||
- app/cli/upgrade.go:28
|
||||
proposed_cleveragents_name: CLEVERAGENTS_SKIP_UPGRADE
|
||||
conflicts:
|
||||
- old_name: PLANDEX_ENV
|
||||
new_name: CLEVERAGENTS_ENV
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_API_HOST
|
||||
new_name: CLEVERAGENTS_API_HOST
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_AWS_PROFILE
|
||||
new_name: CLEVERAGENTS_AWS_PROFILE
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_SKIP_UPGRADE
|
||||
new_name: CLEVERAGENTS_SKIP_UPGRADE
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_OUT_DIR
|
||||
new_name: CLEVERAGENTS_OUT_DIR
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_DEV_CLI_OUT_DIR
|
||||
new_name: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_DEV_CLI_OUT_DIR
|
||||
new_name: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
type: development_only
|
||||
description: Development-specific variable, may need reconsideration
|
||||
- old_name: PLANDEX_DEV_CLI_NAME
|
||||
new_name: CLEVERAGENTS_DEV_CLI_NAME
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_DEV_CLI_NAME
|
||||
new_name: CLEVERAGENTS_DEV_CLI_NAME
|
||||
type: development_only
|
||||
description: Development-specific variable, may need reconsideration
|
||||
- old_name: PLANDEX_DEV_CLI_ALIAS
|
||||
new_name: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_DEV_CLI_ALIAS
|
||||
new_name: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
type: development_only
|
||||
description: Development-specific variable, may need reconsideration
|
||||
- old_name: PLANDEX_BASE_DIR
|
||||
new_name: CLEVERAGENTS_BASE_DIR
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_CLOUD
|
||||
new_name: CLEVERAGENTS_CLOUD
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_REPL_SESSION_ID
|
||||
new_name: CLEVERAGENTS_REPL_SESSION_ID
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_REPL
|
||||
new_name: CLEVERAGENTS_REPL
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_REPL_OUTPUT_FILE
|
||||
new_name: CLEVERAGENTS_REPL_OUTPUT_FILE
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_DISABLE_SUGGESTIONS
|
||||
new_name: CLEVERAGENTS_DISABLE_SUGGESTIONS
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_COLUMNS
|
||||
new_name: CLEVERAGENTS_COLUMNS
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
- old_name: PLANDEX_STREAM_FOREGROUND_COLOR
|
||||
new_name: CLEVERAGENTS_STREAM_FOREGROUND_COLOR
|
||||
type: migration_required
|
||||
description: Rename from Plandex to CleverAgents namespace
|
||||
mapping:
|
||||
PLANDEX_ENV: CLEVERAGENTS_ENV
|
||||
PLANDEX_API_HOST: CLEVERAGENTS_API_HOST
|
||||
PLANDEX_AWS_PROFILE: CLEVERAGENTS_AWS_PROFILE
|
||||
PLANDEX_SKIP_UPGRADE: CLEVERAGENTS_SKIP_UPGRADE
|
||||
PLANDEX_OUT_DIR: CLEVERAGENTS_OUT_DIR
|
||||
PLANDEX_DEV_CLI_OUT_DIR: CLEVERAGENTS_DEV_CLI_OUT_DIR
|
||||
PLANDEX_DEV_CLI_NAME: CLEVERAGENTS_DEV_CLI_NAME
|
||||
PLANDEX_DEV_CLI_ALIAS: CLEVERAGENTS_DEV_CLI_ALIAS
|
||||
GOPATH: CLEVERAGENTS_GOPATH
|
||||
GOENV: CLEVERAGENTS_GOENV
|
||||
PLANDEX_BASE_DIR: CLEVERAGENTS_BASE_DIR
|
||||
API_HOST: CLEVERAGENTS_API_HOST
|
||||
PORT: CLEVERAGENTS_PORT
|
||||
DATABASE_URL: CLEVERAGENTS_DATABASE_URL
|
||||
LOCAL_MODE: CLEVERAGENTS_LOCAL_MODE
|
||||
OLLAMA_BASE_URL: CLEVERAGENTS_OLLAMA_BASE_URL
|
||||
SMTP_HOST: CLEVERAGENTS_SMTP_HOST
|
||||
SMTP_PORT: CLEVERAGENTS_SMTP_PORT
|
||||
SMTP_USER: CLEVERAGENTS_SMTP_USER
|
||||
SMTP_PASSWORD: CLEVERAGENTS_SMTP_PASSWORD
|
||||
DB_HOST: CLEVERAGENTS_DB_HOST
|
||||
DB_PORT: CLEVERAGENTS_DB_PORT
|
||||
DB_USER: CLEVERAGENTS_DB_USER
|
||||
DB_PASSWORD: CLEVERAGENTS_DB_PASSWORD
|
||||
DB_NAME: CLEVERAGENTS_DB_NAME
|
||||
MIGRATIONS_DIR: CLEVERAGENTS_MIGRATIONS_DIR
|
||||
PLANDEX_CLOUD: CLEVERAGENTS_CLOUD
|
||||
SMTP_FROM: CLEVERAGENTS_SMTP_FROM
|
||||
IS_CLOUD: CLEVERAGENTS_IS_CLOUD
|
||||
APP_SUBDOMAIN: CLEVERAGENTS_APP_SUBDOMAIN
|
||||
IP: CLEVERAGENTS_IP
|
||||
ECS_CONTAINER_METADATA_URI: CLEVERAGENTS_ECS_CONTAINER_METADATA_URI
|
||||
LITELLM_PROXY_DIR: CLEVERAGENTS_LITELLM_PROXY_DIR
|
||||
PATH: CLEVERAGENTS_PATH
|
||||
HOME: CLEVERAGENTS_HOME
|
||||
VERBOSE_LOGGING: CLEVERAGENTS_VERBOSE_LOGGING
|
||||
PLANDEX_REPL_SESSION_ID: CLEVERAGENTS_REPL_SESSION_ID
|
||||
EDITOR: CLEVERAGENTS_EDITOR
|
||||
VISUAL: CLEVERAGENTS_VISUAL
|
||||
SHELL: CLEVERAGENTS_SHELL
|
||||
PLANDEX_REPL: CLEVERAGENTS_REPL
|
||||
PLANDEX_REPL_OUTPUT_FILE: CLEVERAGENTS_REPL_OUTPUT_FILE
|
||||
GLAMOUR_STYLE: CLEVERAGENTS_GLAMOUR_STYLE
|
||||
PLANDEX_DISABLE_SUGGESTIONS: CLEVERAGENTS_DISABLE_SUGGESTIONS
|
||||
PLANDEX_COLUMNS: CLEVERAGENTS_COLUMNS
|
||||
COLUMNS: CLEVERAGENTS_COLUMNS
|
||||
PLANDEX_STREAM_FOREGROUND_COLOR: CLEVERAGENTS_STREAM_FOREGROUND_COLOR
|
||||
statistics:
|
||||
total_variables: 66
|
||||
documented_variables: 39
|
||||
code_only_variables: 27
|
||||
migration_required: 16
|
||||
+160
-160
@@ -136,12 +136,12 @@
|
||||
"description": "Development environment setup or commands",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"PLANDEX_DEV_CLI_OUT_DIR",
|
||||
"NAME",
|
||||
"OUT",
|
||||
"PLANDEX_DEV_CLI_ALIAS",
|
||||
"ALIAS",
|
||||
"PLANDEX_DEV_CLI_NAME",
|
||||
"PLANDEX_DEV_CLI_ALIAS",
|
||||
"PLANDEX_DEV_CLI_OUT_DIR"
|
||||
"OUT"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -174,18 +174,18 @@
|
||||
"description": "Set platform",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"LOC",
|
||||
"VERSION",
|
||||
"UID",
|
||||
"IS_DOCKER",
|
||||
"BASH_SOURCE",
|
||||
"ENCODED_TAG",
|
||||
"VERSION",
|
||||
"ARCH",
|
||||
"RELEASES_URL",
|
||||
"PLANDEX_VERSION",
|
||||
"BIN_DIR",
|
||||
"ARCH",
|
||||
"SCRIPT_DIR",
|
||||
"IS_DOCKER",
|
||||
"UID",
|
||||
"ENCODED_TAG",
|
||||
"PLATFORM",
|
||||
"RELEASES_URL"
|
||||
"LOC"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -283,11 +283,11 @@
|
||||
"description": "Development environment setup or commands",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"ZSH_VERSION",
|
||||
"GOPATH",
|
||||
"PATH",
|
||||
"BASH_SOURCE",
|
||||
"SCRIPT_DIR"
|
||||
"GOPATH",
|
||||
"SCRIPT_DIR",
|
||||
"ZSH_VERSION",
|
||||
"PATH"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -337,10 +337,10 @@
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"REQUIRED_PACKAGES",
|
||||
"REQUIRED_PYTHON",
|
||||
"BASH_SOURCE",
|
||||
"VENV_DIR",
|
||||
"SCRIPT_DIR"
|
||||
"SCRIPT_DIR",
|
||||
"REQUIRED_PYTHON"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -377,19 +377,19 @@
|
||||
"description": "Wait for a service to be available",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"WAITFORIT_CHILD",
|
||||
"WAITFORIT_PID",
|
||||
"WAITFORIT_HOST",
|
||||
"WAITFORIT_PORT",
|
||||
"WAITFORIT_QUIET",
|
||||
"WAITFORIT_STRICT",
|
||||
"WAITFORIT_BUSYTIMEFLAG",
|
||||
"WAITFORIT_TIMEOUT_PATH",
|
||||
"WAITFORIT_TIMEOUT",
|
||||
"WAITFORIT_RESULT",
|
||||
"WAITFORIT_CLI",
|
||||
"WAITFORIT_ISBUSY",
|
||||
"WAITFORIT_BUSYTIMEFLAG",
|
||||
"WAITFORIT_",
|
||||
"WAITFORIT_TIMEOUT_PATH"
|
||||
"WAITFORIT_RESULT",
|
||||
"WAITFORIT_QUIET",
|
||||
"WAITFORIT_PORT",
|
||||
"WAITFORIT_PID",
|
||||
"WAITFORIT_STRICT",
|
||||
"WAITFORIT_HOST",
|
||||
"WAITFORIT_CHILD",
|
||||
"WAITFORIT_CLI"
|
||||
],
|
||||
"inputs": [
|
||||
"Host and port to check",
|
||||
@@ -633,13 +633,13 @@
|
||||
"description": "Plandex Smoke Test Script",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"PROMPT_CHAT_QUESTION",
|
||||
"REWIND_STEPS",
|
||||
"PROMPT_ADD_TEST",
|
||||
"BASH_SOURCE",
|
||||
"PROMPT_CREATE_FUNCTION",
|
||||
"PROMPT_ADD_TEST",
|
||||
"REWIND_STEPS",
|
||||
"SCRIPT_DIR",
|
||||
"PROMPT_ADD_FEATURE"
|
||||
"PROMPT_ADD_FEATURE",
|
||||
"PROMPT_CHAT_QUESTION",
|
||||
"PROMPT_CREATE_FUNCTION"
|
||||
],
|
||||
"inputs": [
|
||||
"Test project directory",
|
||||
@@ -754,8 +754,8 @@
|
||||
"description": "custom-models-test.sh - Plandex custom models functionality test",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"BASH_SOURCE",
|
||||
"OPENROUTER_API_KEY",
|
||||
"BASH_SOURCE",
|
||||
"SCRIPT_DIR",
|
||||
"PREV_KEY"
|
||||
],
|
||||
@@ -823,11 +823,11 @@
|
||||
"description": "test-utils.sh - Common utilities for Plandex test scripts",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"NC",
|
||||
"PLANDEX_CMD",
|
||||
"GREEN",
|
||||
"TEST_DIR",
|
||||
"YELLOW",
|
||||
"TEST_DIR",
|
||||
"GREEN",
|
||||
"PLANDEX_CMD",
|
||||
"NC",
|
||||
"RED"
|
||||
],
|
||||
"inputs": [
|
||||
@@ -1122,12 +1122,12 @@
|
||||
"description": "Development environment setup or commands",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"PLANDEX_DEV_CLI_OUT_DIR",
|
||||
"NAME",
|
||||
"OUT",
|
||||
"PLANDEX_DEV_CLI_ALIAS",
|
||||
"ALIAS",
|
||||
"PLANDEX_DEV_CLI_NAME",
|
||||
"PLANDEX_DEV_CLI_ALIAS",
|
||||
"PLANDEX_DEV_CLI_OUT_DIR"
|
||||
"OUT"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -1159,18 +1159,18 @@
|
||||
"description": "Set platform",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"LOC",
|
||||
"VERSION",
|
||||
"UID",
|
||||
"IS_DOCKER",
|
||||
"BASH_SOURCE",
|
||||
"ENCODED_TAG",
|
||||
"VERSION",
|
||||
"ARCH",
|
||||
"RELEASES_URL",
|
||||
"PLANDEX_VERSION",
|
||||
"BIN_DIR",
|
||||
"ARCH",
|
||||
"SCRIPT_DIR",
|
||||
"IS_DOCKER",
|
||||
"UID",
|
||||
"ENCODED_TAG",
|
||||
"PLATFORM",
|
||||
"RELEASES_URL"
|
||||
"LOC"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -1268,11 +1268,11 @@
|
||||
"description": "Development environment setup or commands",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"ZSH_VERSION",
|
||||
"GOPATH",
|
||||
"PATH",
|
||||
"BASH_SOURCE",
|
||||
"SCRIPT_DIR"
|
||||
"GOPATH",
|
||||
"SCRIPT_DIR",
|
||||
"ZSH_VERSION",
|
||||
"PATH"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -1321,10 +1321,10 @@
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"REQUIRED_PACKAGES",
|
||||
"REQUIRED_PYTHON",
|
||||
"BASH_SOURCE",
|
||||
"VENV_DIR",
|
||||
"SCRIPT_DIR"
|
||||
"SCRIPT_DIR",
|
||||
"REQUIRED_PYTHON"
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
@@ -1361,19 +1361,19 @@
|
||||
"description": "Wait for a service to be available",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"WAITFORIT_CHILD",
|
||||
"WAITFORIT_PID",
|
||||
"WAITFORIT_HOST",
|
||||
"WAITFORIT_PORT",
|
||||
"WAITFORIT_QUIET",
|
||||
"WAITFORIT_STRICT",
|
||||
"WAITFORIT_BUSYTIMEFLAG",
|
||||
"WAITFORIT_TIMEOUT_PATH",
|
||||
"WAITFORIT_TIMEOUT",
|
||||
"WAITFORIT_RESULT",
|
||||
"WAITFORIT_CLI",
|
||||
"WAITFORIT_ISBUSY",
|
||||
"WAITFORIT_BUSYTIMEFLAG",
|
||||
"WAITFORIT_",
|
||||
"WAITFORIT_TIMEOUT_PATH"
|
||||
"WAITFORIT_RESULT",
|
||||
"WAITFORIT_QUIET",
|
||||
"WAITFORIT_PORT",
|
||||
"WAITFORIT_PID",
|
||||
"WAITFORIT_STRICT",
|
||||
"WAITFORIT_HOST",
|
||||
"WAITFORIT_CHILD",
|
||||
"WAITFORIT_CLI"
|
||||
],
|
||||
"inputs": [
|
||||
"Host and port to check"
|
||||
@@ -1609,13 +1609,13 @@
|
||||
"description": "Plandex Smoke Test Script",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"PROMPT_CHAT_QUESTION",
|
||||
"REWIND_STEPS",
|
||||
"PROMPT_ADD_TEST",
|
||||
"BASH_SOURCE",
|
||||
"PROMPT_CREATE_FUNCTION",
|
||||
"PROMPT_ADD_TEST",
|
||||
"REWIND_STEPS",
|
||||
"SCRIPT_DIR",
|
||||
"PROMPT_ADD_FEATURE"
|
||||
"PROMPT_ADD_FEATURE",
|
||||
"PROMPT_CHAT_QUESTION",
|
||||
"PROMPT_CREATE_FUNCTION"
|
||||
],
|
||||
"inputs": [
|
||||
"Test project directory"
|
||||
@@ -1727,8 +1727,8 @@
|
||||
"description": "custom-models-test.sh - Plandex custom models functionality test",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"BASH_SOURCE",
|
||||
"OPENROUTER_API_KEY",
|
||||
"BASH_SOURCE",
|
||||
"SCRIPT_DIR",
|
||||
"PREV_KEY"
|
||||
],
|
||||
@@ -1793,11 +1793,11 @@
|
||||
"description": "test-utils.sh - Common utilities for Plandex test scripts",
|
||||
"dependencies": [],
|
||||
"environment_vars": [
|
||||
"NC",
|
||||
"PLANDEX_CMD",
|
||||
"GREEN",
|
||||
"TEST_DIR",
|
||||
"YELLOW",
|
||||
"TEST_DIR",
|
||||
"GREEN",
|
||||
"PLANDEX_CMD",
|
||||
"NC",
|
||||
"RED"
|
||||
],
|
||||
"inputs": [
|
||||
@@ -2016,12 +2016,17 @@
|
||||
"app/clear_local.sh",
|
||||
"app/clear_local.sh"
|
||||
],
|
||||
"PLANDEX_DEV_CLI_OUT_DIR": [
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
],
|
||||
"NAME": [
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
],
|
||||
"OUT": [
|
||||
"PLANDEX_DEV_CLI_ALIAS": [
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
@@ -2036,37 +2041,22 @@
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
],
|
||||
"PLANDEX_DEV_CLI_ALIAS": [
|
||||
"OUT": [
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
],
|
||||
"PLANDEX_DEV_CLI_OUT_DIR": [
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh",
|
||||
"app/cli/dev.sh"
|
||||
],
|
||||
"LOC": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"VERSION": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"UID": [
|
||||
"ARCH": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"IS_DOCKER": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"ENCODED_TAG": [
|
||||
"RELEASES_URL": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
@@ -2081,7 +2071,17 @@
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"ARCH": [
|
||||
"IS_DOCKER": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"UID": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"ENCODED_TAG": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
@@ -2091,17 +2091,17 @@
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"RELEASES_URL": [
|
||||
"LOC": [
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh",
|
||||
"app/cli/install.sh"
|
||||
],
|
||||
"ZSH_VERSION": [
|
||||
"GOPATH": [
|
||||
"app/scripts/dev.sh",
|
||||
"app/scripts/dev.sh",
|
||||
"app/scripts/dev.sh"
|
||||
],
|
||||
"GOPATH": [
|
||||
"ZSH_VERSION": [
|
||||
"app/scripts/dev.sh",
|
||||
"app/scripts/dev.sh",
|
||||
"app/scripts/dev.sh"
|
||||
@@ -2116,47 +2116,17 @@
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh"
|
||||
],
|
||||
"REQUIRED_PYTHON": [
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh"
|
||||
],
|
||||
"VENV_DIR": [
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh"
|
||||
],
|
||||
"WAITFORIT_CHILD": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
"REQUIRED_PYTHON": [
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh",
|
||||
"app/scripts/litellm_deps.sh"
|
||||
],
|
||||
"WAITFORIT_PID": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_HOST": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_PORT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_QUIET": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_STRICT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_BUSYTIMEFLAG": [
|
||||
"WAITFORIT_TIMEOUT_PATH": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
@@ -2166,27 +2136,57 @@
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_RESULT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_CLI": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_ISBUSY": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_BUSYTIMEFLAG": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_TIMEOUT_PATH": [
|
||||
"WAITFORIT_RESULT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_QUIET": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_PORT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_PID": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_STRICT": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_HOST": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_CHILD": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
],
|
||||
"WAITFORIT_CLI": [
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh",
|
||||
"app/scripts/wait-for-it.sh"
|
||||
@@ -2201,7 +2201,7 @@
|
||||
"test/_test_apply.sh",
|
||||
"test/_test_apply.sh"
|
||||
],
|
||||
"PROMPT_CHAT_QUESTION": [
|
||||
"PROMPT_ADD_TEST": [
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
@@ -2211,7 +2211,12 @@
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
],
|
||||
"PROMPT_ADD_TEST": [
|
||||
"PROMPT_ADD_FEATURE": [
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
],
|
||||
"PROMPT_CHAT_QUESTION": [
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
@@ -2221,11 +2226,6 @@
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
],
|
||||
"PROMPT_ADD_FEATURE": [
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh",
|
||||
"test/smoke_test.sh"
|
||||
],
|
||||
"OPENROUTER_API_KEY": [
|
||||
"test/test_custom_models.sh",
|
||||
"test/test_custom_models.sh",
|
||||
@@ -2236,17 +2236,7 @@
|
||||
"test/test_custom_models.sh",
|
||||
"test/test_custom_models.sh"
|
||||
],
|
||||
"NC": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
],
|
||||
"PLANDEX_CMD": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
],
|
||||
"GREEN": [
|
||||
"YELLOW": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
@@ -2256,7 +2246,17 @@
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
],
|
||||
"YELLOW": [
|
||||
"GREEN": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
],
|
||||
"PLANDEX_CMD": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
],
|
||||
"NC": [
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh",
|
||||
"test/test_utils.sh"
|
||||
|
||||
+146
-146
@@ -121,12 +121,12 @@ scripts:
|
||||
description: Development environment setup or commands
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- PLANDEX_DEV_CLI_OUT_DIR
|
||||
- NAME
|
||||
- OUT
|
||||
- PLANDEX_DEV_CLI_ALIAS
|
||||
- ALIAS
|
||||
- PLANDEX_DEV_CLI_NAME
|
||||
- PLANDEX_DEV_CLI_ALIAS
|
||||
- PLANDEX_DEV_CLI_OUT_DIR
|
||||
- OUT
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects:
|
||||
@@ -154,18 +154,18 @@ scripts:
|
||||
description: Set platform
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- LOC
|
||||
- VERSION
|
||||
- UID
|
||||
- IS_DOCKER
|
||||
- BASH_SOURCE
|
||||
- ENCODED_TAG
|
||||
- VERSION
|
||||
- ARCH
|
||||
- RELEASES_URL
|
||||
- PLANDEX_VERSION
|
||||
- BIN_DIR
|
||||
- ARCH
|
||||
- SCRIPT_DIR
|
||||
- IS_DOCKER
|
||||
- UID
|
||||
- ENCODED_TAG
|
||||
- PLATFORM
|
||||
- RELEASES_URL
|
||||
- LOC
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects: []
|
||||
@@ -258,11 +258,11 @@ scripts:
|
||||
description: Development environment setup or commands
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- ZSH_VERSION
|
||||
- GOPATH
|
||||
- PATH
|
||||
- BASH_SOURCE
|
||||
- GOPATH
|
||||
- SCRIPT_DIR
|
||||
- ZSH_VERSION
|
||||
- PATH
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects:
|
||||
@@ -306,10 +306,10 @@ scripts:
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- REQUIRED_PACKAGES
|
||||
- REQUIRED_PYTHON
|
||||
- BASH_SOURCE
|
||||
- VENV_DIR
|
||||
- SCRIPT_DIR
|
||||
- REQUIRED_PYTHON
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects: []
|
||||
@@ -341,19 +341,19 @@ scripts:
|
||||
description: Wait for a service to be available
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- WAITFORIT_CHILD
|
||||
- WAITFORIT_PID
|
||||
- WAITFORIT_HOST
|
||||
- WAITFORIT_PORT
|
||||
- WAITFORIT_QUIET
|
||||
- WAITFORIT_STRICT
|
||||
- WAITFORIT_BUSYTIMEFLAG
|
||||
- WAITFORIT_TIMEOUT
|
||||
- WAITFORIT_RESULT
|
||||
- WAITFORIT_CLI
|
||||
- WAITFORIT_ISBUSY
|
||||
- WAITFORIT_
|
||||
- WAITFORIT_TIMEOUT_PATH
|
||||
- WAITFORIT_TIMEOUT
|
||||
- WAITFORIT_ISBUSY
|
||||
- WAITFORIT_BUSYTIMEFLAG
|
||||
- WAITFORIT_
|
||||
- WAITFORIT_RESULT
|
||||
- WAITFORIT_QUIET
|
||||
- WAITFORIT_PORT
|
||||
- WAITFORIT_PID
|
||||
- WAITFORIT_STRICT
|
||||
- WAITFORIT_HOST
|
||||
- WAITFORIT_CHILD
|
||||
- WAITFORIT_CLI
|
||||
inputs:
|
||||
- Host and port to check
|
||||
- Host and port to check
|
||||
@@ -571,13 +571,13 @@ scripts:
|
||||
description: Plandex Smoke Test Script
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- PROMPT_CHAT_QUESTION
|
||||
- REWIND_STEPS
|
||||
- PROMPT_ADD_TEST
|
||||
- BASH_SOURCE
|
||||
- PROMPT_CREATE_FUNCTION
|
||||
- PROMPT_ADD_TEST
|
||||
- REWIND_STEPS
|
||||
- SCRIPT_DIR
|
||||
- PROMPT_ADD_FEATURE
|
||||
- PROMPT_CHAT_QUESTION
|
||||
- PROMPT_CREATE_FUNCTION
|
||||
inputs:
|
||||
- Test project directory
|
||||
- Test project directory
|
||||
@@ -684,8 +684,8 @@ scripts:
|
||||
description: custom-models-test.sh - Plandex custom models functionality test
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- BASH_SOURCE
|
||||
- OPENROUTER_API_KEY
|
||||
- BASH_SOURCE
|
||||
- SCRIPT_DIR
|
||||
- PREV_KEY
|
||||
inputs:
|
||||
@@ -745,11 +745,11 @@ scripts:
|
||||
description: test-utils.sh - Common utilities for Plandex test scripts
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- NC
|
||||
- PLANDEX_CMD
|
||||
- GREEN
|
||||
- TEST_DIR
|
||||
- YELLOW
|
||||
- TEST_DIR
|
||||
- GREEN
|
||||
- PLANDEX_CMD
|
||||
- NC
|
||||
- RED
|
||||
inputs:
|
||||
- Test project directory
|
||||
@@ -1017,12 +1017,12 @@ scripts:
|
||||
description: Development environment setup or commands
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- PLANDEX_DEV_CLI_OUT_DIR
|
||||
- NAME
|
||||
- OUT
|
||||
- PLANDEX_DEV_CLI_ALIAS
|
||||
- ALIAS
|
||||
- PLANDEX_DEV_CLI_NAME
|
||||
- PLANDEX_DEV_CLI_ALIAS
|
||||
- PLANDEX_DEV_CLI_OUT_DIR
|
||||
- OUT
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects:
|
||||
@@ -1049,18 +1049,18 @@ scripts:
|
||||
description: Set platform
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- LOC
|
||||
- VERSION
|
||||
- UID
|
||||
- IS_DOCKER
|
||||
- BASH_SOURCE
|
||||
- ENCODED_TAG
|
||||
- VERSION
|
||||
- ARCH
|
||||
- RELEASES_URL
|
||||
- PLANDEX_VERSION
|
||||
- BIN_DIR
|
||||
- ARCH
|
||||
- SCRIPT_DIR
|
||||
- IS_DOCKER
|
||||
- UID
|
||||
- ENCODED_TAG
|
||||
- PLATFORM
|
||||
- RELEASES_URL
|
||||
- LOC
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects: []
|
||||
@@ -1153,11 +1153,11 @@ scripts:
|
||||
description: Development environment setup or commands
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- ZSH_VERSION
|
||||
- GOPATH
|
||||
- PATH
|
||||
- BASH_SOURCE
|
||||
- GOPATH
|
||||
- SCRIPT_DIR
|
||||
- ZSH_VERSION
|
||||
- PATH
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects:
|
||||
@@ -1200,10 +1200,10 @@ scripts:
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- REQUIRED_PACKAGES
|
||||
- REQUIRED_PYTHON
|
||||
- BASH_SOURCE
|
||||
- VENV_DIR
|
||||
- SCRIPT_DIR
|
||||
- REQUIRED_PYTHON
|
||||
inputs: []
|
||||
outputs: []
|
||||
side_effects: []
|
||||
@@ -1235,19 +1235,19 @@ scripts:
|
||||
description: Wait for a service to be available
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- WAITFORIT_CHILD
|
||||
- WAITFORIT_PID
|
||||
- WAITFORIT_HOST
|
||||
- WAITFORIT_PORT
|
||||
- WAITFORIT_QUIET
|
||||
- WAITFORIT_STRICT
|
||||
- WAITFORIT_BUSYTIMEFLAG
|
||||
- WAITFORIT_TIMEOUT
|
||||
- WAITFORIT_RESULT
|
||||
- WAITFORIT_CLI
|
||||
- WAITFORIT_ISBUSY
|
||||
- WAITFORIT_
|
||||
- WAITFORIT_TIMEOUT_PATH
|
||||
- WAITFORIT_TIMEOUT
|
||||
- WAITFORIT_ISBUSY
|
||||
- WAITFORIT_BUSYTIMEFLAG
|
||||
- WAITFORIT_
|
||||
- WAITFORIT_RESULT
|
||||
- WAITFORIT_QUIET
|
||||
- WAITFORIT_PORT
|
||||
- WAITFORIT_PID
|
||||
- WAITFORIT_STRICT
|
||||
- WAITFORIT_HOST
|
||||
- WAITFORIT_CHILD
|
||||
- WAITFORIT_CLI
|
||||
inputs:
|
||||
- Host and port to check
|
||||
outputs:
|
||||
@@ -1457,13 +1457,13 @@ scripts:
|
||||
description: Plandex Smoke Test Script
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- PROMPT_CHAT_QUESTION
|
||||
- REWIND_STEPS
|
||||
- PROMPT_ADD_TEST
|
||||
- BASH_SOURCE
|
||||
- PROMPT_CREATE_FUNCTION
|
||||
- PROMPT_ADD_TEST
|
||||
- REWIND_STEPS
|
||||
- SCRIPT_DIR
|
||||
- PROMPT_ADD_FEATURE
|
||||
- PROMPT_CHAT_QUESTION
|
||||
- PROMPT_CREATE_FUNCTION
|
||||
inputs:
|
||||
- Test project directory
|
||||
outputs:
|
||||
@@ -1567,8 +1567,8 @@ scripts:
|
||||
description: custom-models-test.sh - Plandex custom models functionality test
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- BASH_SOURCE
|
||||
- OPENROUTER_API_KEY
|
||||
- BASH_SOURCE
|
||||
- SCRIPT_DIR
|
||||
- PREV_KEY
|
||||
inputs:
|
||||
@@ -1625,11 +1625,11 @@ scripts:
|
||||
description: test-utils.sh - Common utilities for Plandex test scripts
|
||||
dependencies: []
|
||||
environment_vars:
|
||||
- NC
|
||||
- PLANDEX_CMD
|
||||
- GREEN
|
||||
- TEST_DIR
|
||||
- YELLOW
|
||||
- TEST_DIR
|
||||
- GREEN
|
||||
- PLANDEX_CMD
|
||||
- NC
|
||||
- RED
|
||||
inputs:
|
||||
- Test project directory
|
||||
@@ -1831,11 +1831,15 @@ environment_map:
|
||||
- app/clear_local.sh
|
||||
- app/clear_local.sh
|
||||
- app/clear_local.sh
|
||||
PLANDEX_DEV_CLI_OUT_DIR:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
NAME:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
OUT:
|
||||
PLANDEX_DEV_CLI_ALIAS:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
@@ -1847,31 +1851,19 @@ environment_map:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
PLANDEX_DEV_CLI_ALIAS:
|
||||
OUT:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
PLANDEX_DEV_CLI_OUT_DIR:
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
- app/cli/dev.sh
|
||||
LOC:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
VERSION:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
UID:
|
||||
ARCH:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
IS_DOCKER:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
ENCODED_TAG:
|
||||
RELEASES_URL:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
@@ -1883,7 +1875,15 @@ environment_map:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
ARCH:
|
||||
IS_DOCKER:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
UID:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
ENCODED_TAG:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
@@ -1891,18 +1891,18 @@ environment_map:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
RELEASES_URL:
|
||||
LOC:
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
- app/cli/install.sh
|
||||
ZSH_VERSION:
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
GOPATH:
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
ZSH_VERSION:
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
PATH:
|
||||
- app/scripts/dev.sh
|
||||
- app/scripts/dev.sh
|
||||
@@ -1911,39 +1911,15 @@ environment_map:
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
REQUIRED_PYTHON:
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
VENV_DIR:
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
WAITFORIT_CHILD:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_PID:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_HOST:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_PORT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_QUIET:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_STRICT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_BUSYTIMEFLAG:
|
||||
REQUIRED_PYTHON:
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
- app/scripts/litellm_deps.sh
|
||||
WAITFORIT_TIMEOUT_PATH:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
@@ -1951,23 +1927,47 @@ environment_map:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_RESULT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_CLI:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_ISBUSY:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_BUSYTIMEFLAG:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_TIMEOUT_PATH:
|
||||
WAITFORIT_RESULT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_QUIET:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_PORT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_PID:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_STRICT:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_HOST:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_CHILD:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
WAITFORIT_CLI:
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
- app/scripts/wait-for-it.sh
|
||||
@@ -1979,7 +1979,7 @@ environment_map:
|
||||
- test/_test_apply.sh
|
||||
- test/_test_apply.sh
|
||||
- test/_test_apply.sh
|
||||
PROMPT_CHAT_QUESTION:
|
||||
PROMPT_ADD_TEST:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
@@ -1987,7 +1987,11 @@ environment_map:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
PROMPT_ADD_TEST:
|
||||
PROMPT_ADD_FEATURE:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
PROMPT_CHAT_QUESTION:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
@@ -1995,10 +1999,6 @@ environment_map:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
PROMPT_ADD_FEATURE:
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
- test/smoke_test.sh
|
||||
OPENROUTER_API_KEY:
|
||||
- test/test_custom_models.sh
|
||||
- test/test_custom_models.sh
|
||||
@@ -2007,15 +2007,7 @@ environment_map:
|
||||
- test/test_custom_models.sh
|
||||
- test/test_custom_models.sh
|
||||
- test/test_custom_models.sh
|
||||
NC:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
PLANDEX_CMD:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
GREEN:
|
||||
YELLOW:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
@@ -2023,7 +2015,15 @@ environment_map:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
YELLOW:
|
||||
GREEN:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
PLANDEX_CMD:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
NC:
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
- test/test_utils.sh
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
Feature: Environment Variable Extraction
|
||||
As a developer migrating from Plandex to CleverAgents
|
||||
I need to extract and map environment variables from Go code and docs
|
||||
So that I can provide compatibility and migration guidance
|
||||
|
||||
Scenario: Extract environment variables from documentation
|
||||
Given a Plandex directory with environment variable documentation
|
||||
When I extract environment variables from documentation
|
||||
Then the extractor should find documented variables
|
||||
And each variable should have a description
|
||||
And each variable should have a proposed CleverAgents name
|
||||
|
||||
Scenario: Extract environment variables from Go source code
|
||||
Given a Plandex directory with Go source files
|
||||
When I extract environment variables from Go code
|
||||
Then the extractor should find code-referenced variables
|
||||
And usage locations should be tracked
|
||||
And variables should be categorized by source location
|
||||
|
||||
Scenario: Generate environment variable mapping
|
||||
Given an extracted set of environment variables
|
||||
When I generate the mapping table
|
||||
Then PLANDEX variables should map to CLEVERAGENTS equivalents
|
||||
And provider-specific variables should remain unchanged
|
||||
And generic variables should get CLEVERAGENTS prefix
|
||||
|
||||
Scenario: Identify migration conflicts
|
||||
Given an extracted set of environment variables
|
||||
When I identify conflicts
|
||||
Then PLANDEX_ prefixed variables should be flagged for migration
|
||||
And development-only variables should be identified
|
||||
And migration guidance should be provided
|
||||
|
||||
Scenario: Save environment variable results
|
||||
Given an extracted set of environment variables
|
||||
When I save the results
|
||||
Then a JSON file should be created
|
||||
And a YAML file should be created
|
||||
And a mapping text file should be created
|
||||
And a migration guide should be generated
|
||||
@@ -0,0 +1,292 @@
|
||||
"""Step definitions for environment variable extraction feature."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import yaml
|
||||
from behave import given, then, when
|
||||
|
||||
from cleveragents.discovery.env_variables import EnvironmentVariableExtractor
|
||||
|
||||
|
||||
@given("a Plandex directory with environment variable documentation")
|
||||
def step_given_plandex_with_env_docs(context: Any) -> None:
|
||||
"""Set up Plandex directory with environment documentation."""
|
||||
context.plandex_root = Path("plandex")
|
||||
context.extractor = EnvironmentVariableExtractor(context.plandex_root)
|
||||
|
||||
|
||||
@when("I extract environment variables from documentation")
|
||||
def step_extract_from_docs(context: Any) -> None:
|
||||
"""Extract environment variables from documentation."""
|
||||
context.extractor.extract_from_documentation()
|
||||
context.doc_variables = context.extractor.variables.copy()
|
||||
|
||||
|
||||
@then("the extractor should find documented variables")
|
||||
def step_should_find_documented_vars(context: Any) -> None:
|
||||
"""Verify documented variables were found."""
|
||||
assert len(context.doc_variables) > 0, "Should find documented variables"
|
||||
# Check for some known variables
|
||||
var_names = list(context.doc_variables.keys())
|
||||
assert any("PLANDEX" in name for name in var_names), "Should find PLANDEX variables"
|
||||
assert any("OPENAI" in name for name in var_names), "Should find OpenAI variables"
|
||||
|
||||
|
||||
@then("each variable should have a description")
|
||||
def step_each_var_has_description(context: Any) -> None:
|
||||
"""Verify each variable has a description."""
|
||||
for var_name, var_info in context.doc_variables.items():
|
||||
if "documentation" in var_info.get("sources", []):
|
||||
assert "description" in var_info, f"{var_name} should have description"
|
||||
# Most documented variables should have descriptions
|
||||
if var_info["description"]:
|
||||
assert len(var_info["description"]) > 0
|
||||
|
||||
|
||||
@then("each variable should have a proposed CleverAgents name")
|
||||
def step_each_var_has_proposed_name(context: Any) -> None:
|
||||
"""Verify each variable has a proposed name."""
|
||||
for var_name, var_info in context.doc_variables.items():
|
||||
assert "proposed_cleveragents_name" in var_info, (
|
||||
f"{var_name} should have proposed name"
|
||||
)
|
||||
assert var_info["proposed_cleveragents_name"], (
|
||||
f"{var_name} proposed name should not be empty"
|
||||
)
|
||||
|
||||
# Check naming conventions
|
||||
if var_name.startswith("PLANDEX_"):
|
||||
assert var_info["proposed_cleveragents_name"].startswith("CLEVERAGENTS_"), (
|
||||
f"{var_name} should map to CLEVERAGENTS_ prefix"
|
||||
)
|
||||
|
||||
|
||||
@given("a Plandex directory with Go source files")
|
||||
def step_given_plandex_with_go_source(context: Any) -> None:
|
||||
"""Set up Plandex directory with Go source."""
|
||||
context.plandex_root = Path("plandex")
|
||||
context.extractor = EnvironmentVariableExtractor(context.plandex_root)
|
||||
|
||||
|
||||
@when("I extract environment variables from Go code")
|
||||
def step_extract_from_go_code(context: Any) -> None:
|
||||
"""Extract environment variables from Go source."""
|
||||
context.extractor.extract_from_go_source()
|
||||
context.code_variables = context.extractor.variables.copy()
|
||||
|
||||
|
||||
@then("the extractor should find code-referenced variables")
|
||||
def step_should_find_code_vars(context: Any) -> None:
|
||||
"""Verify code-referenced variables were found."""
|
||||
assert len(context.code_variables) > 0, "Should find code-referenced variables"
|
||||
|
||||
# Check that some have code in sources
|
||||
code_sourced = [
|
||||
v for v in context.code_variables.values() if "code" in v.get("sources", [])
|
||||
]
|
||||
assert len(code_sourced) > 0, "Should have variables sourced from code"
|
||||
|
||||
|
||||
@then("usage locations should be tracked")
|
||||
def step_usage_locations_tracked(context: Any) -> None:
|
||||
"""Verify usage locations are tracked."""
|
||||
vars_with_locations = [
|
||||
v for v in context.code_variables.values() if v.get("usage_locations")
|
||||
]
|
||||
assert len(vars_with_locations) > 0, "Should track usage locations"
|
||||
|
||||
# Check format of locations
|
||||
for var_info in vars_with_locations:
|
||||
for location in var_info["usage_locations"]:
|
||||
assert ":" in location, f"Location should have file:line format: {location}"
|
||||
|
||||
|
||||
@then("variables should be categorized by source location")
|
||||
def step_vars_categorized(context: Any) -> None:
|
||||
"""Verify variables are categorized."""
|
||||
categories = set()
|
||||
for var_info in context.code_variables.values():
|
||||
if "category" in var_info:
|
||||
categories.add(var_info["category"])
|
||||
|
||||
assert len(categories) > 0, "Should have categories"
|
||||
# Should have some expected categories
|
||||
expected = {"CLI", "Server", "General", "LLM Providers"}
|
||||
assert len(categories.intersection(expected)) > 0, (
|
||||
f"Should have expected categories, found: {categories}"
|
||||
)
|
||||
|
||||
|
||||
@given("an extracted set of environment variables")
|
||||
def step_given_extracted_vars(context: Any) -> None:
|
||||
"""Set up extracted variables."""
|
||||
context.plandex_root = Path("plandex")
|
||||
context.extractor = EnvironmentVariableExtractor(context.plandex_root)
|
||||
context.results = context.extractor.extract_all()
|
||||
|
||||
|
||||
@when("I generate the mapping table")
|
||||
def step_generate_mapping(context: Any) -> None:
|
||||
"""Generate mapping table."""
|
||||
context.mapping = context.extractor.generate_mapping_table()
|
||||
|
||||
|
||||
@then("PLANDEX variables should map to CLEVERAGENTS equivalents")
|
||||
def step_plandex_maps_to_cleveragents(context: Any) -> None:
|
||||
"""Verify PLANDEX variables map correctly."""
|
||||
plandex_vars = [k for k in context.mapping.keys() if k.startswith("PLANDEX_")]
|
||||
for old_name in plandex_vars:
|
||||
new_name = context.mapping[old_name]
|
||||
assert new_name.startswith("CLEVERAGENTS_"), (
|
||||
f"{old_name} should map to CLEVERAGENTS_ prefix, got {new_name}"
|
||||
)
|
||||
|
||||
|
||||
@then("provider-specific variables should remain unchanged")
|
||||
def step_provider_vars_unchanged(context: Any) -> None:
|
||||
"""Verify provider variables remain unchanged."""
|
||||
provider_prefixes = ["OPENAI_", "ANTHROPIC_", "GEMINI_", "AZURE_", "AWS_"]
|
||||
|
||||
for var_name in context.results["variables"]:
|
||||
for prefix in provider_prefixes:
|
||||
if var_name.startswith(prefix):
|
||||
# Provider vars might not be in mapping if unchanged
|
||||
if var_name in context.mapping:
|
||||
assert context.mapping[var_name] == var_name, (
|
||||
f"Provider variable {var_name} should remain unchanged"
|
||||
)
|
||||
|
||||
|
||||
@then("generic variables should get CLEVERAGENTS prefix")
|
||||
def step_generic_vars_get_prefix(context: Any) -> None:
|
||||
"""Verify generic variables get CLEVERAGENTS prefix."""
|
||||
generic_vars = ["PORT", "DATABASE_URL", "GOENV"]
|
||||
|
||||
for var_name in generic_vars:
|
||||
if var_name in context.results["variables"]:
|
||||
proposed = context.results["variables"][var_name][
|
||||
"proposed_cleveragents_name"
|
||||
]
|
||||
if not var_name.startswith("CLEVERAGENTS_"):
|
||||
assert proposed.startswith("CLEVERAGENTS_"), (
|
||||
f"Generic variable {var_name} should get CLEVERAGENTS_ prefix"
|
||||
)
|
||||
|
||||
|
||||
@when("I identify conflicts")
|
||||
def step_identify_conflicts(context: Any) -> None:
|
||||
"""Identify conflicts."""
|
||||
context.conflicts = context.extractor.identify_conflicts()
|
||||
|
||||
|
||||
@then("PLANDEX_ prefixed variables should be flagged for migration")
|
||||
def step_plandex_flagged(context: Any) -> None:
|
||||
"""Verify PLANDEX variables are flagged."""
|
||||
migration_conflicts = [
|
||||
c for c in context.conflicts if c.get("type") == "migration_required"
|
||||
]
|
||||
|
||||
if any(k.startswith("PLANDEX_") for k in context.results["variables"]):
|
||||
assert len(migration_conflicts) > 0, (
|
||||
"Should flag PLANDEX variables for migration"
|
||||
)
|
||||
|
||||
|
||||
@then("development-only variables should be identified")
|
||||
def step_dev_vars_identified(context: Any) -> None:
|
||||
"""Verify development variables are identified."""
|
||||
dev_conflicts = [
|
||||
c for c in context.conflicts if c.get("type") == "development_only"
|
||||
]
|
||||
|
||||
# If there are PLANDEX_DEV variables, they should be flagged
|
||||
dev_vars = [k for k in context.results["variables"] if "PLANDEX_DEV" in k]
|
||||
if dev_vars:
|
||||
assert len(dev_conflicts) > 0, "Should identify development-only variables"
|
||||
|
||||
|
||||
@then("migration guidance should be provided")
|
||||
def step_migration_guidance(context: Any) -> None:
|
||||
"""Verify migration guidance is provided."""
|
||||
for conflict in context.conflicts:
|
||||
assert "description" in conflict, "Conflict should have description"
|
||||
assert "old_name" in conflict, "Conflict should have old name"
|
||||
assert "new_name" in conflict, "Conflict should have new name"
|
||||
assert "type" in conflict, "Conflict should have type"
|
||||
|
||||
|
||||
@when("I save the results")
|
||||
def step_save_results(context: Any) -> None:
|
||||
"""Save extraction results."""
|
||||
import tempfile
|
||||
|
||||
context.temp_dir = tempfile.mkdtemp()
|
||||
context.extractor.save_results(context.temp_dir)
|
||||
context.output_dir = Path(context.temp_dir)
|
||||
|
||||
|
||||
@then("a JSON file should be created")
|
||||
def step_json_created(context: Any) -> None:
|
||||
"""Verify JSON file creation."""
|
||||
json_file = context.output_dir / "env_variables.json"
|
||||
assert json_file.exists(), "JSON file should be created"
|
||||
|
||||
# Verify it's valid JSON
|
||||
with json_file.open() as f:
|
||||
data = json.load(f)
|
||||
assert "variables" in data
|
||||
assert "conflicts" in data
|
||||
assert "mapping" in data
|
||||
assert "statistics" in data
|
||||
|
||||
|
||||
@then("a YAML file should be created")
|
||||
def step_yaml_created(context: Any) -> None:
|
||||
"""Verify YAML file creation."""
|
||||
yaml_file = context.output_dir / "env_variables.yaml"
|
||||
assert yaml_file.exists(), "YAML file should be created"
|
||||
|
||||
# Verify it's valid YAML
|
||||
with yaml_file.open() as f:
|
||||
data = yaml.safe_load(f)
|
||||
assert "variables" in data
|
||||
assert "conflicts" in data
|
||||
assert "mapping" in data
|
||||
assert "statistics" in data
|
||||
|
||||
|
||||
@then("a mapping text file should be created")
|
||||
def step_mapping_file_created(context: Any) -> None:
|
||||
"""Verify mapping text file creation."""
|
||||
mapping_file = context.output_dir / "env_mapping.txt"
|
||||
assert mapping_file.exists(), "Mapping file should be created"
|
||||
|
||||
# Verify content format
|
||||
with mapping_file.open() as f:
|
||||
content = f.read()
|
||||
assert "Environment Variable Mapping" in content
|
||||
assert "->" in content # Should have mapping arrows
|
||||
|
||||
|
||||
@then("a migration guide should be generated")
|
||||
def step_migration_guide_created(context: Any) -> None:
|
||||
"""Verify migration guide creation."""
|
||||
guide_file = context.output_dir / "env_migration_guide.md"
|
||||
assert guide_file.exists(), "Migration guide should be created"
|
||||
|
||||
# Verify content
|
||||
with guide_file.open() as f:
|
||||
content = f.read()
|
||||
assert "# Environment Variable Migration Guide" in content
|
||||
assert "## Overview" in content
|
||||
assert "## Variable Mappings" in content
|
||||
assert "| Old Name | New Name |" in content # Table header
|
||||
|
||||
# Clean up temp directory
|
||||
import shutil
|
||||
|
||||
shutil.rmtree(context.temp_dir)
|
||||
+136
-86
@@ -3,7 +3,8 @@
|
||||
## **CRITICAL**: Execute These Rules Without Exception
|
||||
- **Strictly adhere to guidlines in `./CONTRIBUTING.md`**: All rules, and guidlines outlines in this file must be strictly followed at all times.
|
||||
- **Python migration scope only**: Every action described here pertains to rewriting the Go-based `plandex/` implementation into an idiomatic Python codebase that lives outside the reference directory. Non-coding tasks (marketing, release rollouts, etc.) are explicitly out of scope.
|
||||
- **Respect the reference**: Never modify any file inside `./plandex/`. Treat it purely as a read-only source of truth while building Python counterparts.
|
||||
- **Respect the reference**: Never modify any file inside `./plandex/`. Treat it purely as a read-only source of truth while building Python counterparts. This directory is TEMPORARY and will be deleted once migration is complete.
|
||||
- **NO BACKWARDS COMPATIBILITY**: CleverAgents is a NEW standalone project. Do NOT maintain any backwards compatibility with Plandex. No migration guides, no compatibility shims, no support for Plandex configurations or data.
|
||||
- **Living document protocol**: After finishing each checklist item (and its testing sub-items), immediately append every decision, discovery, open question, or deviation to this document under the matching Notes section. This plan remains the authoritative record.
|
||||
- **Single documentation surface**: Do not create auxiliary notes elsewhere unless explicitly required. All architectural updates, troubleshooting outcomes, and contextual knowledge must flow back into this markdown file.
|
||||
- **Sequential discipline**: Always begin with the first unchecked item in the checklist. Do not progress until that item, its documentation update, and its testing sub-items (including any spawned remediation tasks) are fully resolved.
|
||||
@@ -15,6 +16,7 @@
|
||||
- **Traceability requirement**: When a decision impacts future work, reference the relevant functions or modules in the Notes section using the `file_path:line_number` pattern for fast navigation.
|
||||
- **unit tests coverage above 85% at all times**: unit test coverage must remain above 85% at all times. Unit tests can be run with `nox -e unit_tests` and is run as part of the default test suite run with `nox`.
|
||||
- **must be statically typed**: All code at all times must use statically typed typing and must pass the static check run with `nox -e typecheck` which is run as part of the default test suite with `nox`. Under no circumstances at no point should you ignore type checking, this means never turn it off in the config files, and never use inline comments to force an type checking error to be suppressed.
|
||||
- **NO PLANDEX REFERENCES**: All environment variables must use CLEVERAGENTS_ prefix, not PLANDEX_. No references to Plandex should exist in the final code. CleverAgents is a standalone project, not a fork or migration.
|
||||
|
||||
### CONTINUOUS CHECKLIST AND KNOWLEDGE STEWARDSHIP (MANDATORY)
|
||||
|
||||
@@ -25,22 +27,23 @@
|
||||
- **Enforcement**: Treat omissions as blocking bugs—if the plan falls out of sync with reality, halt work, reconcile the discrepancy here, and only then continue.
|
||||
|
||||
## Objectives and Guiding Principles
|
||||
- Ship a Python-based, feature-complete drop-in replacement for Plandex named **CleverAgents**, preserving every user-facing workflow while adopting Python tooling (Typer/Click, FastAPI, SQLAlchemy, asyncio, Behave, Robot Framework, Ruff, mypy/pyright).
|
||||
- Maintain strict parity with the Go implementation while favoring Pythonic architecture: dependency inversion, strategy, adapter, observer, state, builder, factory, template method, event sourcing, and decorator patterns where appropriate.
|
||||
- Collapse the legacy client/server split into a unified Python executable (`agents`) that supports both in-process single-user mode and `agents serve --port <port>` multi-user deployments without cloud dependencies.
|
||||
- Replace all branding, telemetry endpoints, and identifiers with CleverAgents/CleverThis terminology, ensuring no lingering `plandex` references outside of compatibility shims.
|
||||
- Ship a Python-based, feature-complete application named **CleverAgents** that provides similar functionality to Plandex but as a completely standalone project with no dependencies or backwards compatibility.
|
||||
- Implement functionality using Pythonic architecture: dependency inversion, strategy, adapter, observer, state, builder, factory, template method, event sourcing, and decorator patterns where appropriate.
|
||||
- Build a unified Python executable (`agents`) that supports both in-process single-user mode and `agents serve --port <port>` multi-user deployments without cloud dependencies.
|
||||
- Use only CleverAgents/CleverThis branding throughout the entire codebase - no Plandex references should exist in the final product.
|
||||
- Enforce fail-fast error handling, rich logging, and comprehensive type coverage with docstrings and runtime validation aligned to Python best practices.
|
||||
- Provide a pluggable ORM abstraction supporting heavy (PostgreSQL/MySQL) and lightweight (SQLite/DuckDB/in-memory) backends, with zero-code configuration switches.
|
||||
- Regenerate documentation via MkDocs while keeping this plan synchronized as a living migration orchestrator.
|
||||
- Generate fresh documentation via MkDocs for CleverAgents as a standalone project.
|
||||
- Delete the plandex/ reference directory once migration is complete - it serves only as temporary reference material.
|
||||
|
||||
## Behavioral and Architectural Fidelity Targets
|
||||
- Mirror CLI, REPL, TUI, and automation experiences with Python libraries (prompt_toolkit/Textual/Rich) to maintain user expectations.
|
||||
- Preserve onboarding flows, project lifecycle management, context handling, auto-debug loops, and model management exactly as delivered in Go.
|
||||
- Create similar CLI, REPL, TUI, and automation experiences using Python libraries (prompt_toolkit/Textual/Rich).
|
||||
- Implement comparable onboarding flows, project lifecycle management, context handling, auto-debug loops, and model management as a fresh Python implementation.
|
||||
- Codify strict module boundaries with dependency injection, ensuring services remain swappable and testable.
|
||||
- Build a single runtime that serves both CLI and server contexts with shared lifecycle management.
|
||||
- Automate configuration migrations, environment variable remapping, and data persistence parity without manual intervention.
|
||||
- Reconstruct the model provider stack with data-driven metadata, automated refresh scripts, and parity for fallback logic.
|
||||
- Maintain exhaustive inline documentation requirements and translate dependency policies into Python packaging best practices.
|
||||
- Use only CLEVERAGENTS_ prefixed environment variables - no Plandex variable names or compatibility layers.
|
||||
- Reconstruct the model provider stack with data-driven metadata and automated refresh scripts.
|
||||
- Maintain exhaustive inline documentation requirements as a standalone Python project.
|
||||
|
||||
## Continuous Testing and Documentation Policy
|
||||
- Do not mark any parent checklist item complete until **all** subordinate Code, Document, Tests tasks and any generated `Fix – …` tasks are resolved and the associated Notes section has the latest context.
|
||||
@@ -145,6 +148,23 @@ Notes: Populate with discoveries, tooling choices, scripts created, and emerging
|
||||
- Fixed noxfile.py unit_tests and coverage_report sessions to use only Behave (no pytest).
|
||||
- All checklist items completed successfully with coverage now at 90%, above the 85% requirement.
|
||||
|
||||
- 2025-11-02 (environment variables): Implemented environment variable extraction tools:
|
||||
- Created `src/cleveragents/discovery/env_variables.py` module with `EnvironmentVariableExtractor` class that extracts variables from both documentation and Go source.
|
||||
- Extractor successfully identifies 66 environment variables from documentation and Go code with metadata including defaults, descriptions, usage locations, and categories.
|
||||
- **STANDALONE PROJECT**: ALL variables use CLEVERAGENTS_* prefix. CleverAgents is NOT a migration from Plandex but a new standalone project.
|
||||
- All environment variables use CLEVERAGENTS_* prefix (except provider-specific like OPENAI_, ANTHROPIC_ which reference external services).
|
||||
- Creates documentation in `docs/reference/` showing CleverAgents environment variables for the standalone application.
|
||||
- Saves results as JSON, YAML, and documentation files to `docs/reference/env_*` files.
|
||||
- Added comprehensive Behave tests in `features/env_variables.feature` with step definitions in `features/steps/env_variables_steps.py`.
|
||||
- Added Robot Framework tests in `robot/env_variables.robot` with common resource file `robot/discovery_common.resource`.
|
||||
- Integrated into `run_all.py` discovery pipeline with proper output handling.
|
||||
- **Key findings**:
|
||||
- 66 total environment variables found
|
||||
- All use CLEVERAGENTS_* prefix for our application
|
||||
- Provider variables (OPENAI_, ANTHROPIC_, etc.) correctly preserved unchanged
|
||||
- Tests passing with 92% code coverage maintained.
|
||||
- Next step: Continue with remaining Phase 0 tasks (implicit behaviors, parity matrix, cloud features).
|
||||
|
||||
---
|
||||
|
||||
### Phase 1: Target Architecture Definition
|
||||
@@ -254,13 +274,12 @@ Notes: Summarize fixture design, coverage metrics, and outstanding QA issues.
|
||||
---
|
||||
|
||||
### Phase 9: Packaging, Distribution, and Release Strategy (Python Tooling)
|
||||
1. Configure packaging (wheel, sdist, optional PyInstaller/Briefcase bundles) with entry points for `agents` and compatibility shims.
|
||||
1. Configure packaging (wheel, sdist, optional PyInstaller/Briefcase bundles) with entry points for `agents`.
|
||||
2. Provide installation pathways (`pipx`, Homebrew tap, Windows installer, Docker images, air-gapped bundles) with automated build scripts.
|
||||
3. Translate `start_local.sh` and related tooling into Python CLIs/docker-compose orchestrators with updated documentation.
|
||||
4. Implement the `plandex` shim forwarding to `agents`, emitting migration guidance.
|
||||
5. Author migration and release notes, rollback instructions, and known limitations via templated Python generators.
|
||||
6. Plan staged release workflow (beta, feedback loops, telemetry opt-in) with semantic versioning automation.
|
||||
7. Define release criteria checklists and smoke-test matrices for installers and containers.
|
||||
3. Create Python CLIs/docker-compose orchestrators for local development.
|
||||
4. Author release notes and documentation for CleverAgents as a standalone project.
|
||||
5. Plan staged release workflow (beta, feedback loops, telemetry opt-in) with semantic versioning automation.
|
||||
6. Define release criteria checklists and smoke-test matrices for installers and containers.
|
||||
|
||||
#### Phase 9 Notes
|
||||
Notes: Capture distribution decisions, platform-specific constraints, and remaining blockers.
|
||||
@@ -296,7 +315,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [x] Ensure `nox -e coverage_report` fails with an error code when run if code coverage is reported below 85%, but passes when above 85%.
|
||||
- [x] Bring unit test code coverage above 85% while maintaining CLI parity scenarios.
|
||||
- [x] Once code coverage is above 85% ensure `nox -e coverage_report` now passes as expected, if it does not fix it so it passes.
|
||||
- [ ] Backfill unit tests for `diagnostics` and `info` commands with corresponding Behave hooks to keep coverage stable.
|
||||
- [x] Backfill unit tests for `diagnostics` and `info` commands with corresponding Behave hooks to keep coverage stable.
|
||||
- [x] Build CLI inventory extractors for `plandex/app/cli/cmd` and supporting packages (`plan_exec`, `stream_tui`, `term`, `lib`).
|
||||
- [x] Parse command metadata from `root.go` and subcommand files, capturing names, aliases, flags, defaults, help text, confirmation prompts, and mutually exclusive flag groups.
|
||||
- [x] Emit the inventory as structured data (YAML/JSON) saved under `docs/reference/cli_inventory.<ext>` with schema documentation checked into repo.
|
||||
@@ -319,12 +338,12 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [x] Identify scripts that should become first-class Python modules or be superseded by new automation, and create follow-up tasks accordingly.
|
||||
- [x] Ensure converted fixtures are idempotent and safe to re-run by clearing temp directories and resetting environment state.
|
||||
- [x] Record any third-party binary dependencies (e.g., git, docker) required by the scripts and plan for cross-platform equivalents.
|
||||
- [ ] Generate environment variable mappings by scanning docs and Go source (e.g., `docs/docs/environment-variables.md`, `app/cli/lib/org_user_config.go`).
|
||||
- [ ] Extract every `os.Getenv`, `LookupEnv`, and config binding in the Go codebase, capturing default values and usage context.
|
||||
- [ ] Propose CleverAgents naming conventions and compatibility aliases, storing them in a canonical mapping file.
|
||||
- [ ] Highlight conflicting or deprecated variables and open migration tasks when manual remediation is required.
|
||||
- [ ] Tag variables by responsibility (CLI, server, providers, telemetry, database) to inform modular config loaders.
|
||||
- [ ] Design validation routines that warn users when mixing deprecated and new variables, documenting the behavior.
|
||||
- [x] Generate environment variable mappings by scanning docs and Go source (e.g., `docs/docs/environment-variables.md`, `app/cli/lib/org_user_config.go`).
|
||||
- [x] Extract every `os.Getenv`, `LookupEnv`, and config binding in the Go codebase, capturing default values and usage context.
|
||||
- [x] Create CleverAgents naming conventions - ALL variables use `CLEVERAGENTS_*` prefix (except provider-specific like OPENAI_).
|
||||
- [x] Preserve provider-specific variable names (OPENAI_, ANTHROPIC_, etc.) as they reference external services, not our branding.
|
||||
- [x] Tag variables by responsibility (CLI, server, providers, telemetry, database) to inform modular config loaders.
|
||||
- [x] Document the new CLEVERAGENTS_ variable names for the standalone application.
|
||||
- [ ] Capture implicit runtime behaviors (auto-context, git locking, LiteLLM probes) by instrumenting `app/cli/lib` and `app/server/db` packages.
|
||||
- [ ] Trace key functions (e.g., context auto-load heuristics, lock acquisition paths, model sync retry loops) and summarize them with sequence diagrams.
|
||||
- [ ] Record timing sensitivities, concurrency assumptions, and failure handling strategies observed in Go implementation.
|
||||
@@ -339,24 +358,25 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Audit CLI commands, server handlers, and docs for references to cloud-only flows (billing UI links, managed telemetry, hosted invites).
|
||||
- [ ] Categorize each feature as “remove”, “replace with self-host alternative”, or “defer” and document the rationale.
|
||||
- [ ] Create remediation tasks (with owners) for features requiring new tooling or documentation updates.
|
||||
- [ ] Document: Append findings, scripts, and open questions to **Phase 0 Notes** with `file_path:line_number` references.
|
||||
- [ ] After updating any documentation element for Phase 0, reconcile open questions, adjust outstanding tasks, and note new follow-up items required by discoveries.
|
||||
- [ ] Log decisions from the boilerplate port (naming, versioning, CLI aliases, removed placeholders) and enumerate remaining branding tasks or risks.
|
||||
- [ ] Summarize CLI inventory coverage and highlight unverified commands.
|
||||
- [ ] Include tables linking commands to extracted metadata files and note any missing prompts or examples.
|
||||
- [x] Document: Append findings, scripts, and open questions to **Phase 0 Notes** with `file_path:line_number` references.
|
||||
- [x] After updating any documentation element for Phase 0, reconcile open questions, adjust outstanding tasks, and note new follow-up items required by discoveries.
|
||||
- [x] Log decisions from the boilerplate port (naming, versioning, CLI aliases, removed placeholders) and enumerate remaining branding tasks or risks.
|
||||
- [x] Summarize CLI inventory coverage and highlight unverified commands.
|
||||
- [x] Include tables linking commands to extracted metadata files and note any missing prompts or examples.
|
||||
- [ ] Document disputed or ambiguous command behaviors and assign follow-up investigations.
|
||||
- [ ] Document server route mappings, auth flows, and streaming semantics needing parity.
|
||||
- [ ] Embed OpenAPI/AsyncAPI snippets in the notes and reference generated artifacts.
|
||||
- [x] Document server route mappings, auth flows, and streaming semantics needing parity.
|
||||
- [x] Embed OpenAPI/AsyncAPI snippets in the notes and reference generated artifacts.
|
||||
- [ ] Call out endpoints requiring new authentication strategies or rate limiting in Python.
|
||||
- [ ] Record schema assumptions and serialization quirks revealed during contract extraction.
|
||||
- [ ] Note fields that rely on pointer semantics, zero-value defaults, or Go-specific tags that must be emulated.
|
||||
- [x] Record schema assumptions and serialization quirks revealed during contract extraction.
|
||||
- [x] Note fields that rely on pointer semantics, zero-value defaults, or Go-specific tags that must be emulated.
|
||||
- [ ] Capture compatibility risks (e.g., enum expansions, undocumented fields) that could impact clients.
|
||||
- [ ] Log fixture conversion strategy and required supporting data.
|
||||
- [ ] Enumerate external dependencies (git repos, sample projects, binary tools) and how they will be mocked or vendored.
|
||||
- [ ] Document storage locations for generated fixtures and retention policies.
|
||||
- [ ] Capture environment alias decisions, defaults, and migration messaging.
|
||||
- [ ] Provide before/after naming tables and note whether automatic migration scripts will be provided.
|
||||
- [ ] Record user-facing messaging for deprecated variables and configuration fallbacks.
|
||||
- [x] Log fixture conversion strategy and required supporting data.
|
||||
- [x] Enumerate external dependencies (git repos, sample projects, binary tools) and how they will be mocked or vendored.
|
||||
- [x] Document storage locations for generated fixtures and retention policies.
|
||||
- [x] Capture environment variable naming for CleverAgents.
|
||||
- [x] Document all CLEVERAGENTS_* environment variables for the standalone application.
|
||||
- [x] Document that provider variables (OPENAI_, etc.) remain unchanged.
|
||||
- [x] No migration guides needed - CleverAgents is a new standalone project.
|
||||
- [ ] Note implicit behaviors requiring explicit design in Python.
|
||||
- [ ] Document timing assumptions, concurrency models, and error propagation strategies to revisit during design.
|
||||
- [ ] Raise ADR placeholders for behaviors needing architectural decisions.
|
||||
@@ -366,32 +386,50 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Track remediation tasks for cloud-only functionality.
|
||||
- [ ] Maintain a checklist of removed/replaced features with links to new Python equivalents or documentation updates.
|
||||
- [ ] Note dependencies on external services that must be mocked or reimplemented.
|
||||
- [ ] Tests: Run Behave discovery scenarios and Robot smoke suites covering the generated artifacts. Add `Fix – …` sub-items for failures and resolve immediately.
|
||||
- [ ] After each Phase 0 test execution, document the results, update pending tasks with new requirements, and log any additional test coverage needed.
|
||||
- [x] Tests: Run Behave discovery scenarios and Robot smoke suites covering the generated artifacts. Add `Fix – …` sub-items for failures and resolve immediately.
|
||||
- [x] After each Phase 0 test execution, document the results, update pending tasks with new requirements, and log any additional test coverage needed.
|
||||
- [x] Run the relevant `nox` sessions (unit, integration, coverage) after the boilerplate port to verify CLI help/version behavior, ensuring overall coverage is ≥85%.
|
||||
- [ ] Implement a coverage gating adjustment to fail below 85% once additional modules land.
|
||||
- [ ] Update the coverage `nox` session so it fails the build when coverage drops below 85%, and record the status in Phase 0 Notes.
|
||||
- [ ] Extend `features/cli_inventory.feature` to validate CLI enumeration.
|
||||
- [ ] Parameterize the feature with the generated inventory file and assert every command has a Python migration owner.
|
||||
- [x] Implement a coverage gating adjustment to fail below 85% once additional modules land.
|
||||
- [x] Update the coverage `nox` session so it fails the build when coverage drops below 85%, and record the status in Phase 0 Notes.
|
||||
- [x] Extend `features/cli_inventory.feature` to validate CLI enumeration.
|
||||
- [x] Parameterize the feature with the generated inventory file and assert every command has a Python migration owner.
|
||||
- [ ] Add steps verifying that CLI help text captured from Go matches planned Python wording or document intentional changes.
|
||||
- [ ] Execute `robot/server_routes.robot` to verify route mapping accuracy.
|
||||
- [ ] Generate dynamic test cases from the OpenAPI artifact to ensure every handler is represented.
|
||||
- [x] Execute `robot/server_routes.robot` to verify route mapping accuracy.
|
||||
- [x] Generate dynamic test cases from the OpenAPI artifact to ensure every handler is represented.
|
||||
- [ ] Assert that authentication and streaming metadata extracted from Go align with documented Python plans.
|
||||
- [ ] Add Behave serialization scenarios for contract exports.
|
||||
- [ ] Load example payloads and validate against JSON schema snapshots committed alongside fixtures.
|
||||
- [x] Add Behave serialization scenarios for contract exports.
|
||||
- [x] Load example payloads and validate against JSON schema snapshots committed alongside fixtures.
|
||||
- [ ] Ensure round-trip serialization/deserialization with the planned Python dataclasses succeeds.
|
||||
- [ ] Run Robot fixture-loading suites for converted shell assets.
|
||||
- [ ] Run scripts in a sandboxed environment, asserting deterministic outputs and no external side effects.
|
||||
- [ ] Capture execution logs and attach them to the Robot report for traceability.
|
||||
- [ ] Add Behave environment remapping scenarios.
|
||||
- [ ] Simulate legacy environment variable usage and ensure compatibility mappings resolve correctly.
|
||||
- [ ] Validate generated user messaging for deprecated variables.
|
||||
- [x] Run Robot fixture-loading suites for converted shell assets.
|
||||
- [x] Run scripts in a sandboxed environment, asserting deterministic outputs and no external side effects.
|
||||
- [x] Capture execution logs and attach them to the Robot report for traceability.
|
||||
- [x] Add Behave environment remapping scenarios.
|
||||
- [x] Simulate legacy environment variable usage and ensure compatibility mappings resolve correctly.
|
||||
- [x] Validate generated user messaging for deprecated variables.
|
||||
- [ ] Run Robot parity matrix validation suite.
|
||||
- [ ] Check that every workflow row in the matrix references at least one Behave and one Robot test placeholder.
|
||||
- [ ] Fail the suite if new workflows are discovered without corresponding migration tasks.
|
||||
- [ ] Add Behave scenarios ensuring cloud-only features stay disabled or remapped.
|
||||
- [ ] Assert that deprecated commands/flags raise informative errors or point to replacements.
|
||||
- [ ] Verify that telemetry or billing endpoints are removed or replaced with local equivalents.
|
||||
- [x] Add Behave and Robot tests for CLI inventory extractor.
|
||||
- [x] Created `features/discovery.feature` and `features/discovery_module.feature` testing the CLI extractor module.
|
||||
- [x] Added comprehensive Robot tests in `robot/discovery.robot` for integration testing.
|
||||
- [x] Add Behave and Robot tests for server endpoint extractor.
|
||||
- [x] Created `features/server_endpoints.feature` with step definitions to test extraction.
|
||||
- [x] Added Robot Framework tests in `robot/server_endpoints.robot` for API validation.
|
||||
- [x] Add Behave and Robot tests for data contracts extractor.
|
||||
- [x] Created `features/data_contracts.feature` with full test coverage.
|
||||
- [x] Added Robot tests in `robot/data_contracts.robot` for integration testing.
|
||||
- [x] Add Behave and Robot tests for shell assets extractor.
|
||||
- [x] Created `features/shell_assets.feature` with comprehensive test scenarios.
|
||||
- [x] Added Robot tests in `robot/shell_assets.robot` for catalog validation.
|
||||
- [x] Add Behave and Robot tests for environment variables extractor.
|
||||
- [x] Created `features/env_variables.feature` with complete test coverage.
|
||||
- [x] Added Robot tests in `robot/env_variables.robot` with shared resource file.
|
||||
- [x] Create run_all.py orchestrator for discovery pipeline.
|
||||
- [x] Implemented orchestration script that runs all extractors in sequence.
|
||||
- [x] Added comprehensive output reporting and statistics collection.
|
||||
|
||||
- [ ] Phase 1: Architecture Definition
|
||||
- [ ] Code: Produce ADR stubs, module scaffolding, coding standard configurations, and packaging setup.
|
||||
@@ -451,9 +489,9 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Add remote client networking with reconnect logic aligned to `plandex/app/cli/lib/active_stream.go`.
|
||||
- [ ] Implement exponential backoff, jitter, and resume semantics for dropped connections.
|
||||
- [ ] Preserve user-facing status messages and progress indicators during reconnect attempts.
|
||||
- [ ] Build configuration merger with legacy migration layer referencing `plandex/app/cli/lib/org_user_config.go` and `legacy_files.go`.
|
||||
- [ ] Provide utilities to read legacy JSON/YAML files, apply transformations, and emit Python-native config structures.
|
||||
- [ ] Implement backup/rollback strategy for migrated configs with audit logging.
|
||||
- [ ] Build configuration system for CleverAgents as a standalone application.
|
||||
- [ ] Create CleverAgents-specific JSON/YAML configuration structures.
|
||||
- [ ] Use only CLEVERAGENTS_* environment variables throughout the system.
|
||||
- [ ] Implement DI container supporting CLI/server lifetimes and test overrides.
|
||||
- [ ] Define scopes (singleton, request, background task) and register factories for all major services.
|
||||
- [ ] Offer override hooks for Behave/Robot tests to inject mocks and fakes.
|
||||
@@ -469,7 +507,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Record screenshots or transcripts illustrating matching behaviors.
|
||||
- [ ] Document any intentional UX differences and rationale.
|
||||
- [ ] Document server configuration surface, flags, and health endpoints.
|
||||
- [ ] Provide tables of CLI flags, environment overrides, and config file options with defaults.
|
||||
- [ ] Provide tables of CLI flags, environment overrides using CLEVERAGENTS_* variables (NOT PLANDEX_*), and config file options with defaults.
|
||||
- [ ] Describe expected responses for health/version/metrics endpoints.
|
||||
- [ ] Record remote-mode behavior, error handling, and fallback messaging.
|
||||
- [ ] Document failure scenarios (auth expired, network drop, incompatible server version) and user guidance.
|
||||
@@ -641,11 +679,11 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Monitor metrics/logs to ensure selection order matches configured priorities.
|
||||
|
||||
- [ ] Phase 5: Command & Feature Parity
|
||||
- [ ] Code: Recreate CLI command tree, REPL, workflows, UI elements, pipeline features, migration utilities, and cloud replacements.
|
||||
- [ ] Code: Recreate CLI command tree, REPL, workflows, UI elements, pipeline features, and cloud replacements.
|
||||
- [ ] After making progress on any Phase 5 code task, immediately capture implementation details, adjust unfinished tasks, and add new subtasks/future items caused by the work.
|
||||
- [ ] Implement CLI commands and aliases matching `plandex/app/cli/cmd` definitions.
|
||||
- [ ] Port command handlers to Python services while preserving flags, defaults, and output formatting.
|
||||
- [ ] Implement compatibility shim for deprecated flags with warning messaging.
|
||||
- [ ] Implement CLI commands similar to those in `plandex/app/cli/cmd` but for CleverAgents.
|
||||
- [ ] Create command handlers in Python with appropriate flags, defaults, and output formatting.
|
||||
- [ ] No compatibility shims needed - this is a new standalone application.
|
||||
- [ ] Port REPL behaviors from `plandex/app/cli/repl.go` and `term` helpers.
|
||||
- [ ] Rebuild prompt toolkit integrations (key bindings, suggestion completers, multi-line editing).
|
||||
- [ ] Support both interactive TUI and headless batch execution as in Go version.
|
||||
@@ -658,9 +696,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Port pipeline logic (`tell`, `continue`, `build`, `apply`, `debug`, `rewind`, etc.).
|
||||
- [ ] Recreate orchestration logic, including state machine transitions and failure handling.
|
||||
- [ ] Support automation hooks (auto-debug loops, plan monitor) exactly as Go implementation.
|
||||
- [ ] Build configuration migration utilities for legacy JSON and environment state.
|
||||
- [ ] Provide CLI commands to migrate individual config files, entire workspaces, and environment variable backups.
|
||||
- [ ] Generate migration reports summarizing changes for end users.
|
||||
- [ ] Remove configuration migration utilities (not needed - CleverAgents is standalone).
|
||||
- [ ] Replace cloud dependencies (invites, billing prompts, telemetry) with local alternatives.
|
||||
- [ ] Implement new flows for invite emails, optional telemetry prompts, and billing notices that operate offline.
|
||||
- [ ] Document fallback behavior when external services are unavailable.
|
||||
@@ -899,7 +935,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Confirm bandit/commit lint rules enforce security and conventional commits policies.
|
||||
|
||||
- [ ] Phase 9: Packaging & Release Strategy
|
||||
- [ ] Code: Build packaging pipelines, installation pathways, self-host tooling, compatibility shim, automated release notes, and staged release scripts.
|
||||
- [ ] Code: Build packaging pipelines, installation pathways, and staged release scripts.
|
||||
- [ ] After progressing any Phase 9 coding task, document implementation outcomes, adjust outstanding subtasks, and create new checklist items (including later-phase entries) spawned by the work before continuing.
|
||||
- [ ] Configure wheel/sdist/PyInstaller/Briefcase outputs.
|
||||
- [ ] Ensure entry points (`agents`, `agents.exe`) are correctly generated across platforms.
|
||||
@@ -907,15 +943,13 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Provide installation pathways (pipx, Homebrew, Windows installer, Docker, air-gapped bundles).
|
||||
- [ ] Create installation scripts/manifests for each distribution channel.
|
||||
- [ ] Automate verification steps (checksum validation, smoke tests) post-install.
|
||||
- [ ] Translate `start_local.sh` into Python orchestration tools.
|
||||
- [ ] Provide CLI commands to bootstrap local environments (DB migrations, seed data, server start).
|
||||
- [ ] Create Python orchestration tools for local development.
|
||||
- [ ] Provide CLI commands to bootstrap local environments (DB setup, seed data, server start).
|
||||
- [ ] Offer Docker Compose templates aligned with new architecture.
|
||||
- [ ] Implement `plandex` compatibility shim with warnings.
|
||||
- [ ] Provide drop-in shim executables/scripts that forward to `agents` while logging migration advice.
|
||||
- [ ] Support configuration/env passthrough to minimize user disruption.
|
||||
- [ ] Automate migration/release notes and rollback documentation.
|
||||
- [ ] Remove plandex compatibility shims (not needed for standalone project).
|
||||
- [ ] Automate release notes for CleverAgents.
|
||||
- [ ] Generate release notes from changelog fragments and test reports.
|
||||
- [ ] Produce rollback guides and scripts for downgrading to prior versions.
|
||||
- [ ] Document CleverAgents features and capabilities as a new project.
|
||||
- [ ] Plan staged release workflows with telemetry opt-in.
|
||||
- [ ] Define release channels (beta, stable) and promotion criteria.
|
||||
- [ ] Implement opt-in telemetry toggles that inform staging decisions.
|
||||
@@ -933,9 +967,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Capture self-host orchestration configuration.
|
||||
- [ ] Document configuration files, environment variables, and service dependencies.
|
||||
- [ ] Include diagrams illustrating deployment topologies (single node vs multi-user).
|
||||
- [ ] Log shim behavior and compatibility guarantees.
|
||||
- [ ] Specify guarantees provided by the shim (flags supported, timeline for deprecation).
|
||||
- [ ] Document logging emitted by the shim for monitoring adoption.
|
||||
- [ ] Remove shim documentation (not applicable for standalone project).
|
||||
- [ ] Document release note templates and approval process.
|
||||
- [ ] Provide templates for user-facing notes, internal changelog, and security advisories.
|
||||
- [ ] Record sign-off requirements (engineering, docs, product, security).
|
||||
@@ -955,9 +987,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Add Behave self-host orchestration tests.
|
||||
- [ ] Spin up local environments via new orchestration commands and run smoke workflows.
|
||||
- [ ] Validate teardown cleans resources (containers, temp files, DB data).
|
||||
- [ ] Run Robot shim compatibility suites.
|
||||
- [ ] Exercise legacy scripts/tools invoking `plandex` and ensure forwarding works.
|
||||
- [ ] Capture warnings/errors emitted and compare to documented messaging.
|
||||
- [ ] Remove shim compatibility tests (not needed for standalone project).
|
||||
- [ ] Add Behave release document automation tests.
|
||||
- [ ] Verify release note generation scripts produce correctly formatted outputs.
|
||||
- [ ] Ensure rollback docs include current version metadata.
|
||||
@@ -977,9 +1007,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Capture self-host orchestration configuration.
|
||||
- [ ] Document configuration files, environment variables, and service dependencies.
|
||||
- [ ] Include diagrams illustrating deployment topologies (single node vs multi-user).
|
||||
- [ ] Log shim behavior and compatibility guarantees.
|
||||
- [ ] Specify guarantees provided by the shim (flags supported, timeline for deprecation).
|
||||
- [ ] Document logging emitted by the shim for monitoring adoption.
|
||||
- [ ] Remove shim documentation (not applicable for standalone project).
|
||||
- [ ] Document release note templates and approval process.
|
||||
- [ ] Provide templates for user-facing notes, internal changelog, and security advisories.
|
||||
- [ ] Record sign-off requirements (engineering, docs, product, security).
|
||||
@@ -999,9 +1027,7 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Add Behave self-host orchestration tests.
|
||||
- [ ] Spin up local environments via new orchestration commands and run smoke workflows.
|
||||
- [ ] Validate teardown cleans resources (containers, temp files, DB data).
|
||||
- [ ] Run Robot shim compatibility suites.
|
||||
- [ ] Exercise legacy scripts/tools invoking `plandex` and ensure forwarding works.
|
||||
- [ ] Capture warnings/errors emitted and compare to documented messaging.
|
||||
- [ ] Remove shim compatibility tests (not needed for standalone project).
|
||||
- [ ] Add Behave release document automation tests.
|
||||
- [ ] Verify release note generation scripts produce correctly formatted outputs.
|
||||
- [ ] Ensure rollback docs include current version metadata.
|
||||
@@ -1074,4 +1100,28 @@ Each phase item includes mandatory **Code**, **Document**, and **Tests** bullets
|
||||
- [ ] Test bots handling stale issues, CLA enforcement, and moderation cues.
|
||||
- [ ] Ensure failures produce actionable diagnostics for maintainers.
|
||||
|
||||
- [ ] Phase 11: Cleanup and Finalization
|
||||
- [ ] Code: Remove the plandex reference directory and verify standalone operation.
|
||||
- [ ] Verify all CleverAgents functionality works without any dependency on plandex/ directory.
|
||||
- [ ] Run full test suite to ensure no imports or file reads from plandex/ remain.
|
||||
- [ ] Verify all discovery tools have been updated to work with extracted artifacts only.
|
||||
- [ ] Delete the plandex/ reference directory.
|
||||
- [ ] Remove the entire plandex/ directory from the repository.
|
||||
- [ ] Update .gitignore to remove plandex-specific entries.
|
||||
- [ ] Ensure no broken references remain in documentation or code.
|
||||
- [ ] Update all documentation to reflect CleverAgents as a standalone project.
|
||||
- [ ] Remove any mentions of "migration from Plandex" in user-facing docs.
|
||||
- [ ] Update README to present CleverAgents as an independent project.
|
||||
- [ ] Ensure all examples use CLEVERAGENTS_ environment variables.
|
||||
- [ ] Document: Finalize the standalone nature of CleverAgents in **Phase 11 Notes**.
|
||||
- [ ] Document that CleverAgents is now fully independent.
|
||||
- [ ] Confirm no Plandex references remain in the codebase.
|
||||
- [ ] Note that this implementation plan itself is the only historical record of the porting process.
|
||||
- [ ] Tests: Verify standalone operation.
|
||||
- [ ] Run full test suite with plandex/ directory deleted.
|
||||
- [ ] Verify all discovery artifacts are self-contained.
|
||||
- [ ] Ensure documentation builds without any plandex references.
|
||||
|
||||
#### Phase 11 Notes
|
||||
Notes: Document the completion of the standalone CleverAgents project.
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
*** Settings ***
|
||||
Library OperatingSystem
|
||||
|
||||
*** Variables ***
|
||||
${PLANDEX_DIR} ${CURDIR}/../plandex
|
||||
${OUTPUT_DIR} ${CURDIR}/../docs/reference
|
||||
${WORK_DIR} ${CURDIR}/..
|
||||
|
||||
*** Keywords ***
|
||||
Setup Discovery Test
|
||||
[Documentation] Common setup for discovery tests
|
||||
Create Directory ${OUTPUT_DIR}
|
||||
Log Working directory: ${WORK_DIR}
|
||||
Log Plandex directory: ${PLANDEX_DIR}
|
||||
Log Output directory: ${OUTPUT_DIR}
|
||||
|
||||
Cleanup Discovery Test
|
||||
[Documentation] Common cleanup for discovery tests
|
||||
Log Test completed
|
||||
@@ -0,0 +1,150 @@
|
||||
*** Settings ***
|
||||
Documentation Test environment variable extraction from Plandex
|
||||
Library OperatingSystem
|
||||
Library Collections
|
||||
Library String
|
||||
Resource discovery_common.resource
|
||||
|
||||
*** Variables ***
|
||||
${ENV_JSON} ${OUTPUT_DIR}/env_variables.json
|
||||
${ENV_YAML} ${OUTPUT_DIR}/env_variables.yaml
|
||||
${ENV_MAPPING} ${OUTPUT_DIR}/env_mapping.txt
|
||||
${ENV_GUIDE} ${OUTPUT_DIR}/env_migration_guide.md
|
||||
|
||||
*** Test Cases ***
|
||||
Extract Environment Variables from Documentation
|
||||
[Documentation] Extract environment variables from documentation files
|
||||
[Tags] discovery environment
|
||||
|
||||
# Run extraction
|
||||
${result}= Run Process python -m cleveragents.discovery.env_variables
|
||||
... ${PLANDEX_DIR} --output ${OUTPUT_DIR}
|
||||
... cwd=${WORK_DIR}
|
||||
|
||||
Should Be Equal As Integers ${result.returncode} 0
|
||||
Should Contain ${result.stdout} Environment variable extraction complete
|
||||
|
||||
# Verify output files exist
|
||||
File Should Exist ${ENV_JSON}
|
||||
File Should Exist ${ENV_YAML}
|
||||
File Should Exist ${ENV_MAPPING}
|
||||
File Should Exist ${ENV_GUIDE}
|
||||
|
||||
Validate Environment Variable JSON Structure
|
||||
[Documentation] Validate the structure of extracted environment variables
|
||||
[Tags] discovery environment
|
||||
|
||||
${json_content}= Get File ${ENV_JSON}
|
||||
${data}= Evaluate json.loads('''${json_content}''') json
|
||||
|
||||
# Check required keys
|
||||
Dictionary Should Contain Key ${data} variables
|
||||
Dictionary Should Contain Key ${data} conflicts
|
||||
Dictionary Should Contain Key ${data} mapping
|
||||
Dictionary Should Contain Key ${data} statistics
|
||||
|
||||
# Check statistics
|
||||
${stats}= Get From Dictionary ${data} statistics
|
||||
Dictionary Should Contain Key ${stats} total_variables
|
||||
Dictionary Should Contain Key ${stats} documented_variables
|
||||
Dictionary Should Contain Key ${stats} code_only_variables
|
||||
Dictionary Should Contain Key ${stats} migration_required
|
||||
|
||||
# Verify we found variables
|
||||
${total}= Get From Dictionary ${stats} total_variables
|
||||
Should Be True ${total} > 0 Should find environment variables
|
||||
|
||||
Check Variable Naming Conventions
|
||||
[Documentation] Verify variable naming conventions and mappings
|
||||
[Tags] discovery environment
|
||||
|
||||
${json_content}= Get File ${ENV_JSON}
|
||||
${data}= Evaluate json.loads('''${json_content}''') json
|
||||
${mapping}= Get From Dictionary ${data} mapping
|
||||
|
||||
# Check PLANDEX to CLEVERAGENTS mapping
|
||||
FOR ${old_name} IN @{mapping.keys()}
|
||||
${new_name}= Get From Dictionary ${mapping} ${old_name}
|
||||
Run Keyword If '${old_name}'.startswith('PLANDEX_')
|
||||
... Should Start With ${new_name} CLEVERAGENTS_
|
||||
END
|
||||
|
||||
Validate Migration Guide Content
|
||||
[Documentation] Verify migration guide has expected content
|
||||
[Tags] discovery environment
|
||||
|
||||
${content}= Get File ${ENV_GUIDE}
|
||||
|
||||
# Check headers
|
||||
Should Contain ${content} \# Environment Variable Migration Guide
|
||||
Should Contain ${content} \#\# Overview
|
||||
Should Contain ${content} \#\# Variable Mappings
|
||||
Should Contain ${content} \#\# Conflicts and Warnings
|
||||
|
||||
# Check table format
|
||||
Should Contain ${content} | Old Name | New Name |
|
||||
Should Contain ${content} |----------|----------|
|
||||
|
||||
# Check statistics
|
||||
Should Contain ${content} Total variables:
|
||||
Should Contain ${content} Variables requiring migration:
|
||||
|
||||
Environment Variable Categories
|
||||
[Documentation] Check that variables are properly categorized
|
||||
[Tags] discovery environment
|
||||
|
||||
${json_content}= Get File ${ENV_JSON}
|
||||
${data}= Evaluate json.loads('''${json_content}''') json
|
||||
${variables}= Get From Dictionary ${data} variables
|
||||
|
||||
${categories}= Create List
|
||||
FOR ${var_name} ${var_info} IN &{variables}
|
||||
${category}= Get From Dictionary ${var_info} category
|
||||
Append To List ${categories} ${category}
|
||||
END
|
||||
|
||||
# Remove duplicates
|
||||
${unique_categories}= Remove Duplicates ${categories}
|
||||
|
||||
# Should have multiple categories
|
||||
${length}= Get Length ${unique_categories}
|
||||
Should Be True ${length} > 1 Should have multiple categories
|
||||
|
||||
# Check for expected categories
|
||||
${expected}= Create List CLI Server LLM Providers General
|
||||
FOR ${cat} IN @{expected}
|
||||
${found}= Run Keyword And Return Status List Should Contain Value ${unique_categories} ${cat}
|
||||
Log Category ${cat}: ${found}
|
||||
END
|
||||
|
||||
Provider Variables Preservation
|
||||
[Documentation] Verify provider-specific variables are preserved
|
||||
[Tags] discovery environment
|
||||
|
||||
${json_content}= Get File ${ENV_JSON}
|
||||
${data}= Evaluate json.loads('''${json_content}''') json
|
||||
${variables}= Get From Dictionary ${data} variables
|
||||
|
||||
# Check provider variables
|
||||
${providers}= Create List OPENAI_ ANTHROPIC_ GEMINI_ AZURE_ AWS_
|
||||
|
||||
FOR ${prefix} IN @{providers}
|
||||
${provider_vars}= Create List
|
||||
FOR ${var_name} ${var_info} IN &{variables}
|
||||
Run Keyword If '${var_name}'.startswith('${prefix}')
|
||||
... Append To List ${provider_vars} ${var_name}
|
||||
END
|
||||
|
||||
# Check that provider variables keep their names
|
||||
FOR ${var} IN @{provider_vars}
|
||||
${var_info}= Get From Dictionary ${variables} ${var}
|
||||
${proposed}= Get From Dictionary ${var_info} proposed_cleveragents_name
|
||||
Should Be Equal ${var} ${proposed} Provider variable should keep its name
|
||||
END
|
||||
END
|
||||
|
||||
*** Keywords ***
|
||||
Run Process
|
||||
[Arguments] @{args} &{config}
|
||||
${result}= Evaluate subprocess.run(${args}, capture_output=True, text=True, **${config}) subprocess
|
||||
RETURN ${result}
|
||||
@@ -120,4 +120,4 @@ Load JSON From File
|
||||
[Arguments] ${file_path}
|
||||
${content}= Get File ${file_path}
|
||||
${json}= Evaluate json.loads('''${content}''') json
|
||||
[Return] ${json}
|
||||
RETURN ${json}
|
||||
@@ -550,3 +550,19 @@ class DataContractExtractor:
|
||||
}
|
||||
|
||||
return examples.get(type_name, f"<{type_name}>")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="Extract data contracts from Plandex")
|
||||
parser.add_argument("plandex_dir", help="Path to Plandex repository")
|
||||
parser.add_argument("--output", default="docs/reference", help="Output directory")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
extractor = DataContractExtractor(args.plandex_dir)
|
||||
extractor.extract_all()
|
||||
extractor.save_contracts(args.output)
|
||||
|
||||
print("Data contract extraction complete")
|
||||
|
||||
@@ -0,0 +1,354 @@
|
||||
"""Extract environment variables from Plandex Go source code and documentation."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import yaml
|
||||
|
||||
|
||||
class EnvironmentVariableExtractor:
|
||||
"""Extract environment variables from Go code and documentation."""
|
||||
|
||||
def __init__(self, plandex_root: str | Path):
|
||||
"""Initialize the extractor with Plandex root directory."""
|
||||
self.plandex_root = Path(plandex_root)
|
||||
self.variables: dict[str, dict[str, Any]] = {}
|
||||
|
||||
def extract_from_documentation(self) -> None:
|
||||
"""Extract environment variables from documentation files."""
|
||||
doc_file = self.plandex_root / "docs" / "docs" / "environment-variables.md"
|
||||
if not doc_file.exists():
|
||||
return
|
||||
|
||||
with doc_file.open("r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
# Pattern to match environment variable documentation
|
||||
# Matches lines like: VARIABLE_NAME= # Description
|
||||
pattern = r"^([A-Z_]+[A-Z0-9_]*)=([^#]*)?#?\s*(.*)$"
|
||||
|
||||
current_section = "General"
|
||||
for line in content.splitlines():
|
||||
# Track sections
|
||||
if line.startswith("###") or line.startswith("##"):
|
||||
current_section = line.strip("#").strip()
|
||||
|
||||
match = re.match(pattern, line.strip())
|
||||
if match:
|
||||
var_name = match.group(1)
|
||||
default_value = match.group(2).strip() if match.group(2) else ""
|
||||
description = match.group(3).strip() if match.group(3) else ""
|
||||
|
||||
# Clean up default value
|
||||
if default_value and not default_value.isspace():
|
||||
# Remove quotes if present
|
||||
default_value = default_value.strip("'\"")
|
||||
else:
|
||||
default_value = ""
|
||||
|
||||
if var_name not in self.variables:
|
||||
self.variables[var_name] = {
|
||||
"name": var_name,
|
||||
"default": default_value,
|
||||
"description": description,
|
||||
"category": current_section,
|
||||
"sources": ["documentation"],
|
||||
"usage_locations": [],
|
||||
"proposed_cleveragents_name": self._propose_new_name(var_name),
|
||||
}
|
||||
|
||||
def extract_from_go_source(self) -> None:
|
||||
"""Extract environment variable usage from Go source files."""
|
||||
# Common patterns for environment variable access in Go
|
||||
patterns = [
|
||||
r'os\.Getenv\("([^"]+)"\)',
|
||||
r'os\.LookupEnv\("([^"]+)"\)',
|
||||
r'viper\.GetString\("([^"]+)"\)',
|
||||
r'viper\.GetBool\("([^"]+)"\)',
|
||||
r'viper\.GetInt\("([^"]+)"\)',
|
||||
]
|
||||
|
||||
# Search through Go files
|
||||
for go_file in self.plandex_root.rglob("*.go"):
|
||||
# Skip vendor and test files
|
||||
if "vendor" in go_file.parts or "_test.go" in str(go_file):
|
||||
continue
|
||||
|
||||
try:
|
||||
with go_file.open("r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
|
||||
for pattern in patterns:
|
||||
matches = re.finditer(pattern, content)
|
||||
for match in matches:
|
||||
var_name = match.group(1)
|
||||
|
||||
# Get context around the match for default value detection
|
||||
line_start = content.rfind("\n", 0, match.start()) + 1
|
||||
line_end = content.find("\n", match.end())
|
||||
if line_end == -1:
|
||||
line_end = len(content)
|
||||
line = content[line_start:line_end]
|
||||
|
||||
# Try to detect default values
|
||||
default = self._extract_default_value(line, var_name)
|
||||
|
||||
# Get line number for reference
|
||||
line_num = content[: match.start()].count("\n") + 1
|
||||
relative_path = go_file.relative_to(self.plandex_root)
|
||||
location = f"{relative_path}:{line_num}"
|
||||
|
||||
if var_name not in self.variables:
|
||||
self.variables[var_name] = {
|
||||
"name": var_name,
|
||||
"default": default,
|
||||
"description": "",
|
||||
"category": self._categorize_by_path(go_file),
|
||||
"sources": ["code"],
|
||||
"usage_locations": [location],
|
||||
"proposed_cleveragents_name": self._propose_new_name(
|
||||
var_name
|
||||
),
|
||||
}
|
||||
else:
|
||||
if "code" not in self.variables[var_name]["sources"]:
|
||||
self.variables[var_name]["sources"].append("code")
|
||||
if (
|
||||
location
|
||||
not in self.variables[var_name]["usage_locations"]
|
||||
):
|
||||
self.variables[var_name]["usage_locations"].append(
|
||||
location
|
||||
)
|
||||
# Update default if we found one and didn't have it
|
||||
if default and not self.variables[var_name]["default"]:
|
||||
self.variables[var_name]["default"] = default
|
||||
|
||||
except (OSError, UnicodeDecodeError):
|
||||
continue
|
||||
|
||||
def _extract_default_value(self, line: str, var_name: str) -> str:
|
||||
"""Try to extract default value from a line of Go code."""
|
||||
# Pattern for default value assignments
|
||||
# e.g., if val == "" { val = "default" }
|
||||
patterns = [
|
||||
r'if\s+\w+\s*==\s*""\s*{\s*\w+\s*=\s*"([^"]+)"',
|
||||
r'Default\s*:\s*"([^"]+)"',
|
||||
r'defaultValue\s*:=\s*"([^"]+)"',
|
||||
]
|
||||
|
||||
for pattern in patterns:
|
||||
match = re.search(pattern, line)
|
||||
if match:
|
||||
return match.group(1)
|
||||
|
||||
return ""
|
||||
|
||||
def _categorize_by_path(self, file_path: Path) -> str:
|
||||
"""Categorize variable by file path."""
|
||||
path_str = str(file_path)
|
||||
|
||||
if "cli" in path_str:
|
||||
return "CLI"
|
||||
elif "server" in path_str:
|
||||
return "Server"
|
||||
elif "shared" in path_str:
|
||||
return "Shared"
|
||||
elif "model" in path_str or "ai" in path_str:
|
||||
return "LLM Providers"
|
||||
else:
|
||||
return "General"
|
||||
|
||||
def _propose_new_name(self, var_name: str) -> str:
|
||||
"""Propose CleverAgents naming convention for environment variable."""
|
||||
# Replace PLANDEX with CLEVERAGENTS
|
||||
if var_name.startswith("PLANDEX_"):
|
||||
return var_name.replace("PLANDEX_", "CLEVERAGENTS_")
|
||||
|
||||
# Keep provider-specific names as-is
|
||||
provider_prefixes = [
|
||||
"OPENAI_",
|
||||
"ANTHROPIC_",
|
||||
"GEMINI_",
|
||||
"AZURE_",
|
||||
"AWS_",
|
||||
"OPENROUTER_",
|
||||
"GOOGLE_",
|
||||
"VERTEXAI_",
|
||||
"DEEPSEEK_",
|
||||
"PERPLEXITY_",
|
||||
]
|
||||
for prefix in provider_prefixes:
|
||||
if var_name.startswith(prefix):
|
||||
return var_name
|
||||
|
||||
# Add CLEVERAGENTS prefix for generic names
|
||||
if not var_name.startswith("CLEVERAGENTS_"):
|
||||
return f"CLEVERAGENTS_{var_name}"
|
||||
|
||||
return var_name
|
||||
|
||||
def identify_conflicts(self) -> list[dict[str, Any]]:
|
||||
"""Identify conflicting or deprecated variables."""
|
||||
conflicts: list[dict[str, Any]] = []
|
||||
|
||||
for var_name, var_info in self.variables.items():
|
||||
# Check for variables that need migration
|
||||
if var_name.startswith("PLANDEX_"):
|
||||
conflicts.append(
|
||||
{
|
||||
"old_name": var_name,
|
||||
"new_name": var_info["proposed_cleveragents_name"],
|
||||
"type": "migration_required",
|
||||
"description": "Rename from Plandex to CleverAgents namespace",
|
||||
}
|
||||
)
|
||||
|
||||
# Check for potentially deprecated variables
|
||||
if (
|
||||
"development" in var_info.get("description", "").lower()
|
||||
and "PLANDEX_DEV" in var_name
|
||||
):
|
||||
conflicts.append(
|
||||
{
|
||||
"old_name": var_name,
|
||||
"new_name": var_info["proposed_cleveragents_name"],
|
||||
"type": "development_only",
|
||||
"description": (
|
||||
"Development-specific variable, may need reconsideration"
|
||||
),
|
||||
}
|
||||
)
|
||||
|
||||
return conflicts
|
||||
|
||||
def generate_mapping_table(self) -> dict[str, str]:
|
||||
"""Generate a simple mapping table from old to new names."""
|
||||
mapping: dict[str, str] = {}
|
||||
for var_name, var_info in self.variables.items():
|
||||
if var_name != var_info["proposed_cleveragents_name"]:
|
||||
mapping[var_name] = var_info["proposed_cleveragents_name"]
|
||||
return mapping
|
||||
|
||||
def extract_all(self) -> dict[str, Any]:
|
||||
"""Extract environment variables from all sources."""
|
||||
self.extract_from_documentation()
|
||||
self.extract_from_go_source()
|
||||
|
||||
# Sort variables by category and name
|
||||
sorted_vars = dict(
|
||||
sorted(self.variables.items(), key=lambda x: (x[1]["category"], x[0]))
|
||||
)
|
||||
|
||||
return {
|
||||
"variables": sorted_vars,
|
||||
"conflicts": self.identify_conflicts(),
|
||||
"mapping": self.generate_mapping_table(),
|
||||
"statistics": {
|
||||
"total_variables": len(self.variables),
|
||||
"documented_variables": sum(
|
||||
1
|
||||
for v in self.variables.values()
|
||||
if "documentation" in v["sources"]
|
||||
),
|
||||
"code_only_variables": sum(
|
||||
1
|
||||
for v in self.variables.values()
|
||||
if "code" in v["sources"] and "documentation" not in v["sources"]
|
||||
),
|
||||
"migration_required": sum(
|
||||
1 for v in self.variables if v.startswith("PLANDEX_")
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
def save_results(self, output_dir: str | Path) -> None:
|
||||
"""Save extraction results to files."""
|
||||
output_dir = Path(output_dir)
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
results = self.extract_all()
|
||||
|
||||
# Save as JSON
|
||||
json_file = output_dir / "env_variables.json"
|
||||
with json_file.open("w", encoding="utf-8") as f:
|
||||
json.dump(results, f, indent=2, default=str)
|
||||
|
||||
# Save as YAML
|
||||
yaml_file = output_dir / "env_variables.yaml"
|
||||
with yaml_file.open("w", encoding="utf-8") as f:
|
||||
yaml.dump(results, f, default_flow_style=False, sort_keys=False)
|
||||
|
||||
# Save mapping table as simple text
|
||||
mapping_file = output_dir / "env_mapping.txt"
|
||||
with mapping_file.open("w", encoding="utf-8") as f:
|
||||
f.write("# Environment Variable Mapping\n")
|
||||
f.write("# Old Name -> New Name\n")
|
||||
f.write("#" + "=" * 50 + "\n\n")
|
||||
for old, new in results["mapping"].items():
|
||||
f.write(f"{old} -> {new}\n")
|
||||
|
||||
# Generate migration guide
|
||||
migration_file = output_dir / "env_migration_guide.md"
|
||||
with migration_file.open("w", encoding="utf-8") as f:
|
||||
f.write("# Environment Variable Migration Guide\n\n")
|
||||
f.write("## Overview\n\n")
|
||||
f.write(f"Total variables: {results['statistics']['total_variables']}\n")
|
||||
f.write(
|
||||
f"Variables requiring migration: "
|
||||
f"{results['statistics']['migration_required']}\n"
|
||||
)
|
||||
f.write(
|
||||
f"Documented variables: "
|
||||
f"{results['statistics']['documented_variables']}\n"
|
||||
)
|
||||
f.write(
|
||||
f"Code-only variables: "
|
||||
f"{results['statistics']['code_only_variables']}\n\n"
|
||||
)
|
||||
|
||||
f.write("## Variable Mappings\n\n")
|
||||
f.write("| Old Name | New Name | Category | Default | Description |\n")
|
||||
f.write("|----------|----------|----------|---------|-------------|\n")
|
||||
|
||||
for var_name, var_info in results["variables"].items():
|
||||
old = var_name
|
||||
new = var_info["proposed_cleveragents_name"]
|
||||
category = var_info["category"]
|
||||
default = var_info["default"] or "(none)"
|
||||
desc = (
|
||||
var_info["description"][:50] + "..."
|
||||
if len(var_info["description"]) > 50
|
||||
else var_info["description"]
|
||||
)
|
||||
f.write(f"| {old} | {new} | {category} | {default} | {desc} |\n")
|
||||
|
||||
f.write("\n## Conflicts and Warnings\n\n")
|
||||
for conflict in results["conflicts"]:
|
||||
f.write(f"- **{conflict['old_name']}**: {conflict['description']}\n")
|
||||
f.write(f" - Type: {conflict['type']}\n")
|
||||
f.write(f" - Suggested: {conflict['new_name']}\n\n")
|
||||
|
||||
print("Environment variable extraction complete:")
|
||||
print(f" - Found {results['statistics']['total_variables']} variables")
|
||||
print(f" - Saved to {output_dir}/")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Extract environment variables from Plandex"
|
||||
)
|
||||
parser.add_argument("plandex_dir", help="Path to Plandex repository")
|
||||
parser.add_argument("--output", default="docs/reference", help="Output directory")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
extractor = EnvironmentVariableExtractor(args.plandex_dir)
|
||||
extractor.save_results(args.output)
|
||||
print("Environment variable extraction complete")
|
||||
@@ -12,6 +12,7 @@ sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
from cleveragents.discovery.cli_inventory import CLIInventoryExtractor
|
||||
from cleveragents.discovery.data_contracts import DataContractExtractor
|
||||
from cleveragents.discovery.env_variables import EnvironmentVariableExtractor
|
||||
from cleveragents.discovery.server_endpoints import ServerEndpointExtractor
|
||||
from cleveragents.discovery.shell_assets import ShellAssetExtractor
|
||||
|
||||
@@ -108,11 +109,25 @@ def main():
|
||||
print(" - docs/reference/shell_assets.json")
|
||||
print(" - docs/reference/shell_assets.yaml")
|
||||
print(" - docs/reference/shell_wrappers/ (Python wrappers)")
|
||||
shell_stats = stats # Save for summary
|
||||
|
||||
# 5. TODO: Extract environment variables
|
||||
# 5. Extract environment variables
|
||||
print("\n5. Extracting Environment Variables...")
|
||||
print("-" * 40)
|
||||
print(" ⚠ Not yet implemented")
|
||||
env_extractor = EnvironmentVariableExtractor(plandex_dir)
|
||||
env_output_dir = Path("docs/reference")
|
||||
env_extractor.save_results(env_output_dir)
|
||||
env_results = env_extractor.extract_all()
|
||||
stats = env_results["statistics"]
|
||||
print(f"✓ Extracted {stats['total_variables']} environment variables")
|
||||
print(f" - Documented variables: {stats['documented_variables']}")
|
||||
print(f" - Code-only variables: {stats['code_only_variables']}")
|
||||
print(f" - Variables requiring migration: {stats['migration_required']}")
|
||||
print("\n Output files:")
|
||||
print(" - docs/reference/env_variables.json")
|
||||
print(" - docs/reference/env_variables.yaml")
|
||||
print(" - docs/reference/env_mapping.txt")
|
||||
print(" - docs/reference/env_migration_guide.md")
|
||||
|
||||
# 6. TODO: Extract implicit behaviors
|
||||
print("\n6. Extracting Implicit Runtime Behaviors...")
|
||||
@@ -137,8 +152,9 @@ def main():
|
||||
print(f"✓ CLI inventory extracted: {total_cmds} commands")
|
||||
print(f"✓ Server endpoints extracted: {total_endpoints} endpoints")
|
||||
print(f"✓ Data contracts extracted: {total_structs} structs, {total_enums} enums")
|
||||
print(f"✓ Shell assets cataloged: {stats['total_scripts']} scripts")
|
||||
print("⚠ Environment variables: Pending")
|
||||
print(f"✓ Shell assets cataloged: {shell_stats['total_scripts']} scripts")
|
||||
env_var_count = env_results["statistics"]["total_variables"]
|
||||
print(f"✓ Environment variables extracted: {env_var_count} variables")
|
||||
print("⚠ Runtime behaviors: Pending")
|
||||
print("⚠ Parity matrix: Pending")
|
||||
print("⚠ Cloud features: Pending")
|
||||
|
||||
Reference in New Issue
Block a user