@gesslar/lpc-mcp 0.1.4 → 1.0.3
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/.github/workflows/Quality.yaml +192 -0
- package/.github/workflows/Release.yaml +214 -0
- package/README.md +2 -2
- package/eslint.config.js +8 -164
- package/package.json +28 -19
- package/src/index.js +0 -0
- package/test.txt +3 -0
- package/.github/workflows/ci.yml +0 -33
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
name: CodeQL, Linting, Testing
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "20 14 * * 1"
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
ConfigureWorkflow:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions: {}
|
|
16
|
+
outputs:
|
|
17
|
+
perform_testing: ${{ steps.cfg.outputs.perform_testing }}
|
|
18
|
+
perform_linting: ${{ steps.cfg.outputs.perform_linting }}
|
|
19
|
+
package_manager: ${{ steps.cfg.outputs.package_manager }}
|
|
20
|
+
pm_install_cmd: ${{ steps.cfg.outputs.pm_install_cmd }}
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Configure workflow
|
|
24
|
+
id: cfg
|
|
25
|
+
run: |+
|
|
26
|
+
### PACKAGE MANAGER #################################################
|
|
27
|
+
#
|
|
28
|
+
# Set the package manager to use: 'npm' or 'pnpm'
|
|
29
|
+
# This will configure the appropriate setup and commands throughout
|
|
30
|
+
# the workflow.
|
|
31
|
+
|
|
32
|
+
PACKAGE_MANAGER="pnpm"
|
|
33
|
+
echo "package_manager=${PACKAGE_MANAGER}" >> "$GITHUB_OUTPUT"
|
|
34
|
+
|
|
35
|
+
# Set package manager specific commands and versions
|
|
36
|
+
if [ "$PACKAGE_MANAGER" = "pnpm" ]; then
|
|
37
|
+
echo "pm_install_cmd=pnpm install --frozen-lockfile" >> "$GITHUB_OUTPUT"
|
|
38
|
+
else
|
|
39
|
+
echo "pm_install_cmd=npm ci" >> "$GITHUB_OUTPUT"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
### LINTING #########################################################
|
|
43
|
+
#
|
|
44
|
+
# If we need to perform linting, set the value to 'yes'. Any other
|
|
45
|
+
# value will skip linting.
|
|
46
|
+
|
|
47
|
+
echo "perform_linting=yes" >> "$GITHUB_OUTPUT"
|
|
48
|
+
|
|
49
|
+
### TESTING #########################################################
|
|
50
|
+
#
|
|
51
|
+
# If we need to perform testing, set the value to 'yes'. Any other
|
|
52
|
+
# value will skip testing.
|
|
53
|
+
|
|
54
|
+
echo "perform_testing=no" >> "$GITHUB_OUTPUT"
|
|
55
|
+
|
|
56
|
+
Lint:
|
|
57
|
+
needs: ConfigureWorkflow
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
|
|
60
|
+
permissions:
|
|
61
|
+
contents: read
|
|
62
|
+
|
|
63
|
+
strategy:
|
|
64
|
+
matrix:
|
|
65
|
+
node-version: [22.x]
|
|
66
|
+
|
|
67
|
+
steps:
|
|
68
|
+
- name: Check out repository
|
|
69
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_linting == 'yes' }}
|
|
70
|
+
uses: actions/checkout@v6
|
|
71
|
+
|
|
72
|
+
- name: Install pnpm
|
|
73
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_linting == 'yes' && needs.ConfigureWorkflow.outputs.package_manager == 'pnpm' }}
|
|
74
|
+
uses: pnpm/action-setup@v4
|
|
75
|
+
|
|
76
|
+
- name: Using Node v${{ matrix.node-version }}
|
|
77
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_linting == 'yes' }}
|
|
78
|
+
uses: actions/setup-node@v6
|
|
79
|
+
with:
|
|
80
|
+
node-version: ${{ matrix.node-version }}
|
|
81
|
+
cache: ${{ needs.ConfigureWorkflow.outputs.package_manager }}
|
|
82
|
+
|
|
83
|
+
- name: Install dependencies
|
|
84
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_linting == 'yes' }}
|
|
85
|
+
run: ${{ needs.ConfigureWorkflow.outputs.pm_install_cmd }}
|
|
86
|
+
|
|
87
|
+
- name: Perform lint check
|
|
88
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_linting == 'yes' }}
|
|
89
|
+
run: ${{ needs.ConfigureWorkflow.outputs.package_manager }} run lint
|
|
90
|
+
|
|
91
|
+
Test:
|
|
92
|
+
needs: ConfigureWorkflow
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
|
|
95
|
+
permissions:
|
|
96
|
+
contents: read
|
|
97
|
+
|
|
98
|
+
strategy:
|
|
99
|
+
matrix:
|
|
100
|
+
node-version: [22.x]
|
|
101
|
+
|
|
102
|
+
steps:
|
|
103
|
+
- name: Check out repository
|
|
104
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_testing == 'yes' }}
|
|
105
|
+
uses: actions/checkout@v6
|
|
106
|
+
|
|
107
|
+
- name: Install pnpm
|
|
108
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_testing == 'yes' && needs.ConfigureWorkflow.outputs.package_manager == 'pnpm' }}
|
|
109
|
+
uses: pnpm/action-setup@v4
|
|
110
|
+
|
|
111
|
+
- name: Using Node v${{ matrix.node-version }}
|
|
112
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_testing == 'yes' }}
|
|
113
|
+
uses: actions/setup-node@v6
|
|
114
|
+
with:
|
|
115
|
+
node-version: ${{ matrix.node-version }}
|
|
116
|
+
cache: ${{ needs.ConfigureWorkflow.outputs.package_manager }}
|
|
117
|
+
|
|
118
|
+
- name: Install dependencies
|
|
119
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_testing == 'yes' }}
|
|
120
|
+
run: ${{ needs.ConfigureWorkflow.outputs.pm_install_cmd }}
|
|
121
|
+
|
|
122
|
+
- name: Definitely don't cheat on tests
|
|
123
|
+
if: ${{ needs.ConfigureWorkflow.outputs.perform_testing == 'yes' }}
|
|
124
|
+
run: ${{ needs.ConfigureWorkflow.outputs.package_manager }} test
|
|
125
|
+
|
|
126
|
+
Analyze:
|
|
127
|
+
name: Analyze (${{ matrix.language }})
|
|
128
|
+
needs: ["Lint", "Test"]
|
|
129
|
+
runs-on: ubuntu-latest
|
|
130
|
+
permissions:
|
|
131
|
+
# required for all workflows
|
|
132
|
+
security-events: write
|
|
133
|
+
|
|
134
|
+
# required to fetch internal or private CodeQL packs
|
|
135
|
+
packages: read
|
|
136
|
+
|
|
137
|
+
# only required for workflows in private repositories
|
|
138
|
+
actions: read
|
|
139
|
+
contents: read
|
|
140
|
+
|
|
141
|
+
strategy:
|
|
142
|
+
fail-fast: false
|
|
143
|
+
matrix:
|
|
144
|
+
include:
|
|
145
|
+
- language: actions
|
|
146
|
+
build-mode: none
|
|
147
|
+
- language: javascript-typescript
|
|
148
|
+
build-mode: none
|
|
149
|
+
steps:
|
|
150
|
+
- name: Checkout repository
|
|
151
|
+
uses: actions/checkout@v4
|
|
152
|
+
|
|
153
|
+
# Add any setup steps before running the `github/codeql-action/init` action.
|
|
154
|
+
# This includes steps like installing compilers or runtimes (`actions/setup-node`
|
|
155
|
+
# or others). This is typically only required for manual builds.
|
|
156
|
+
# - name: Setup runtime (example)
|
|
157
|
+
# uses: actions/setup-example@v1
|
|
158
|
+
|
|
159
|
+
# Initializes the CodeQL tools for scanning.
|
|
160
|
+
- name: Initialize CodeQL
|
|
161
|
+
uses: github/codeql-action/init@v4
|
|
162
|
+
with:
|
|
163
|
+
languages: ${{ matrix.language }}
|
|
164
|
+
build-mode: ${{ matrix.build-mode }}
|
|
165
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
166
|
+
# By default, queries listed here will override any specified in a config file.
|
|
167
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
168
|
+
|
|
169
|
+
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-[...]
|
|
170
|
+
# queries: security-extended,security-and-quality
|
|
171
|
+
|
|
172
|
+
# If the analyze step fails for one of the languages you are analyzing with
|
|
173
|
+
# "We were unable to automatically build your code", modify the matrix above
|
|
174
|
+
# to set the build mode to "manual" for that language. Then modify this step
|
|
175
|
+
# to build your code.
|
|
176
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
|
177
|
+
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
178
|
+
- name: Run manual build steps
|
|
179
|
+
if: matrix.build-mode == 'manual'
|
|
180
|
+
shell: bash
|
|
181
|
+
run: |
|
|
182
|
+
echo 'If you are using a "manual" build mode for one or more of the' \
|
|
183
|
+
'languages you are analyzing, replace this with the commands to build' \
|
|
184
|
+
'your code, for example:'
|
|
185
|
+
echo ' make bootstrap'
|
|
186
|
+
echo ' make release'
|
|
187
|
+
exit 1
|
|
188
|
+
|
|
189
|
+
- name: Perform CodeQL Analysis
|
|
190
|
+
uses: github/codeql-action/analyze@v4
|
|
191
|
+
with:
|
|
192
|
+
category: "/language:${{matrix.language}}"
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
pull_request:
|
|
8
|
+
types:
|
|
9
|
+
- closed
|
|
10
|
+
branches:
|
|
11
|
+
- main
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
ConfigureWorkflow:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
outputs:
|
|
18
|
+
quality_check: ${{ steps.cfg.outputs.quality_check }}
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Configure workflow
|
|
22
|
+
id: cfg
|
|
23
|
+
run: |+
|
|
24
|
+
# If we need to wait for a workflow to have completed before
|
|
25
|
+
# we get here, name the workflow here so that it is checked
|
|
26
|
+
# against later. Or just leave empty, implicitly telling this
|
|
27
|
+
# workflow not to wait, just keep swimming.
|
|
28
|
+
|
|
29
|
+
echo "quality_check='CodeQL, Linting, Testing'" >> "$GITHUB_OUTPUT"
|
|
30
|
+
|
|
31
|
+
WaitForQuality:
|
|
32
|
+
needs: ConfigureWorkflow
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
if: ${{ github.event.pull_request.merged == true }}
|
|
35
|
+
|
|
36
|
+
steps:
|
|
37
|
+
- name: Wait for Quality workflow to complete
|
|
38
|
+
if: ${{ needs.ConfigureWorkflow.outputs.quality_check != '' }}
|
|
39
|
+
uses: lewagon/wait-on-check-action@v1.3.4
|
|
40
|
+
with:
|
|
41
|
+
ref: ${{ github.ref }}
|
|
42
|
+
running-workflow-name: ${{ needs.ConfigureWorkflow.outputs.quality_check }}
|
|
43
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
44
|
+
wait-interval: 10
|
|
45
|
+
|
|
46
|
+
- name: Skipping wait (no quality_check configured)
|
|
47
|
+
if: ${{ needs.ConfigureWorkflow.outputs.quality_check == '' }}
|
|
48
|
+
run: echo "No quality check configured; continuing."
|
|
49
|
+
|
|
50
|
+
DetermineVersion:
|
|
51
|
+
needs: WaitForQuality
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
if: ${{ github.event.pull_request.merged == true }}
|
|
54
|
+
|
|
55
|
+
outputs:
|
|
56
|
+
version: ${{ steps.version.outputs.VERSION }}
|
|
57
|
+
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@v4
|
|
60
|
+
with:
|
|
61
|
+
fetch-depth: 0
|
|
62
|
+
|
|
63
|
+
- name: Determine version
|
|
64
|
+
id: check_version
|
|
65
|
+
uses: gesslar/new-version-questionmark@v1.5.5
|
|
66
|
+
with:
|
|
67
|
+
source: package.json
|
|
68
|
+
version_pattern: "^v\\d+\\.\\d+\\.\\d+$"
|
|
69
|
+
|
|
70
|
+
- name: Show result
|
|
71
|
+
id: version
|
|
72
|
+
run: |+
|
|
73
|
+
UPDATED_VERSION="${{ steps.check_version.outputs.updated_version }}"
|
|
74
|
+
|
|
75
|
+
if [[ "$UPDATED_VERSION" == "no changes" ]]; then
|
|
76
|
+
echo "VERSION=🙅🏻♂️" >> "$GITHUB_OUTPUT"
|
|
77
|
+
else
|
|
78
|
+
echo "VERSION=${UPDATED_VERSION}" >> "$GITHUB_OUTPUT"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
CreateTag:
|
|
82
|
+
needs: DetermineVersion
|
|
83
|
+
if: ${{ needs.DetermineVersion.outputs.version != '🙅🏻♂️' }}
|
|
84
|
+
runs-on: ubuntu-latest
|
|
85
|
+
|
|
86
|
+
permissions:
|
|
87
|
+
contents: write
|
|
88
|
+
|
|
89
|
+
env:
|
|
90
|
+
GIT_USER_NAME: "github-actions"
|
|
91
|
+
GIT_USER_EMAIL: "github-actions@github.com"
|
|
92
|
+
|
|
93
|
+
outputs:
|
|
94
|
+
new_tag: ${{ steps.check_tag.outputs.new_tag }}
|
|
95
|
+
|
|
96
|
+
steps:
|
|
97
|
+
- name: Checkout code
|
|
98
|
+
uses: actions/checkout@v6
|
|
99
|
+
|
|
100
|
+
- name: Setup Git Variables
|
|
101
|
+
run: |+
|
|
102
|
+
echo "GIT_USER_NAME=${GIT_USER_NAME}" >> $GITHUB_ENV
|
|
103
|
+
echo "GIT_USER_EMAIL=${GIT_USER_EMAIL}" >> $GITHUB_ENV
|
|
104
|
+
git config user.name "${GIT_USER_NAME}"
|
|
105
|
+
git config user.email "${GIT_USER_EMAIL}"
|
|
106
|
+
|
|
107
|
+
- name: Set up Node.js
|
|
108
|
+
uses: actions/setup-node@v6
|
|
109
|
+
with:
|
|
110
|
+
node-version: "22"
|
|
111
|
+
|
|
112
|
+
- name: Install dependencies
|
|
113
|
+
run: npm install
|
|
114
|
+
|
|
115
|
+
- name: Read version from package.json
|
|
116
|
+
id: get_version
|
|
117
|
+
run: |
|
|
118
|
+
CURRENT_VERSION=${{ needs.DetermineVersion.outputs.version }}
|
|
119
|
+
|
|
120
|
+
- name: Fetch all tags
|
|
121
|
+
run: git fetch --tags
|
|
122
|
+
|
|
123
|
+
- name: Check for existing tag and create if it does not exist
|
|
124
|
+
id: check_tag
|
|
125
|
+
run: |+
|
|
126
|
+
CURRENT_VERSION="${{ needs.DetermineVersion.outputs.version }}"
|
|
127
|
+
TAG_EXISTS=$(git tag -l "v${CURRENT_VERSION}")
|
|
128
|
+
|
|
129
|
+
echo "Value of TAG_EXISTS: $TAG_EXISTS"
|
|
130
|
+
|
|
131
|
+
if [ -z "$TAG_EXISTS" ]; then
|
|
132
|
+
echo "Tag does not exist for version v${CURRENT_VERSION}. Creating tag."
|
|
133
|
+
git tag "v${CURRENT_VERSION}"
|
|
134
|
+
git push origin "v${CURRENT_VERSION}"
|
|
135
|
+
echo "new_tag=v${CURRENT_VERSION}" >> $GITHUB_OUTPUT
|
|
136
|
+
else
|
|
137
|
+
echo "Tag already exists for version v${CURRENT_VERSION}. Skipping tag creation."
|
|
138
|
+
echo "new_tag=🙅🏻♂️" >> $GITHUB_OUTPUT
|
|
139
|
+
exit 0
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
PrepareGitHubRelease:
|
|
143
|
+
needs: CreateTag
|
|
144
|
+
runs-on: ubuntu-latest
|
|
145
|
+
if: ${{ needs.CreateTag.outputs.new_tag != '🙅🏻♂️' }}
|
|
146
|
+
|
|
147
|
+
permissions:
|
|
148
|
+
contents: write
|
|
149
|
+
|
|
150
|
+
env:
|
|
151
|
+
NEW_TAG: ${{ needs.CreateTag.outputs.new_tag }}
|
|
152
|
+
GIT_USER_NAME: "github-actions"
|
|
153
|
+
GIT_USER_EMAIL: "github-actions@github.com"
|
|
154
|
+
|
|
155
|
+
steps:
|
|
156
|
+
- name: Setup New Tag
|
|
157
|
+
run: |
|
|
158
|
+
echo "NEW_TAG=${NEW_TAG}" >> $GITHUB_ENV
|
|
159
|
+
|
|
160
|
+
- name: Checkout code
|
|
161
|
+
uses: actions/checkout@v6
|
|
162
|
+
|
|
163
|
+
- name: Setup Git Variables
|
|
164
|
+
run: |
|
|
165
|
+
echo "GIT_USER_NAME=${GIT_USER_NAME}" >> $GITHUB_ENV
|
|
166
|
+
echo "GIT_USER_EMAIL=${GIT_USER_EMAIL}" >> $GITHUB_ENV
|
|
167
|
+
git config user.name "${GIT_USER_NAME}"
|
|
168
|
+
git config user.email "${GIT_USER_EMAIL}"
|
|
169
|
+
|
|
170
|
+
- name: Set up Node.js
|
|
171
|
+
uses: actions/setup-node@v6
|
|
172
|
+
with:
|
|
173
|
+
node-version: "22"
|
|
174
|
+
|
|
175
|
+
- name: Install dependencies
|
|
176
|
+
run: npm install
|
|
177
|
+
|
|
178
|
+
- name: Build artefact
|
|
179
|
+
run: |
|
|
180
|
+
ARTEFACT=$(npm pack 2>/dev/null | tail -1)
|
|
181
|
+
echo "ARTEFACT=${ARTEFACT}" >> $GITHUB_ENV
|
|
182
|
+
|
|
183
|
+
- name: Create Release
|
|
184
|
+
uses: ncipollo/release-action@v1
|
|
185
|
+
with:
|
|
186
|
+
tag: ${{ env.NEW_TAG }}
|
|
187
|
+
name: Release ${{ env.NEW_TAG }}
|
|
188
|
+
draft: false
|
|
189
|
+
prerelease: false
|
|
190
|
+
artifacts: ${{ env.ARTEFACT }}
|
|
191
|
+
generateReleaseNotes: true
|
|
192
|
+
|
|
193
|
+
PublishToNPM:
|
|
194
|
+
needs: DetermineVersion
|
|
195
|
+
if: ${{ github.event.pull_request.merged == true && needs.DetermineVersion.outputs.version != '🙅🏻♂️' }}
|
|
196
|
+
runs-on: ubuntu-latest
|
|
197
|
+
|
|
198
|
+
permissions:
|
|
199
|
+
contents: write
|
|
200
|
+
env:
|
|
201
|
+
TOKEN: ${{ secrets.NPM_GITHUB_CD_ACCESS_TOKEN }}
|
|
202
|
+
|
|
203
|
+
steps:
|
|
204
|
+
- name: Checkout code
|
|
205
|
+
uses: actions/checkout@v6
|
|
206
|
+
|
|
207
|
+
- name: Set up Node.js
|
|
208
|
+
uses: actions/setup-node@v6
|
|
209
|
+
with:
|
|
210
|
+
node-version: "22"
|
|
211
|
+
|
|
212
|
+
- name: Ship it
|
|
213
|
+
run: |
|
|
214
|
+
npm publish --access public --//registry.npmjs.org/:_authToken=${TOKEN}
|
package/README.md
CHANGED
|
@@ -30,10 +30,10 @@ All through conversation, powered by actual code intelligence instead of pattern
|
|
|
30
30
|
|
|
31
31
|
### 1. Install Node.js
|
|
32
32
|
|
|
33
|
-
Node.js
|
|
33
|
+
Node.js 20+ required:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
node --version # Should be
|
|
36
|
+
node --version # Should be v20.0.0 or higher
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
### 2. Install the LPC Language Server Extension
|
package/eslint.config.js
CHANGED
|
@@ -1,167 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import jsdoc from "eslint-plugin-jsdoc"
|
|
3
|
-
import stylistic from "@stylistic/eslint-plugin"
|
|
4
|
-
import globals from "globals"
|
|
1
|
+
import uglify from "@gesslar/uglier"
|
|
5
2
|
|
|
6
3
|
export default [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ecmaVersion: "latest",
|
|
15
|
-
sourceType: "module",
|
|
16
|
-
globals: {
|
|
17
|
-
...globals.node,
|
|
18
|
-
fetch: "readonly",
|
|
19
|
-
Headers: "readonly",
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
// Add override for webview files to include browser globals
|
|
24
|
-
{
|
|
25
|
-
name: "gesslar/uglier/webview-env",
|
|
26
|
-
files: ["src/webview/**/*.{js,mjs,cjs}"],
|
|
27
|
-
languageOptions: {
|
|
28
|
-
globals: {
|
|
29
|
-
...globals.browser,
|
|
30
|
-
acquireVsCodeApi: "readonly"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
// Add override for .cjs files to treat as CommonJS
|
|
35
|
-
{
|
|
36
|
-
name: "gesslar/uglier/cjs-override",
|
|
37
|
-
files: ["src/**/*.cjs"],
|
|
38
|
-
languageOptions: {
|
|
39
|
-
sourceType: "script",
|
|
40
|
-
ecmaVersion: 2021
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
// Add override for .mjs files to treat as ES modules
|
|
44
|
-
{
|
|
45
|
-
name: "gesslar/uglier/mjs-override",
|
|
46
|
-
files: ["src/**/*.mjs"],
|
|
47
|
-
languageOptions: {
|
|
48
|
-
sourceType: "module",
|
|
49
|
-
ecmaVersion: 2021
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: "gesslar/uglier/lints-js",
|
|
54
|
-
files: ["{work,src}/**/*.{mjs,cjs,js}"],
|
|
55
|
-
plugins: {
|
|
56
|
-
"@stylistic": stylistic,
|
|
57
|
-
},
|
|
58
|
-
rules: {
|
|
59
|
-
"@stylistic/arrow-parens": ["error", "as-needed"],
|
|
60
|
-
"@stylistic/arrow-spacing": ["error", { before: true, after: true }],
|
|
61
|
-
"@stylistic/brace-style": ["error", "1tbs", {allowSingleLine: false}],
|
|
62
|
-
"@stylistic/nonblock-statement-body-position": ["error", "below"],
|
|
63
|
-
"@stylistic/padding-line-between-statements": [
|
|
64
|
-
"error",
|
|
65
|
-
{blankLine: "always", prev: "if", next: "*"},
|
|
66
|
-
{blankLine: "always", prev: "*", next: "return"},
|
|
67
|
-
{blankLine: "always", prev: "while", next: "*"},
|
|
68
|
-
{blankLine: "always", prev: "for", next: "*"},
|
|
69
|
-
{blankLine: "always", prev: "switch", next: "*"},
|
|
70
|
-
{blankLine: "always", prev: "do", next: "*"},
|
|
71
|
-
// {blankLine: "always", prev: ["const", "let", "var"], next: "*"},
|
|
72
|
-
// {blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]},
|
|
73
|
-
{blankLine: "always", prev: "directive", next: "*" },
|
|
74
|
-
{blankLine: "any", prev: "directive", next: "directive" },
|
|
75
|
-
],
|
|
76
|
-
"@stylistic/eol-last": ["error", "always"],
|
|
77
|
-
"@stylistic/indent": ["error", 2, {
|
|
78
|
-
SwitchCase: 1 // Indents `case` statements one level deeper than `switch`
|
|
79
|
-
}],
|
|
80
|
-
"@stylistic/key-spacing": ["error", { beforeColon: false, afterColon: true }],
|
|
81
|
-
"@stylistic/keyword-spacing": ["error", {
|
|
82
|
-
before: false,
|
|
83
|
-
after: true,
|
|
84
|
-
overrides: {
|
|
85
|
-
// Control statements
|
|
86
|
-
return: { before: true, after: true },
|
|
87
|
-
if: { after: false },
|
|
88
|
-
else: { before: true, after: true },
|
|
89
|
-
for: { after: false },
|
|
90
|
-
while: { before: true, after: false },
|
|
91
|
-
do: { after: true },
|
|
92
|
-
switch: { after: false },
|
|
93
|
-
case: { before: true, after: true },
|
|
94
|
-
throw: { before: true, after: false } ,
|
|
95
|
-
|
|
96
|
-
// Keywords
|
|
97
|
-
as: { before: true, after: true },
|
|
98
|
-
of: { before: true, after: true },
|
|
99
|
-
from: { before: true, after: true },
|
|
100
|
-
async: { before: true, after: true },
|
|
101
|
-
await: { before: true, after: false },
|
|
102
|
-
class: { before: true, after: true },
|
|
103
|
-
const: { before: true, after: true },
|
|
104
|
-
let: { before: true, after: true },
|
|
105
|
-
var: { before: true, after: true },
|
|
106
|
-
|
|
107
|
-
// Exception handling
|
|
108
|
-
catch: { before: true, after: true },
|
|
109
|
-
finally: { before: true, after: true },
|
|
110
|
-
}
|
|
111
|
-
}],
|
|
112
|
-
// Blocks
|
|
113
|
-
"@stylistic/space-before-blocks": ["error", "always"],
|
|
114
|
-
"@stylistic/max-len": ["warn", {
|
|
115
|
-
code: 80,
|
|
116
|
-
ignoreComments: true,
|
|
117
|
-
ignoreUrls: true,
|
|
118
|
-
ignoreStrings: true,
|
|
119
|
-
ignoreTemplateLiterals: true,
|
|
120
|
-
ignoreRegExpLiterals: true,
|
|
121
|
-
tabWidth: 2
|
|
122
|
-
}],
|
|
123
|
-
"@stylistic/no-tabs": "error",
|
|
124
|
-
"@stylistic/no-trailing-spaces": ["error"],
|
|
125
|
-
"@stylistic/object-curly-spacing": ["error", "never", {
|
|
126
|
-
objectsInObjects: false,
|
|
127
|
-
arraysInObjects: false
|
|
128
|
-
}],
|
|
129
|
-
"@stylistic/quotes": ["error", "double", {
|
|
130
|
-
avoidEscape: true,
|
|
131
|
-
allowTemplateLiterals: "always"
|
|
132
|
-
}],
|
|
133
|
-
"@stylistic/semi": ["error", "never"],
|
|
134
|
-
"@stylistic/space-before-function-paren": ["error", "never"],
|
|
135
|
-
"@stylistic/yield-star-spacing": ["error", { before: true, after: false }],
|
|
136
|
-
"constructor-super": "error",
|
|
137
|
-
"no-unexpected-multiline": "error",
|
|
138
|
-
"no-unused-vars": ["error", {
|
|
139
|
-
caughtErrors: "all",
|
|
140
|
-
caughtErrorsIgnorePattern: "^_+",
|
|
141
|
-
argsIgnorePattern: "^_+",
|
|
142
|
-
destructuredArrayIgnorePattern: "^_+",
|
|
143
|
-
varsIgnorePattern: "^_+"
|
|
144
|
-
}],
|
|
145
|
-
"no-useless-assignment": "error",
|
|
146
|
-
"prefer-const": "error",
|
|
147
|
-
"@stylistic/no-multiple-empty-lines": ["error", { max: 1 }],
|
|
148
|
-
"@stylistic/array-bracket-spacing": ["error", "never"],
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
name: "gesslar/uglier/lints-jsdoc",
|
|
153
|
-
files: ["{work,src}/**/*.{mjs,cjs,js}"],
|
|
154
|
-
plugins: {
|
|
155
|
-
jsdoc,
|
|
156
|
-
},
|
|
157
|
-
rules: {
|
|
158
|
-
"jsdoc/require-description": "error",
|
|
159
|
-
"jsdoc/tag-lines": ["error", "any", {"startLines":1}],
|
|
160
|
-
"jsdoc/require-jsdoc": ["error", { publicOnly: true }],
|
|
161
|
-
"jsdoc/check-tag-names": "error",
|
|
162
|
-
"jsdoc/check-types": "error",
|
|
163
|
-
"jsdoc/require-param-type": "error",
|
|
164
|
-
"jsdoc/require-returns-type": "error"
|
|
165
|
-
}
|
|
166
|
-
}
|
|
4
|
+
...uglify({
|
|
5
|
+
with: [
|
|
6
|
+
"lints-js", // default files: ["**/*.{js,mjs,cjs}"]
|
|
7
|
+
"lints-jsdoc", // default files: ["**/*.{js,mjs,cjs}"]
|
|
8
|
+
"node", // default files: ["**/*.{js,mjs,cjs}"]
|
|
9
|
+
]
|
|
10
|
+
})
|
|
167
11
|
]
|
package/package.json
CHANGED
|
@@ -1,43 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gesslar/lpc-mcp",
|
|
3
|
-
"version": "0.1.4",
|
|
4
3
|
"description": "MCP server for LPC language server",
|
|
4
|
+
"author": "gesslar",
|
|
5
|
+
"version": "1.0.3",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/gesslar/lpc-mcp.git"
|
|
9
|
+
},
|
|
5
10
|
"main": "index.js",
|
|
6
11
|
"type": "module",
|
|
7
12
|
"bin": {
|
|
8
13
|
"lpc-mcp": "./src/index.js"
|
|
9
14
|
},
|
|
10
15
|
"engines": {
|
|
11
|
-
"node": ">=
|
|
16
|
+
"node": ">=22"
|
|
12
17
|
},
|
|
18
|
+
"packageManager": "pnpm@10.26.2",
|
|
13
19
|
"scripts": {
|
|
14
20
|
"start": "node src/index.js",
|
|
15
21
|
"types:build": "tsc -p tsconfig.types.json",
|
|
16
22
|
"lint": "eslint src/",
|
|
17
23
|
"lint:fix": "eslint src/ --fix",
|
|
18
|
-
"submit": "
|
|
19
|
-
"update": "
|
|
20
|
-
"pr": "gt submit
|
|
21
|
-
"patch": "
|
|
22
|
-
"minor": "
|
|
23
|
-
"major": "
|
|
24
|
+
"submit": "pnpm publish --access public --//registry.npmjs.org/:_authToken=\"${NPM_ACCESS_TOKEN}\"",
|
|
25
|
+
"update": "pnpm up -L",
|
|
26
|
+
"pr": "gt submit -p --ai",
|
|
27
|
+
"patch": "pnpm version patch",
|
|
28
|
+
"minor": "pnpm version minor",
|
|
29
|
+
"major": "pnpm version major"
|
|
24
30
|
},
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
"keywords": [
|
|
32
|
+
"fluffos",
|
|
33
|
+
"lpc",
|
|
34
|
+
"mud",
|
|
35
|
+
"mcp",
|
|
36
|
+
"model-context-protocol",
|
|
37
|
+
"shlemiel",
|
|
38
|
+
"schlemazel",
|
|
39
|
+
"hasenpfeffer",
|
|
40
|
+
"incorporated"
|
|
41
|
+
],
|
|
31
42
|
"license": "Unlicense",
|
|
32
43
|
"homepage": "https://github.com/gesslar/lpc-mcp#readme",
|
|
33
44
|
"dependencies": {
|
|
34
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
45
|
+
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
35
46
|
"vscode-jsonrpc": "^8.2.1"
|
|
36
47
|
},
|
|
37
48
|
"devDependencies": {
|
|
38
|
-
"@
|
|
39
|
-
"
|
|
40
|
-
"eslint-plugin-jsdoc": "^61.1.11",
|
|
41
|
-
"globals": "^16.5.0"
|
|
49
|
+
"@gesslar/uglier": "^0.0.9",
|
|
50
|
+
"eslint": "^9.39.2"
|
|
42
51
|
}
|
|
43
52
|
}
|
package/src/index.js
CHANGED
|
File without changes
|
package/test.txt
ADDED
package/.github/workflows/ci.yml
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
name: Giddyup
|
|
2
|
-
permissions:
|
|
3
|
-
contents: read
|
|
4
|
-
|
|
5
|
-
on:
|
|
6
|
-
push:
|
|
7
|
-
branches: [main]
|
|
8
|
-
pull_request:
|
|
9
|
-
branches: [main]
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
cowyboysounds:
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
|
|
15
|
-
strategy:
|
|
16
|
-
matrix:
|
|
17
|
-
node-version: [20.x, 22.x]
|
|
18
|
-
|
|
19
|
-
steps:
|
|
20
|
-
- name: Checkout code
|
|
21
|
-
uses: actions/checkout@v4
|
|
22
|
-
|
|
23
|
-
- name: Setup Node.js ${{ matrix.node-version }}
|
|
24
|
-
uses: actions/setup-node@v4
|
|
25
|
-
with:
|
|
26
|
-
node-version: ${{ matrix.node-version }}
|
|
27
|
-
cache: "npm"
|
|
28
|
-
|
|
29
|
-
- name: Install dependencies
|
|
30
|
-
run: npm ci
|
|
31
|
-
|
|
32
|
-
- name: Run ESLint
|
|
33
|
-
run: npm run lint
|