codeforge-dev 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/.env +4 -6
- package/.devcontainer/.env.example +29 -0
- package/.devcontainer/.gitignore +8 -0
- package/.devcontainer/.secrets.example +12 -0
- package/.devcontainer/CHANGELOG.md +130 -0
- package/.devcontainer/CLAUDE.md +56 -19
- package/.devcontainer/README.md +111 -56
- package/.devcontainer/config/{main-system-prompt.md → defaults/main-system-prompt.md} +72 -0
- package/.devcontainer/config/file-manifest.json +20 -0
- package/.devcontainer/devcontainer.json +20 -0
- package/.devcontainer/docs/configuration-reference.md +90 -0
- package/.devcontainer/docs/keybindings.md +100 -0
- package/.devcontainer/docs/optional-features.md +129 -0
- package/.devcontainer/docs/plugins.md +154 -0
- package/.devcontainer/docs/troubleshooting.md +128 -0
- package/.devcontainer/features/agent-browser/install.sh +6 -0
- package/.devcontainer/features/ast-grep/install.sh +6 -0
- package/.devcontainer/features/biome/README.md +27 -0
- package/.devcontainer/features/biome/install.sh +6 -0
- package/.devcontainer/features/ccburn/install.sh +6 -0
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +5 -0
- package/.devcontainer/features/ccstatusline/install.sh +7 -0
- package/.devcontainer/features/ccusage/install.sh +6 -0
- package/.devcontainer/features/claude-monitor/install.sh +6 -0
- package/.devcontainer/features/dprint/README.md +30 -0
- package/.devcontainer/features/dprint/devcontainer-feature.json +18 -0
- package/.devcontainer/features/dprint/install.sh +131 -0
- package/.devcontainer/features/hadolint/README.md +35 -0
- package/.devcontainer/features/hadolint/devcontainer-feature.json +13 -0
- package/.devcontainer/features/hadolint/install.sh +86 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +5 -0
- package/.devcontainer/features/lsp-servers/install.sh +7 -0
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +5 -0
- package/.devcontainer/features/mcp-qdrant/install.sh +13 -6
- package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +5 -0
- package/.devcontainer/features/mcp-reasoner/install.sh +8 -1
- package/.devcontainer/features/notify-hook/devcontainer-feature.json +5 -0
- package/.devcontainer/features/notify-hook/install.sh +7 -0
- package/.devcontainer/features/ruff/README.md +26 -0
- package/.devcontainer/features/ruff/devcontainer-feature.json +21 -0
- package/.devcontainer/features/ruff/install.sh +74 -0
- package/.devcontainer/features/shellcheck/README.md +38 -0
- package/.devcontainer/features/shellcheck/devcontainer-feature.json +13 -0
- package/.devcontainer/features/shellcheck/install.sh +24 -0
- package/.devcontainer/features/shfmt/README.md +37 -0
- package/.devcontainer/features/shfmt/devcontainer-feature.json +13 -0
- package/.devcontainer/features/shfmt/install.sh +85 -0
- package/.devcontainer/features/splitrail/devcontainer-feature.json +5 -0
- package/.devcontainer/features/splitrail/install.sh +7 -0
- package/.devcontainer/features/tmux/install.sh +8 -0
- package/.devcontainer/features/tree-sitter/install.sh +6 -0
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +3 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +114 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +4 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +478 -76
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/AGENT-REDIRECTION.md +226 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +17 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/bash-exec.md +4 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/claude-guide.md +14 -23
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +2 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +2 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +13 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +2 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +10 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +6 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +4 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +36 -23
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/statusline-config.md +3 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +39 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +174 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +8 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/commit-reminder.py +90 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/git-state-injector.py +114 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +61 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/ticket-linker.py +137 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/todo-harvester.py +130 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/SKILL.md +224 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/error-handling.md +166 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/rest-conventions.md +215 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/SKILL.md +211 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/references/language-patterns.md +327 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/SKILL.md +134 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/ecosystem-commands.md +264 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/license-compliance.md +80 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +153 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/api-doc-templates.md +221 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/docstring-formats.md +296 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/SKILL.md +150 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/javascript-migrations.md +179 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/python-migrations.md +141 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +32 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
- package/.devcontainer/scripts/check-setup.sh +72 -0
- package/.devcontainer/scripts/setup-aliases.sh +43 -3
- package/.devcontainer/scripts/setup-auth.sh +74 -0
- package/.devcontainer/scripts/setup-config.sh +112 -22
- package/.devcontainer/scripts/setup-update-claude.sh +8 -0
- package/.devcontainer/scripts/setup.sh +46 -13
- package/README.md +23 -190
- package/package.json +1 -1
- package/setup.js +245 -71
- package/.devcontainer/features/claude-code/README.md +0 -498
- package/.devcontainer/features/claude-code/config/settings.json +0 -72
- package/.devcontainer/features/claude-code/config/system-prompt.md +0 -118
- package/.devcontainer/features/claude-code/config/world-building-sp.md +0 -1432
- package/.devcontainer/features/claude-code/devcontainer-feature.json +0 -42
- package/.devcontainer/features/claude-code/install.sh +0 -466
- package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/.claude-plugin/plugin.json +0 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/config/planning-instructions.md +0 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/functional-conjuring-map.md +0 -989
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/hooks/hooks.json +0 -33
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/__pycache__/post-enhance-task.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhance-planning.py +0 -71
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-plan.sh +0 -68
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-task.sh +0 -120
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-plan.py +0 -133
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-task.py +0 -253
- /package/.devcontainer/config/{keybindings.json → defaults/keybindings.json} +0 -0
- /package/.devcontainer/config/{settings.json → defaults/settings.json} +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
Common issues and solutions for the CodeForge devcontainer.
|
|
4
|
+
|
|
5
|
+
## Container Build Failures
|
|
6
|
+
|
|
7
|
+
**Problem**: Container fails to build during feature installation.
|
|
8
|
+
|
|
9
|
+
- Check Docker has sufficient memory (4GB+ recommended). CodeForge sets `--memory=4g` by default.
|
|
10
|
+
- If a specific feature fails, disable it temporarily by setting `"version": "none"` in `devcontainer.json`.
|
|
11
|
+
- Check internet connectivity — most features download binaries from GitHub releases.
|
|
12
|
+
- If hitting GitHub API rate limits during build, set `GH_TOKEN` or `GITHUB_TOKEN` as an environment variable.
|
|
13
|
+
|
|
14
|
+
**Problem**: Build is slow or hangs.
|
|
15
|
+
|
|
16
|
+
- The mcp-qdrant feature downloads an embedding model (~90MB). This is normal on first build.
|
|
17
|
+
- The mcp-reasoner feature clones and builds a Node.js project. This takes 1-2 minutes.
|
|
18
|
+
- Use `"version": "none"` to skip optional features you don't need.
|
|
19
|
+
|
|
20
|
+
## Authentication Issues
|
|
21
|
+
|
|
22
|
+
**Problem**: `claude` command fails with authentication error.
|
|
23
|
+
|
|
24
|
+
- Run `claude` once interactively to complete authentication.
|
|
25
|
+
- If using API key auth, verify `ANTHROPIC_API_KEY` is set correctly.
|
|
26
|
+
- Background update may be in progress — wait 10 seconds and retry.
|
|
27
|
+
|
|
28
|
+
**Problem**: `gh` CLI not authenticated.
|
|
29
|
+
|
|
30
|
+
- Run `gh auth status` to check current state.
|
|
31
|
+
- Run `gh auth login` for interactive setup.
|
|
32
|
+
- Or configure `.devcontainer/.secrets` with `GH_TOKEN` for automatic auth on container start.
|
|
33
|
+
- Credentials persist in `/workspaces/.gh/` across rebuilds.
|
|
34
|
+
|
|
35
|
+
**Problem**: Git push fails with permission error.
|
|
36
|
+
|
|
37
|
+
- Run `gh auth status` to verify authentication.
|
|
38
|
+
- Check git remote URL: `git remote -v`. HTTPS remotes require `gh` auth; SSH remotes require SSH keys.
|
|
39
|
+
- Verify `git config --global user.name` and `user.email` are set.
|
|
40
|
+
|
|
41
|
+
**Problem**: NPM publish/install fails with 401.
|
|
42
|
+
|
|
43
|
+
- Set `NPM_TOKEN` in `.devcontainer/.secrets` or as environment variable.
|
|
44
|
+
- Verify token: `npm whoami`.
|
|
45
|
+
|
|
46
|
+
## Feature Installation Failures
|
|
47
|
+
|
|
48
|
+
**Problem**: Feature checksum verification fails.
|
|
49
|
+
|
|
50
|
+
- This usually means a corrupted download. Rebuild the container to retry.
|
|
51
|
+
- If persistent, the release may have been re-tagged. Try pinning a specific version in `devcontainer.json`.
|
|
52
|
+
|
|
53
|
+
**Problem**: Feature download fails after retries.
|
|
54
|
+
|
|
55
|
+
- Check internet connectivity.
|
|
56
|
+
- GitHub may be experiencing issues — check [githubstatus.com](https://www.githubstatus.com/).
|
|
57
|
+
- Set `GH_TOKEN` environment variable to avoid rate limiting.
|
|
58
|
+
|
|
59
|
+
**Problem**: Permission denied during feature install.
|
|
60
|
+
|
|
61
|
+
- Features run as root during build. This shouldn't happen in normal use.
|
|
62
|
+
- If modifying features, ensure `install.sh` has `chmod +x` and starts with `#!/bin/bash`.
|
|
63
|
+
|
|
64
|
+
## Plugin Issues
|
|
65
|
+
|
|
66
|
+
**Problem**: Plugin not loading or not appearing in Claude Code.
|
|
67
|
+
|
|
68
|
+
- Check `enabledPlugins` in `config/defaults/settings.json` — the plugin must be listed there.
|
|
69
|
+
- Verify the plugin directory exists under `plugins/devs-marketplace/plugins/`.
|
|
70
|
+
- Run `check-setup` to verify core configuration is correct.
|
|
71
|
+
- Check plugin blacklist: ensure it's not in `PLUGIN_BLACKLIST` in `.env`.
|
|
72
|
+
|
|
73
|
+
**Problem**: Auto-formatter or auto-linter not running.
|
|
74
|
+
|
|
75
|
+
- These run on the Stop hook — they only trigger when Claude Code stops (end of conversation turn).
|
|
76
|
+
- Verify the underlying tools are installed: `cc-tools` lists all available tools.
|
|
77
|
+
- Check the 30-second timeout hasn't been exceeded (large file sets may hit this).
|
|
78
|
+
|
|
79
|
+
## Agent Teams / tmux Issues
|
|
80
|
+
|
|
81
|
+
**Problem**: Split panes not working.
|
|
82
|
+
|
|
83
|
+
- Agent Teams requires tmux. Use the **"Claude Teams (tmux)"** terminal profile in VS Code.
|
|
84
|
+
- Verify tmux is installed: `tmux -V`.
|
|
85
|
+
- If using an external terminal, connect via `connect-external-terminal.sh`.
|
|
86
|
+
|
|
87
|
+
**Problem**: tmux Unicode/emoji rendering broken.
|
|
88
|
+
|
|
89
|
+
- Ensure locale is set: `echo $LANG` should show `en_US.UTF-8`.
|
|
90
|
+
- If not, run `source ~/.bashrc` or open a new terminal.
|
|
91
|
+
|
|
92
|
+
## "Command Not Found" Errors
|
|
93
|
+
|
|
94
|
+
**Problem**: `cc: command not found` or similar.
|
|
95
|
+
|
|
96
|
+
- Run `source ~/.bashrc` (or `~/.zshrc`) to reload aliases.
|
|
97
|
+
- Or open a new terminal.
|
|
98
|
+
- Verify setup ran: check for `# Claude Code environment and aliases` in your rc file.
|
|
99
|
+
|
|
100
|
+
**Problem**: Tool not found (e.g., `ruff`, `dprint`).
|
|
101
|
+
|
|
102
|
+
- Run `cc-tools` to see which tools are installed.
|
|
103
|
+
- Check if the feature was disabled with `"version": "none"` in `devcontainer.json`.
|
|
104
|
+
- Some tools (like `ruff`) install to `~/.local/bin` — ensure it's in your PATH.
|
|
105
|
+
|
|
106
|
+
## Performance Issues
|
|
107
|
+
|
|
108
|
+
**Problem**: Container is slow or running out of memory.
|
|
109
|
+
|
|
110
|
+
- CodeForge defaults to 4GB RAM / 8GB swap. Increase in `devcontainer.json` `runArgs`.
|
|
111
|
+
- Disable features you don't need with `"version": "none"`.
|
|
112
|
+
- The background Claude Code update runs once on startup — it's not persistent.
|
|
113
|
+
|
|
114
|
+
**Problem**: Slow startup.
|
|
115
|
+
|
|
116
|
+
- First start is slower due to `postStartCommand` running all setup scripts.
|
|
117
|
+
- Subsequent starts skip unchanged config files (sha256 comparison).
|
|
118
|
+
- Disable steps you don't need via `.env` (e.g., `SETUP_PROJECTS=false`).
|
|
119
|
+
|
|
120
|
+
## How to Reset to Defaults
|
|
121
|
+
|
|
122
|
+
1. **Reset config files**: Delete `/workspaces/.claude/` and restart the container. `setup-config.sh` will recopy all files from `config/defaults/`.
|
|
123
|
+
|
|
124
|
+
2. **Reset aliases**: Delete the `# Claude Code environment and aliases` block from `~/.bashrc` and `~/.zshrc`, then run `bash /workspaces/.devcontainer/scripts/setup-aliases.sh`.
|
|
125
|
+
|
|
126
|
+
3. **Full reset**: Rebuild the container from scratch (VS Code: "Dev Containers: Rebuild Container").
|
|
127
|
+
|
|
128
|
+
4. **Reset a single feature**: Set it to `"version": "none"`, rebuild, then set it back to the desired version and rebuild again.
|
|
@@ -4,6 +4,12 @@ set -euo pipefail
|
|
|
4
4
|
VERSION="${VERSION:-latest}"
|
|
5
5
|
USERNAME="${USERNAME:-automatic}"
|
|
6
6
|
|
|
7
|
+
# Skip installation if version is "none"
|
|
8
|
+
if [ "${VERSION}" = "none" ]; then
|
|
9
|
+
echo "[agent-browser] Skipping installation (version=none)"
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
7
13
|
# Set headless as default for containers (bundled Chromium, no display needed)
|
|
8
14
|
export AGENT_BROWSER_HEADLESS=true
|
|
9
15
|
|
|
@@ -4,6 +4,12 @@ set -euo pipefail
|
|
|
4
4
|
VERSION="${VERSION:-latest}"
|
|
5
5
|
USERNAME="${USERNAME:-automatic}"
|
|
6
6
|
|
|
7
|
+
# Skip installation if version is "none"
|
|
8
|
+
if [ "${VERSION}" = "none" ]; then
|
|
9
|
+
echo "[ast-grep] Skipping installation (version=none)"
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
7
13
|
echo "[ast-grep] Starting installation..."
|
|
8
14
|
echo "[ast-grep] Version: ${VERSION}"
|
|
9
15
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Biome
|
|
2
|
+
|
|
3
|
+
Fast JavaScript/TypeScript/JSON/CSS formatter and linter.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Installs [Biome](https://biomejs.dev/) globally via npm. Biome is an all-in-one toolchain for web projects, replacing ESLint and Prettier for JS/TS/CSS/JSON formatting and linting.
|
|
8
|
+
|
|
9
|
+
## Options
|
|
10
|
+
|
|
11
|
+
| Option | Default | Description |
|
|
12
|
+
|--------|---------|-------------|
|
|
13
|
+
| `version` | `latest` | Biome version to install. Set `"none"` to skip. |
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
biome format --write src/
|
|
19
|
+
biome lint src/
|
|
20
|
+
biome check --write src/ # format + lint
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Configuration
|
|
24
|
+
|
|
25
|
+
Biome is used by the `auto-formatter` and `auto-linter` plugins for JS/TS/CSS/JSON/GraphQL/HTML files. No additional configuration required for basic usage.
|
|
26
|
+
|
|
27
|
+
For project-specific config, create a `biome.json` in your project root. See [Biome docs](https://biomejs.dev/reference/configuration/).
|
|
@@ -3,6 +3,12 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
VERSION="${VERSION:-latest}"
|
|
5
5
|
|
|
6
|
+
# Skip installation if version is "none"
|
|
7
|
+
if [ "${VERSION}" = "none" ]; then
|
|
8
|
+
echo "[biome] Skipping installation (version=none)"
|
|
9
|
+
exit 0
|
|
10
|
+
fi
|
|
11
|
+
|
|
6
12
|
echo "[biome] Starting installation..."
|
|
7
13
|
echo "[biome] Version: ${VERSION}"
|
|
8
14
|
|
|
@@ -13,6 +13,12 @@ CCBURN_VERSION="${VERSION:-latest}"
|
|
|
13
13
|
SHELLS="${SHELLS:-both}"
|
|
14
14
|
USERNAME="${USERNAME:-automatic}"
|
|
15
15
|
|
|
16
|
+
# Skip installation if version is "none"
|
|
17
|
+
if [ "${CCBURN_VERSION}" = "none" ]; then
|
|
18
|
+
echo "[ccburn] Skipping installation (version=none)"
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
16
22
|
echo "[ccburn] Starting ccburn installation..."
|
|
17
23
|
|
|
18
24
|
# === SOURCE NVM ===
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"maintainer": "AnExiledDev",
|
|
7
7
|
"documentationURL": "https://github.com/sirmalloc/ccstatusline",
|
|
8
8
|
"options": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Version to install (or 'none' to skip installation)",
|
|
12
|
+
"default": "latest"
|
|
13
|
+
},
|
|
9
14
|
"username": {
|
|
10
15
|
"type": "string",
|
|
11
16
|
"description": "Container user to install for",
|
|
@@ -9,8 +9,15 @@ trap cleanup EXIT
|
|
|
9
9
|
|
|
10
10
|
# Import options from devcontainer-feature.json
|
|
11
11
|
# NOTE: DevContainer converts camelCase options to UPPERCASE without underscores
|
|
12
|
+
VERSION="${VERSION:-latest}"
|
|
12
13
|
USERNAME="${USERNAME:-automatic}"
|
|
13
14
|
|
|
15
|
+
# Skip installation if version is "none"
|
|
16
|
+
if [ "${VERSION}" = "none" ]; then
|
|
17
|
+
echo "[ccstatusline] Skipping installation (version=none)"
|
|
18
|
+
exit 0
|
|
19
|
+
fi
|
|
20
|
+
|
|
14
21
|
echo "[ccstatusline] Starting installation..."
|
|
15
22
|
|
|
16
23
|
# Source NVM (Node is installed via NVM by the node feature)
|
|
@@ -15,6 +15,12 @@ CCUSAGE_VERSION="${VERSION:-latest}"
|
|
|
15
15
|
SHELLS="${SHELLS:-both}"
|
|
16
16
|
USERNAME="${USERNAME:-automatic}"
|
|
17
17
|
|
|
18
|
+
# Skip installation if version is "none"
|
|
19
|
+
if [ "${CCUSAGE_VERSION}" = "none" ]; then
|
|
20
|
+
echo "[ccusage] Skipping installation (version=none)"
|
|
21
|
+
exit 0
|
|
22
|
+
fi
|
|
23
|
+
|
|
18
24
|
echo "[ccusage] Starting ccusage installation..."
|
|
19
25
|
|
|
20
26
|
# === SOURCE NVM ===
|
|
@@ -10,6 +10,12 @@ MONITOR_VERSION="${VERSION:-latest}"
|
|
|
10
10
|
INSTALLER="${INSTALLER:-uv}"
|
|
11
11
|
USERNAME="${USERNAME:-automatic}"
|
|
12
12
|
|
|
13
|
+
# Skip installation if version is "none"
|
|
14
|
+
if [ "${MONITOR_VERSION}" = "none" ]; then
|
|
15
|
+
echo "[claude-monitor] Skipping installation (version=none)"
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
13
19
|
echo "[claude-monitor] Starting installation..."
|
|
14
20
|
|
|
15
21
|
# ---------- USER ----------
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# dprint
|
|
2
|
+
|
|
3
|
+
Pluggable code formatter for Markdown, YAML, TOML, and Dockerfile.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Installs [dprint](https://dprint.dev/) with a global config covering Markdown, YAML, TOML, and Dockerfile formatting. Used by the `auto-formatter` plugin for these file types.
|
|
8
|
+
|
|
9
|
+
## Options
|
|
10
|
+
|
|
11
|
+
| Option | Default | Description |
|
|
12
|
+
|--------|---------|-------------|
|
|
13
|
+
| `version` | `0.51.1` | dprint version to install. Set `"latest"` for newest, `"none"` to skip. |
|
|
14
|
+
| `username` | `automatic` | Container user to install for. |
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
dprint fmt # format files in current directory
|
|
20
|
+
dprint fmt --config /usr/local/share/dprint/dprint.json # use global config
|
|
21
|
+
dprint check # check without modifying
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
A global config is installed at `/usr/local/share/dprint/dprint.json` with plugins for Markdown, YAML, TOML, and Dockerfile. For project-specific config, create a `dprint.json` in your project root.
|
|
27
|
+
|
|
28
|
+
## Checksum Verification
|
|
29
|
+
|
|
30
|
+
Downloads are verified against SHA256 checksums published with each GitHub release. If checksums can't be fetched, installation proceeds with a warning.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "dprint",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"name": "dprint",
|
|
5
|
+
"description": "Pluggable code formatter for Markdown, YAML, TOML, and Dockerfile",
|
|
6
|
+
"options": {
|
|
7
|
+
"version": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"default": "0.51.1",
|
|
10
|
+
"description": "dprint version to install. Set 'latest' to always get newest."
|
|
11
|
+
},
|
|
12
|
+
"username": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"default": "automatic",
|
|
15
|
+
"description": "Container user to install for"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# ==============================
|
|
5
|
+
# dprint DevContainer Feature
|
|
6
|
+
# Official installer + global config
|
|
7
|
+
# ==============================
|
|
8
|
+
|
|
9
|
+
DPRINT_VERSION="${VERSION:-latest}"
|
|
10
|
+
USERNAME="${USERNAME:-automatic}"
|
|
11
|
+
|
|
12
|
+
# Skip installation if version is "none"
|
|
13
|
+
if [ "${DPRINT_VERSION}" = "none" ]; then
|
|
14
|
+
echo "[dprint] Skipping installation (version=none)"
|
|
15
|
+
exit 0
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
echo "[dprint] Starting installation..."
|
|
19
|
+
|
|
20
|
+
# ---------- USER ----------
|
|
21
|
+
if [[ "${USERNAME}" == "auto" || "${USERNAME}" == "automatic" ]]; then
|
|
22
|
+
for u in vscode node codespace; do
|
|
23
|
+
if id -u "$u" >/dev/null 2>&1; then
|
|
24
|
+
USERNAME="$u"
|
|
25
|
+
break
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
USERNAME="${USERNAME:-root}"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
USER_HOME="$(eval echo "~${USERNAME}")"
|
|
32
|
+
|
|
33
|
+
echo "[dprint] Target user: ${USERNAME}"
|
|
34
|
+
echo "[dprint] Version: ${DPRINT_VERSION}"
|
|
35
|
+
|
|
36
|
+
# ---------- HELPERS ----------
|
|
37
|
+
download_with_retry() {
|
|
38
|
+
local url="$1" dest="$2" retries="${3:-3}" delay="${4:-2}"
|
|
39
|
+
local attempt=1
|
|
40
|
+
while [ $attempt -le $retries ]; do
|
|
41
|
+
if curl -fsSL ${GITHUB_AUTH_HEADER:-} "$url" -o "$dest" 2>/dev/null; then
|
|
42
|
+
return 0
|
|
43
|
+
fi
|
|
44
|
+
echo "[dprint] Download attempt $attempt/$retries failed, retrying in ${delay}s..."
|
|
45
|
+
sleep "$delay"
|
|
46
|
+
attempt=$((attempt + 1))
|
|
47
|
+
delay=$((delay * 2))
|
|
48
|
+
done
|
|
49
|
+
echo "[dprint] ERROR: Download failed after $retries attempts: $url"
|
|
50
|
+
return 1
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
# GitHub API auth header (avoids rate limiting)
|
|
54
|
+
GITHUB_AUTH_HEADER=""
|
|
55
|
+
if [ -n "${GH_TOKEN:-}" ] || [ -n "${GITHUB_TOKEN:-}" ]; then
|
|
56
|
+
GITHUB_AUTH_HEADER="-H Authorization: token ${GH_TOKEN:-$GITHUB_TOKEN}"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# ---------- INSTALL ----------
|
|
60
|
+
# Install to a system-wide location so all users can access it
|
|
61
|
+
export DPRINT_INSTALL="/usr/local/share/dprint"
|
|
62
|
+
mkdir -p "${DPRINT_INSTALL}/bin"
|
|
63
|
+
|
|
64
|
+
ARCH="$(dpkg --print-architecture)"
|
|
65
|
+
case "${ARCH}" in
|
|
66
|
+
amd64) TARGET="x86_64-unknown-linux-gnu" ;;
|
|
67
|
+
arm64) TARGET="aarch64-unknown-linux-gnu" ;;
|
|
68
|
+
*)
|
|
69
|
+
echo "[dprint] ERROR: Unsupported architecture: ${ARCH}" >&2
|
|
70
|
+
exit 1
|
|
71
|
+
;;
|
|
72
|
+
esac
|
|
73
|
+
|
|
74
|
+
# Version pinned for reproducible builds. Set "latest" to always get newest.
|
|
75
|
+
if [[ "${DPRINT_VERSION}" == "latest" ]]; then
|
|
76
|
+
DPRINT_VERSION="$(curl -fsSL ${GITHUB_AUTH_HEADER:-} https://api.github.com/repos/dprint/dprint/releases/latest | grep -o '"tag_name": *"[^"]*"' | head -1 | cut -d'"' -f4)"
|
|
77
|
+
echo "[dprint] Resolved latest version: ${DPRINT_VERSION}"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
ZIP_URL="https://github.com/dprint/dprint/releases/download/${DPRINT_VERSION}/dprint-${TARGET}.zip"
|
|
81
|
+
echo "[dprint] Downloading from: ${ZIP_URL}"
|
|
82
|
+
|
|
83
|
+
TMP_DIR="$(mktemp -d)"
|
|
84
|
+
download_with_retry "${ZIP_URL}" "${TMP_DIR}/dprint.zip"
|
|
85
|
+
|
|
86
|
+
# ---------- CHECKSUM VERIFICATION ----------
|
|
87
|
+
CHECKSUM_URL="https://github.com/dprint/dprint/releases/download/${DPRINT_VERSION}/SHASUMS256.txt"
|
|
88
|
+
if curl -fsSL "${CHECKSUM_URL}" -o "${TMP_DIR}/checksums.txt" 2>/dev/null; then
|
|
89
|
+
EXPECTED=$(grep "dprint-${TARGET}.zip" "${TMP_DIR}/checksums.txt" | awk '{print $1}')
|
|
90
|
+
ACTUAL=$(sha256sum "${TMP_DIR}/dprint.zip" | cut -d' ' -f1)
|
|
91
|
+
if [ -n "$EXPECTED" ] && [ "$ACTUAL" != "$EXPECTED" ]; then
|
|
92
|
+
echo "[dprint] ERROR: Checksum verification failed"
|
|
93
|
+
echo " Expected: $EXPECTED"
|
|
94
|
+
echo " Actual: $ACTUAL"
|
|
95
|
+
rm -rf "${TMP_DIR}"
|
|
96
|
+
exit 1
|
|
97
|
+
fi
|
|
98
|
+
echo "[dprint] Checksum verified"
|
|
99
|
+
else
|
|
100
|
+
echo "[dprint] WARNING: Could not fetch checksums, skipping verification"
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
unzip -o "${TMP_DIR}/dprint.zip" -d "${DPRINT_INSTALL}/bin"
|
|
104
|
+
chmod +x "${DPRINT_INSTALL}/bin/dprint"
|
|
105
|
+
rm -rf "${TMP_DIR}"
|
|
106
|
+
|
|
107
|
+
# Symlink into PATH
|
|
108
|
+
ln -sf "${DPRINT_INSTALL}/bin/dprint" /usr/local/bin/dprint
|
|
109
|
+
|
|
110
|
+
# ---------- GLOBAL CONFIG ----------
|
|
111
|
+
cat > "${DPRINT_INSTALL}/dprint.json" << 'DPRINT_CONFIG'
|
|
112
|
+
{
|
|
113
|
+
"lineWidth": 120,
|
|
114
|
+
"indentWidth": 2,
|
|
115
|
+
"markdown": {},
|
|
116
|
+
"yaml": {},
|
|
117
|
+
"toml": {},
|
|
118
|
+
"dockerfile": {},
|
|
119
|
+
"plugins": [
|
|
120
|
+
"https://plugins.dprint.dev/markdown-0.17.8.wasm",
|
|
121
|
+
"https://plugins.dprint.dev/g-plane/pretty_yaml-0.5.0.wasm",
|
|
122
|
+
"https://plugins.dprint.dev/toml-0.6.4.wasm",
|
|
123
|
+
"https://plugins.dprint.dev/dockerfile-0.3.2.wasm"
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
DPRINT_CONFIG
|
|
127
|
+
|
|
128
|
+
echo "[dprint] Global config written to ${DPRINT_INSTALL}/dprint.json"
|
|
129
|
+
|
|
130
|
+
# ---------- VERIFY ----------
|
|
131
|
+
echo "[dprint] Installed: $(dprint --version 2>/dev/null || echo 'unknown')"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# hadolint
|
|
2
|
+
|
|
3
|
+
Dockerfile linter that validates best practices.
|
|
4
|
+
|
|
5
|
+
## What It Does
|
|
6
|
+
|
|
7
|
+
Installs [hadolint](https://github.com/hadolint/hadolint) as a static binary. Hadolint parses Dockerfiles and checks them against best-practice rules based on the official Docker documentation.
|
|
8
|
+
|
|
9
|
+
## Options
|
|
10
|
+
|
|
11
|
+
| Option | Default | Description |
|
|
12
|
+
|--------|---------|-------------|
|
|
13
|
+
| `version` | `v2.14.0` | hadolint version to install. Set `"latest"` for newest, `"none"` to skip. |
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
hadolint Dockerfile
|
|
19
|
+
hadolint --ignore DL3008 Dockerfile # ignore specific rule
|
|
20
|
+
hadolint -f json Dockerfile # JSON output
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Configuration
|
|
24
|
+
|
|
25
|
+
Used by the `auto-linter` plugin to lint Dockerfiles on save. For project-specific ignores, create a `.hadolint.yaml` in your project root:
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
ignored:
|
|
29
|
+
- DL3008 # Pin versions in apt-get install
|
|
30
|
+
- DL3009 # Delete apt lists
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Checksum Verification
|
|
34
|
+
|
|
35
|
+
Downloads are verified against per-binary `.sha256` files published with each GitHub release.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "hadolint",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"name": "hadolint",
|
|
5
|
+
"description": "Dockerfile linter that validates best practices",
|
|
6
|
+
"options": {
|
|
7
|
+
"version": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"default": "v2.14.0",
|
|
10
|
+
"description": "hadolint version to install. Set 'latest' to always get newest."
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# ==============================
|
|
5
|
+
# hadolint DevContainer Feature
|
|
6
|
+
# Direct binary from GitHub releases
|
|
7
|
+
# ==============================
|
|
8
|
+
|
|
9
|
+
HADOLINT_VERSION="${VERSION:-latest}"
|
|
10
|
+
|
|
11
|
+
# Skip installation if version is "none"
|
|
12
|
+
if [ "${HADOLINT_VERSION}" = "none" ]; then
|
|
13
|
+
echo "[hadolint] Skipping installation (version=none)"
|
|
14
|
+
exit 0
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
echo "[hadolint] Starting installation..."
|
|
18
|
+
|
|
19
|
+
# ---------- HELPERS ----------
|
|
20
|
+
download_with_retry() {
|
|
21
|
+
local url="$1" dest="$2" retries="${3:-3}" delay="${4:-2}"
|
|
22
|
+
local attempt=1
|
|
23
|
+
while [ $attempt -le $retries ]; do
|
|
24
|
+
if curl -fsSL ${GITHUB_AUTH_HEADER:-} "$url" -o "$dest" 2>/dev/null; then
|
|
25
|
+
return 0
|
|
26
|
+
fi
|
|
27
|
+
echo "[hadolint] Download attempt $attempt/$retries failed, retrying in ${delay}s..."
|
|
28
|
+
sleep "$delay"
|
|
29
|
+
attempt=$((attempt + 1))
|
|
30
|
+
delay=$((delay * 2))
|
|
31
|
+
done
|
|
32
|
+
echo "[hadolint] ERROR: Download failed after $retries attempts: $url"
|
|
33
|
+
return 1
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# GitHub API auth header (avoids rate limiting)
|
|
37
|
+
GITHUB_AUTH_HEADER=""
|
|
38
|
+
if [ -n "${GH_TOKEN:-}" ] || [ -n "${GITHUB_TOKEN:-}" ]; then
|
|
39
|
+
GITHUB_AUTH_HEADER="-H Authorization: token ${GH_TOKEN:-$GITHUB_TOKEN}"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
ARCH="$(dpkg --print-architecture)"
|
|
43
|
+
case "${ARCH}" in
|
|
44
|
+
amd64) BINARY_ARCH="x86_64" ;;
|
|
45
|
+
arm64) BINARY_ARCH="arm64" ;;
|
|
46
|
+
*)
|
|
47
|
+
echo "[hadolint] ERROR: Unsupported architecture: ${ARCH}" >&2
|
|
48
|
+
exit 1
|
|
49
|
+
;;
|
|
50
|
+
esac
|
|
51
|
+
|
|
52
|
+
# Version pinned for reproducible builds. Set "latest" to always get newest.
|
|
53
|
+
if [[ "${HADOLINT_VERSION}" == "latest" ]]; then
|
|
54
|
+
HADOLINT_VERSION="$(curl -fsSL ${GITHUB_AUTH_HEADER:-} https://api.github.com/repos/hadolint/hadolint/releases/latest | grep -o '"tag_name": *"[^"]*"' | head -1 | cut -d'"' -f4)"
|
|
55
|
+
echo "[hadolint] Resolved latest version: ${HADOLINT_VERSION}"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
URL="https://github.com/hadolint/hadolint/releases/download/${HADOLINT_VERSION}/hadolint-Linux-${BINARY_ARCH}"
|
|
59
|
+
echo "[hadolint] Downloading from: ${URL}"
|
|
60
|
+
|
|
61
|
+
TMP_DIR="$(mktemp -d)"
|
|
62
|
+
download_with_retry "${URL}" "${TMP_DIR}/hadolint"
|
|
63
|
+
|
|
64
|
+
# ---------- CHECKSUM VERIFICATION ----------
|
|
65
|
+
# hadolint publishes per-binary .sha256 files
|
|
66
|
+
CHECKSUM_URL="${URL}.sha256"
|
|
67
|
+
if curl -fsSL "${CHECKSUM_URL}" -o "${TMP_DIR}/checksum.sha256" 2>/dev/null; then
|
|
68
|
+
EXPECTED=$(awk '{print $1}' "${TMP_DIR}/checksum.sha256")
|
|
69
|
+
ACTUAL=$(sha256sum "${TMP_DIR}/hadolint" | cut -d' ' -f1)
|
|
70
|
+
if [ -n "$EXPECTED" ] && [ "$ACTUAL" != "$EXPECTED" ]; then
|
|
71
|
+
echo "[hadolint] ERROR: Checksum verification failed"
|
|
72
|
+
echo " Expected: $EXPECTED"
|
|
73
|
+
echo " Actual: $ACTUAL"
|
|
74
|
+
rm -rf "${TMP_DIR}"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
77
|
+
echo "[hadolint] Checksum verified"
|
|
78
|
+
else
|
|
79
|
+
echo "[hadolint] WARNING: Could not fetch checksum, skipping verification"
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
cp "${TMP_DIR}/hadolint" /usr/local/bin/hadolint
|
|
83
|
+
chmod +x /usr/local/bin/hadolint
|
|
84
|
+
rm -rf "${TMP_DIR}"
|
|
85
|
+
|
|
86
|
+
echo "[hadolint] Installed: $(hadolint --version 2>/dev/null || echo 'unknown')"
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"maintainer": "AnExiledDev",
|
|
7
7
|
"documentationURL": "https://code.claude.com/docs/en/discover-plugins#code-intelligence",
|
|
8
8
|
"options": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Set to 'none' to skip installation of all LSP servers",
|
|
12
|
+
"default": "latest"
|
|
13
|
+
},
|
|
9
14
|
"pyrightVersion": {
|
|
10
15
|
"type": "string",
|
|
11
16
|
"description": "Pyright npm package version (e.g., 'latest', '1.1.350')",
|
|
@@ -4,12 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
7
|
+
VERSION="${VERSION:-latest}"
|
|
7
8
|
PYRIGHT_VERSION="${PYRIGHTVERSION:-latest}"
|
|
8
9
|
TSLSP_VERSION="${TYPESCRIPTLSPVERSION:-latest}"
|
|
9
10
|
TS_VERSION="${TYPESCRIPTVERSION:-latest}"
|
|
10
11
|
GOPLS_VERSION="${GOPLSVERSION:-latest}"
|
|
11
12
|
USERNAME="${USERNAME:-automatic}"
|
|
12
13
|
|
|
14
|
+
# Skip installation if version is "none"
|
|
15
|
+
if [ "${VERSION}" = "none" ]; then
|
|
16
|
+
echo "[lsp-servers] Skipping installation (version=none)"
|
|
17
|
+
exit 0
|
|
18
|
+
fi
|
|
19
|
+
|
|
13
20
|
echo "[lsp-servers] Starting installation..."
|
|
14
21
|
echo "[lsp-servers] Pyright version: ${PYRIGHT_VERSION}"
|
|
15
22
|
echo "[lsp-servers] TypeScript LSP version: ${TSLSP_VERSION}"
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"maintainer": "AnExiledDev",
|
|
7
7
|
"documentationURL": "https://github.com/qdrant/mcp-server-qdrant",
|
|
8
8
|
"options": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Version to install (or 'none' to skip installation)",
|
|
12
|
+
"default": "latest"
|
|
13
|
+
},
|
|
9
14
|
"qdrantUrl": {
|
|
10
15
|
"type": "string",
|
|
11
16
|
"description": "Qdrant instance URL (e.g., https://xyz.cloud.qdrant.io:6333). Leave empty for local instance.",
|