mcp-rubber-duck 1.2.0 โ 1.2.2
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/security.yml +0 -2
- package/.github/workflows/semantic-release.yml +239 -10
- package/CHANGELOG.md +4 -0
- package/README.md +23 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +0 -6
- package/dist/server.js.map +1 -1
- package/dist/services/health.d.ts +1 -10
- package/dist/services/health.d.ts.map +1 -1
- package/dist/services/health.js +1 -57
- package/dist/services/health.js.map +1 -1
- package/dist/tools/list-ducks.d.ts.map +1 -1
- package/dist/tools/list-ducks.js +5 -4
- package/dist/tools/list-ducks.js.map +1 -1
- package/package.json +1 -1
- package/src/server.ts +0 -8
- package/src/services/health.ts +6 -81
- package/src/tools/list-ducks.ts +7 -5
- package/.github/workflows/release.yml +0 -182
|
@@ -7,6 +7,18 @@ on:
|
|
|
7
7
|
- main
|
|
8
8
|
workflow_dispatch:
|
|
9
9
|
|
|
10
|
+
env:
|
|
11
|
+
REGISTRY: ghcr.io
|
|
12
|
+
IMAGE_NAME: ${{ github.repository }}
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
issues: write
|
|
17
|
+
pull-requests: write
|
|
18
|
+
packages: write
|
|
19
|
+
security-events: write
|
|
20
|
+
actions: read
|
|
21
|
+
|
|
10
22
|
jobs:
|
|
11
23
|
test:
|
|
12
24
|
name: ๐งช Test Before Release
|
|
@@ -37,15 +49,103 @@ jobs:
|
|
|
37
49
|
# - name: ๐งช Test
|
|
38
50
|
# run: npm test
|
|
39
51
|
|
|
52
|
+
security-scan:
|
|
53
|
+
name: ๐ Security Scan
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
|
|
56
|
+
steps:
|
|
57
|
+
- name: ๐ฅ Checkout
|
|
58
|
+
uses: actions/checkout@v4
|
|
59
|
+
|
|
60
|
+
- name: ๐ Run Trivy vulnerability scanner
|
|
61
|
+
uses: aquasecurity/trivy-action@master
|
|
62
|
+
with:
|
|
63
|
+
scan-type: 'fs'
|
|
64
|
+
scan-ref: '.'
|
|
65
|
+
format: 'sarif'
|
|
66
|
+
output: 'trivy-results.sarif'
|
|
67
|
+
|
|
68
|
+
- name: ๐ค Upload Trivy scan results to GitHub Security
|
|
69
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
70
|
+
if: always()
|
|
71
|
+
with:
|
|
72
|
+
sarif_file: 'trivy-results.sarif'
|
|
73
|
+
category: 'trivy-filesystem'
|
|
74
|
+
|
|
75
|
+
- name: ๐ณ Build Docker image for security scan
|
|
76
|
+
run: |
|
|
77
|
+
docker build -t security-scan-image .
|
|
78
|
+
|
|
79
|
+
- name: ๐ Run Trivy on Docker image
|
|
80
|
+
uses: aquasecurity/trivy-action@master
|
|
81
|
+
with:
|
|
82
|
+
image-ref: 'security-scan-image'
|
|
83
|
+
format: 'sarif'
|
|
84
|
+
output: 'trivy-docker-results.sarif'
|
|
85
|
+
|
|
86
|
+
- name: ๐ค Upload Docker scan results
|
|
87
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
88
|
+
if: always()
|
|
89
|
+
with:
|
|
90
|
+
sarif_file: 'trivy-docker-results.sarif'
|
|
91
|
+
category: 'trivy-docker'
|
|
92
|
+
|
|
93
|
+
dependency-check:
|
|
94
|
+
name: ๐ฆ Dependency Check
|
|
95
|
+
runs-on: ubuntu-latest
|
|
96
|
+
|
|
97
|
+
steps:
|
|
98
|
+
- name: ๐ฅ Checkout
|
|
99
|
+
uses: actions/checkout@v4
|
|
100
|
+
|
|
101
|
+
- name: ๐ฆ Setup Node.js
|
|
102
|
+
uses: actions/setup-node@v4
|
|
103
|
+
with:
|
|
104
|
+
node-version: '20'
|
|
105
|
+
cache: 'npm'
|
|
106
|
+
|
|
107
|
+
- name: ๐ฅ Install dependencies
|
|
108
|
+
run: npm ci
|
|
109
|
+
|
|
110
|
+
- name: ๐ Audit dependencies
|
|
111
|
+
run: npm audit --audit-level=moderate
|
|
112
|
+
|
|
113
|
+
- name: ๐ Check for outdated packages
|
|
114
|
+
run: npm outdated || true
|
|
115
|
+
|
|
116
|
+
- name: ๐ Check for known vulnerabilities
|
|
117
|
+
run: npx audit-ci --config audit-ci.json || true
|
|
118
|
+
|
|
119
|
+
dockerfile-lint:
|
|
120
|
+
name: ๐ณ Dockerfile Lint
|
|
121
|
+
runs-on: ubuntu-latest
|
|
122
|
+
|
|
123
|
+
steps:
|
|
124
|
+
- name: ๐ฅ Checkout
|
|
125
|
+
uses: actions/checkout@v4
|
|
126
|
+
|
|
127
|
+
- name: ๐ Lint Dockerfile
|
|
128
|
+
uses: hadolint/hadolint-action@v3.1.0
|
|
129
|
+
with:
|
|
130
|
+
dockerfile: Dockerfile
|
|
131
|
+
format: sarif
|
|
132
|
+
output-file: hadolint-results.sarif
|
|
133
|
+
no-fail: true
|
|
134
|
+
|
|
135
|
+
- name: ๐ค Upload Dockerfile lint results
|
|
136
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
137
|
+
if: always()
|
|
138
|
+
with:
|
|
139
|
+
sarif_file: hadolint-results.sarif
|
|
140
|
+
category: 'hadolint'
|
|
141
|
+
|
|
40
142
|
release:
|
|
41
143
|
name: ๐ฆ Release
|
|
42
|
-
needs: test
|
|
144
|
+
needs: [test, security-scan, dependency-check, dockerfile-lint]
|
|
43
145
|
runs-on: ubuntu-latest
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
pull-requests: write
|
|
48
|
-
packages: write
|
|
146
|
+
outputs:
|
|
147
|
+
release-version: ${{ steps.get-version.outputs.version }}
|
|
148
|
+
new-release-published: ${{ steps.check-release.outputs.released }}
|
|
49
149
|
|
|
50
150
|
steps:
|
|
51
151
|
- name: ๐ฅ Checkout
|
|
@@ -66,12 +166,49 @@ jobs:
|
|
|
66
166
|
- name: ๐๏ธ Build
|
|
67
167
|
run: npm run build
|
|
68
168
|
|
|
169
|
+
- name: ๐ท๏ธ Get latest tag before release
|
|
170
|
+
id: tag-before
|
|
171
|
+
run: |
|
|
172
|
+
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")
|
|
173
|
+
echo "tag=$latest_tag" >> $GITHUB_OUTPUT
|
|
174
|
+
echo "Latest tag before release: $latest_tag"
|
|
175
|
+
|
|
69
176
|
- name: ๐ฆ Run semantic-release
|
|
70
177
|
env:
|
|
71
178
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
72
179
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
73
180
|
run: npx semantic-release
|
|
74
181
|
|
|
182
|
+
- name: ๐ท๏ธ Get latest tag after release
|
|
183
|
+
id: tag-after
|
|
184
|
+
run: |
|
|
185
|
+
git fetch --tags
|
|
186
|
+
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")
|
|
187
|
+
echo "tag=$latest_tag" >> $GITHUB_OUTPUT
|
|
188
|
+
echo "Latest tag after release: $latest_tag"
|
|
189
|
+
|
|
190
|
+
- name: ๐ฆ Extract version from new tag
|
|
191
|
+
id: get-version
|
|
192
|
+
run: |
|
|
193
|
+
if [ "${{ steps.tag-after.outputs.tag }}" != "none" ]; then
|
|
194
|
+
version=$(echo "${{ steps.tag-after.outputs.tag }}" | sed 's/^v//')
|
|
195
|
+
echo "version=$version" >> $GITHUB_OUTPUT
|
|
196
|
+
echo "Extracted version: $version"
|
|
197
|
+
else
|
|
198
|
+
echo "version=" >> $GITHUB_OUTPUT
|
|
199
|
+
fi
|
|
200
|
+
|
|
201
|
+
- name: ๐ Check if new release was published
|
|
202
|
+
id: check-release
|
|
203
|
+
run: |
|
|
204
|
+
if [ "${{ steps.tag-before.outputs.tag }}" != "${{ steps.tag-after.outputs.tag }}" ] && [ "${{ steps.tag-after.outputs.tag }}" != "none" ]; then
|
|
205
|
+
echo "released=true" >> $GITHUB_OUTPUT
|
|
206
|
+
echo "New release detected: ${{ steps.tag-after.outputs.tag }}"
|
|
207
|
+
else
|
|
208
|
+
echo "released=false" >> $GITHUB_OUTPUT
|
|
209
|
+
echo "No new release"
|
|
210
|
+
fi
|
|
211
|
+
|
|
75
212
|
- name: ๐ Release Summary
|
|
76
213
|
if: success()
|
|
77
214
|
run: |
|
|
@@ -82,8 +219,100 @@ jobs:
|
|
|
82
219
|
echo "- ๐ Generated changelog entries" >> $GITHUB_STEP_SUMMARY
|
|
83
220
|
echo "- ๐ท๏ธ Created git tag (if new version)" >> $GITHUB_STEP_SUMMARY
|
|
84
221
|
echo "- ๐ฆ Updated package.json version" >> $GITHUB_STEP_SUMMARY
|
|
85
|
-
|
|
222
|
+
if [ "${{ steps.check-release.outputs.released }}" == "true" ]; then
|
|
223
|
+
echo "- โ
**New version released:** ${{ steps.get-version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
224
|
+
echo "- ๐ณ Docker images will be built next" >> $GITHUB_STEP_SUMMARY
|
|
225
|
+
else
|
|
226
|
+
echo "- โน๏ธ **No new version:** No changes warranted a release" >> $GITHUB_STEP_SUMMARY
|
|
227
|
+
fi
|
|
228
|
+
|
|
229
|
+
docker:
|
|
230
|
+
name: ๐ณ Build & Push Docker Images
|
|
231
|
+
needs: release
|
|
232
|
+
runs-on: ubuntu-latest
|
|
233
|
+
if: needs.release.outputs.new-release-published == 'true'
|
|
234
|
+
|
|
235
|
+
steps:
|
|
236
|
+
- name: ๐ฅ Checkout release tag
|
|
237
|
+
uses: actions/checkout@v4
|
|
238
|
+
with:
|
|
239
|
+
ref: v${{ needs.release.outputs.release-version }}
|
|
240
|
+
fetch-depth: 0
|
|
241
|
+
|
|
242
|
+
- name: ๐ ๏ธ Set up QEMU
|
|
243
|
+
uses: docker/setup-qemu-action@v3
|
|
244
|
+
|
|
245
|
+
- name: ๐ ๏ธ Set up Docker Buildx
|
|
246
|
+
uses: docker/setup-buildx-action@v3
|
|
247
|
+
|
|
248
|
+
- name: ๐ Login to Container Registry
|
|
249
|
+
uses: docker/login-action@v3
|
|
250
|
+
with:
|
|
251
|
+
registry: ${{ env.REGISTRY }}
|
|
252
|
+
username: ${{ github.actor }}
|
|
253
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
254
|
+
|
|
255
|
+
- name: ๐ท๏ธ Extract metadata
|
|
256
|
+
id: meta
|
|
257
|
+
uses: docker/metadata-action@v5
|
|
258
|
+
with:
|
|
259
|
+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
260
|
+
tags: |
|
|
261
|
+
type=semver,pattern={{version}},value=${{ needs.release.outputs.release-version }}
|
|
262
|
+
type=semver,pattern={{major}}.{{minor}},value=${{ needs.release.outputs.release-version }}
|
|
263
|
+
type=semver,pattern={{major}},value=${{ needs.release.outputs.release-version }}
|
|
264
|
+
type=raw,value=latest
|
|
265
|
+
labels: |
|
|
266
|
+
org.opencontainers.image.title=MCP Rubber Duck
|
|
267
|
+
org.opencontainers.image.description=Multi-platform MCP server for multiple OpenAI-compatible LLMs
|
|
268
|
+
org.opencontainers.image.version=${{ needs.release.outputs.release-version }}
|
|
269
|
+
|
|
270
|
+
- name: ๐ณ Build and push Docker image
|
|
271
|
+
id: build
|
|
272
|
+
uses: docker/build-push-action@v5
|
|
273
|
+
with:
|
|
274
|
+
context: .
|
|
275
|
+
platforms: linux/amd64,linux/arm64
|
|
276
|
+
push: true
|
|
277
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
278
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
279
|
+
cache-from: type=gha
|
|
280
|
+
cache-to: type=gha,mode=max
|
|
281
|
+
build-args: |
|
|
282
|
+
BUILDKIT_INLINE_CACHE=1
|
|
283
|
+
|
|
284
|
+
- name: ๐ง Make package public
|
|
285
|
+
if: success()
|
|
286
|
+
run: |
|
|
287
|
+
# Wait a moment for package to appear
|
|
288
|
+
sleep 10
|
|
289
|
+
|
|
290
|
+
# Try to make package public (may fail if already public)
|
|
291
|
+
gh api --method PATCH \
|
|
292
|
+
"user/packages/container/${{ github.event.repository.name }}" \
|
|
293
|
+
--field visibility=public \
|
|
294
|
+
--silent || echo "Package may already be public or visibility change failed"
|
|
295
|
+
env:
|
|
296
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
297
|
+
|
|
298
|
+
- name: ๐ Docker Success Summary
|
|
299
|
+
if: success()
|
|
300
|
+
run: |
|
|
301
|
+
echo "๐ **Docker Images Built Successfully!**" >> $GITHUB_STEP_SUMMARY
|
|
302
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
303
|
+
echo "๐ฆ **Built for version:** ${{ needs.release.outputs.release-version }}" >> $GITHUB_STEP_SUMMARY
|
|
304
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
305
|
+
echo "๐ณ **Docker Images Published:**" >> $GITHUB_STEP_SUMMARY
|
|
306
|
+
for tag in $(echo '${{ steps.meta.outputs.tags }}' | tr ',' '\n'); do
|
|
307
|
+
echo "- \`$tag\`" >> $GITHUB_STEP_SUMMARY
|
|
308
|
+
done
|
|
309
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
310
|
+
echo "๐๏ธ **Platforms:** AMD64, ARM64" >> $GITHUB_STEP_SUMMARY
|
|
311
|
+
echo "๐ **Registry:** ${{ env.REGISTRY }}" >> $GITHUB_STEP_SUMMARY
|
|
312
|
+
echo "๐ **Package URL:** https://github.com/${{ github.repository }}/pkgs/container/${{ github.event.repository.name }}" >> $GITHUB_STEP_SUMMARY
|
|
86
313
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
87
|
-
echo "
|
|
88
|
-
echo "
|
|
89
|
-
echo "
|
|
314
|
+
echo "๐ **Quick Test:**" >> $GITHUB_STEP_SUMMARY
|
|
315
|
+
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
|
|
316
|
+
echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.release.outputs.release-version }}" >> $GITHUB_STEP_SUMMARY
|
|
317
|
+
echo "docker run --rm -e OPENAI_API_KEY=your-key ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ needs.release.outputs.release-version }}" >> $GITHUB_STEP_SUMMARY
|
|
318
|
+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## [1.2.2](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.2.1...v1.2.2) (2025-09-17)
|
|
2
|
+
|
|
3
|
+
## [1.2.1](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.2.0...v1.2.1) (2025-09-17)
|
|
4
|
+
|
|
1
5
|
# [1.2.0](https://github.com/nesquikm/mcp-rubber-duck/compare/v1.1.1...v1.2.0) (2025-09-17)
|
|
2
6
|
|
|
3
7
|
|
package/README.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
An MCP (Model Context Protocol) server that acts as a bridge to query multiple OpenAI-compatible LLMs. Just like rubber duck debugging, explain your problems to various AI "ducks" and get different perspectives!
|
|
4
4
|
|
|
5
|
+
[](https://www.npmjs.com/package/mcp-rubber-duck)
|
|
6
|
+
[](https://github.com/nesquikm/mcp-rubber-duck/pkgs/container/mcp-rubber-duck)
|
|
7
|
+
[](https://modelcontextprotocol.io/registry)
|
|
8
|
+
|
|
5
9
|
```
|
|
6
10
|
__
|
|
7
11
|
<(o )___
|
|
@@ -51,7 +55,15 @@ Any provider with an OpenAI-compatible API endpoint, including:
|
|
|
51
55
|
- npm or yarn
|
|
52
56
|
- At least one API key for a supported provider
|
|
53
57
|
|
|
54
|
-
###
|
|
58
|
+
### Installation Methods
|
|
59
|
+
|
|
60
|
+
#### Option 1: Install from NPM
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install -g mcp-rubber-duck
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### Option 2: Install from Source
|
|
55
67
|
|
|
56
68
|
```bash
|
|
57
69
|
# Clone the repository
|
|
@@ -792,6 +804,16 @@ MIT License - see LICENSE file for details
|
|
|
792
804
|
|
|
793
805
|
See [CHANGELOG.md](./CHANGELOG.md) for a detailed history of changes and releases.
|
|
794
806
|
|
|
807
|
+
## ๐ฆ Registry & Directory
|
|
808
|
+
|
|
809
|
+
MCP Rubber Duck is available through multiple channels:
|
|
810
|
+
|
|
811
|
+
- **NPM Package**: [npmjs.com/package/mcp-rubber-duck](https://www.npmjs.com/package/mcp-rubber-duck)
|
|
812
|
+
- **Docker Images**: [ghcr.io/nesquikm/mcp-rubber-duck](https://github.com/nesquikm/mcp-rubber-duck/pkgs/container/mcp-rubber-duck)
|
|
813
|
+
- **MCP Registry**: Official MCP server `io.github.nesquikm/rubber-duck`
|
|
814
|
+
- **Glama Directory**: [glama.ai/mcp/servers/@nesquikm/mcp-rubber-duck](https://glama.ai/mcp/servers/@nesquikm/mcp-rubber-duck)
|
|
815
|
+
- **Awesome MCP Servers**: Listed in the [community directory](https://github.com/punkpeye/awesome-mcp-servers)
|
|
816
|
+
|
|
795
817
|
## Support
|
|
796
818
|
|
|
797
819
|
- Report issues: https://github.com/nesquikm/mcp-rubber-duck/issues
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAmCA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,uBAAuB,CAAC,CAA0B;IAC1D,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,UAAU,CAAkB;;IA4BpC,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,aAAa;YA8FP,oBAAoB;YAwCpB,yBAAyB;YA6BzB,wBAAwB;IAwBtC,OAAO,CAAC,0BAA0B;IAyClC,OAAO,CAAC,QAAQ;IAqMV,KAAK;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAmCA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,uBAAuB,CAAC,CAA0B;IAC1D,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,UAAU,CAAkB;;IA4BpC,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,aAAa;YA8FP,oBAAoB;YAwCpB,yBAAyB;YA6BzB,wBAAwB;IAwBtC,OAAO,CAAC,0BAA0B;IAyClC,OAAO,CAAC,QAAQ;IAqMV,KAAK;IAmCL,IAAI;CAeX"}
|
package/dist/server.js
CHANGED
|
@@ -469,10 +469,6 @@ export class RubberDuckServer {
|
|
|
469
469
|
logger.warn('Some MCP functionality may not be available');
|
|
470
470
|
}
|
|
471
471
|
}
|
|
472
|
-
// Start health monitoring
|
|
473
|
-
this.healthMonitor.startMonitoring(60000);
|
|
474
|
-
// Initial health check
|
|
475
|
-
await this.healthMonitor.performHealthChecks();
|
|
476
472
|
// Start the server
|
|
477
473
|
const transport = new StdioServerTransport();
|
|
478
474
|
await this.server.connect(transport);
|
|
@@ -484,8 +480,6 @@ export class RubberDuckServer {
|
|
|
484
480
|
}
|
|
485
481
|
}
|
|
486
482
|
async stop() {
|
|
487
|
-
// Stop health monitoring
|
|
488
|
-
this.healthMonitor.stopMonitoring();
|
|
489
483
|
// Cleanup MCP resources
|
|
490
484
|
if (this.approvalService) {
|
|
491
485
|
this.approvalService.shutdown();
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,7 @@ import { ProviderManager } from '../providers/manager.js';
|
|
|
2
2
|
import { ProviderHealth } from '../config/types.js';
|
|
3
3
|
export declare class HealthMonitor {
|
|
4
4
|
private providerManager;
|
|
5
|
-
private healthCheckInterval;
|
|
6
|
-
private healthCache;
|
|
7
5
|
constructor(providerManager: ProviderManager);
|
|
8
|
-
performHealthChecks(): Promise<
|
|
9
|
-
startMonitoring(intervalMs?: number): void;
|
|
10
|
-
stopMonitoring(): void;
|
|
11
|
-
getHealthStatus(): Map<string, ProviderHealth>;
|
|
12
|
-
getHealthyProviders(): string[];
|
|
13
|
-
isProviderHealthy(providerName: string): boolean;
|
|
14
|
-
getProviderLatency(providerName: string): number | undefined;
|
|
15
|
-
waitForHealthyProvider(maxWaitMs?: number, checkIntervalMs?: number): Promise<string | null>;
|
|
6
|
+
performHealthChecks(): Promise<ProviderHealth[]>;
|
|
16
7
|
}
|
|
17
8
|
//# sourceMappingURL=health.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/services/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAkB;
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/services/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAkB;gBAE7B,eAAe,EAAE,eAAe;IAItC,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CAoBvD"}
|
package/dist/services/health.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { logger } from '../utils/logger.js';
|
|
2
2
|
export class HealthMonitor {
|
|
3
3
|
providerManager;
|
|
4
|
-
healthCheckInterval = null;
|
|
5
|
-
healthCache = new Map();
|
|
6
4
|
constructor(providerManager) {
|
|
7
5
|
this.providerManager = providerManager;
|
|
8
6
|
}
|
|
@@ -10,7 +8,6 @@ export class HealthMonitor {
|
|
|
10
8
|
logger.info('๐ฆ Performing health checks on all ducks...');
|
|
11
9
|
const results = await this.providerManager.checkHealth();
|
|
12
10
|
for (const result of results) {
|
|
13
|
-
this.healthCache.set(result.provider, result);
|
|
14
11
|
const statusEmoji = result.healthy ? 'โ
' : 'โ';
|
|
15
12
|
const latencyInfo = result.latency ? ` (${result.latency}ms)` : '';
|
|
16
13
|
logger.info(`${statusEmoji} ${result.provider}: ${result.healthy ? 'Healthy' : 'Unhealthy'}${latencyInfo}`);
|
|
@@ -18,60 +15,7 @@ export class HealthMonitor {
|
|
|
18
15
|
logger.warn(` Error: ${result.error}`);
|
|
19
16
|
}
|
|
20
17
|
}
|
|
21
|
-
return
|
|
22
|
-
}
|
|
23
|
-
startMonitoring(intervalMs = 60000) {
|
|
24
|
-
if (this.healthCheckInterval) {
|
|
25
|
-
this.stopMonitoring();
|
|
26
|
-
}
|
|
27
|
-
// Initial check
|
|
28
|
-
this.performHealthChecks().catch(error => {
|
|
29
|
-
logger.error('Initial health check failed:', error);
|
|
30
|
-
});
|
|
31
|
-
// Set up periodic checks
|
|
32
|
-
this.healthCheckInterval = setInterval(() => {
|
|
33
|
-
this.performHealthChecks().catch(error => {
|
|
34
|
-
logger.error('Periodic health check failed:', error);
|
|
35
|
-
});
|
|
36
|
-
}, intervalMs);
|
|
37
|
-
logger.info(`Started health monitoring with ${intervalMs}ms interval`);
|
|
38
|
-
}
|
|
39
|
-
stopMonitoring() {
|
|
40
|
-
if (this.healthCheckInterval) {
|
|
41
|
-
clearInterval(this.healthCheckInterval);
|
|
42
|
-
this.healthCheckInterval = null;
|
|
43
|
-
logger.info('Stopped health monitoring');
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
getHealthStatus() {
|
|
47
|
-
return new Map(this.healthCache);
|
|
48
|
-
}
|
|
49
|
-
getHealthyProviders() {
|
|
50
|
-
return Array.from(this.healthCache.entries())
|
|
51
|
-
.filter(([_, health]) => health.healthy)
|
|
52
|
-
.map(([provider, _]) => provider);
|
|
53
|
-
}
|
|
54
|
-
isProviderHealthy(providerName) {
|
|
55
|
-
const health = this.healthCache.get(providerName);
|
|
56
|
-
return health?.healthy || false;
|
|
57
|
-
}
|
|
58
|
-
getProviderLatency(providerName) {
|
|
59
|
-
const health = this.healthCache.get(providerName);
|
|
60
|
-
return health?.latency;
|
|
61
|
-
}
|
|
62
|
-
async waitForHealthyProvider(maxWaitMs = 30000, checkIntervalMs = 1000) {
|
|
63
|
-
const startTime = Date.now();
|
|
64
|
-
while (Date.now() - startTime < maxWaitMs) {
|
|
65
|
-
const healthyProviders = this.getHealthyProviders();
|
|
66
|
-
if (healthyProviders.length > 0) {
|
|
67
|
-
return healthyProviders[0];
|
|
68
|
-
}
|
|
69
|
-
// Perform a fresh health check
|
|
70
|
-
await this.performHealthChecks();
|
|
71
|
-
// Wait before next check
|
|
72
|
-
await new Promise(resolve => setTimeout(resolve, checkIntervalMs));
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
18
|
+
return results;
|
|
75
19
|
}
|
|
76
20
|
}
|
|
77
21
|
//# sourceMappingURL=health.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/services/health.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,aAAa;IAChB,eAAe,CAAkB;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/services/health.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,OAAO,aAAa;IAChB,eAAe,CAAkB;IAEzC,YAAY,eAAgC;QAC1C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QAEzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnE,MAAM,CAAC,IAAI,CACT,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,EAAE,CAC/F,CAAC;YAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-ducks.d.ts","sourceRoot":"","sources":["../../src/tools/list-ducks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-ducks.d.ts","sourceRoot":"","sources":["../../src/tools/list-ducks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD,wBAAsB,aAAa,CACjC,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAyD9B"}
|
package/dist/tools/list-ducks.js
CHANGED
|
@@ -2,13 +2,14 @@ import { duckArt } from '../utils/ascii-art.js';
|
|
|
2
2
|
import { logger } from '../utils/logger.js';
|
|
3
3
|
export async function listDucksTool(providerManager, healthMonitor, args) {
|
|
4
4
|
const { check_health = false } = args;
|
|
5
|
+
// Get all providers with their info
|
|
6
|
+
const providers = providerManager.getAllProviders();
|
|
5
7
|
// Perform health check if requested
|
|
8
|
+
let healthStatus = new Map();
|
|
6
9
|
if (check_health) {
|
|
7
|
-
await healthMonitor.performHealthChecks();
|
|
10
|
+
const healthResults = await healthMonitor.performHealthChecks();
|
|
11
|
+
healthStatus = new Map(healthResults.map(result => [result.provider, result]));
|
|
8
12
|
}
|
|
9
|
-
// Get all providers with their info
|
|
10
|
-
const providers = providerManager.getAllProviders();
|
|
11
|
-
const healthStatus = healthMonitor.getHealthStatus();
|
|
12
13
|
// Build response
|
|
13
14
|
let response = `${duckArt.panel}\n\n`;
|
|
14
15
|
response += `Found ${providers.length} duck(s) in the pond:\n\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-ducks.js","sourceRoot":"","sources":["../../src/tools/list-ducks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list-ducks.js","sourceRoot":"","sources":["../../src/tools/list-ducks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,eAAgC,EAChC,aAA4B,EAC5B,IAA6B;IAE7B,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,IAEhC,CAAC;IAEF,oCAAoC;IACpC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;IAEpD,oCAAoC;IACpC,IAAI,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAChE,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,GAAG,GAAG,OAAO,CAAC,KAAK,MAAM,CAAC;IACtC,QAAQ,IAAI,SAAS,SAAS,CAAC,MAAM,2BAA2B,CAAC;IAEjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE7E,QAAQ,IAAI,GAAG,WAAW,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,OAAO,QAAQ,CAAC,IAAI,KAAK,CAAC;QAChF,QAAQ,IAAI,gBAAgB,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;QACpD,QAAQ,IAAI,mBAAmB,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC;QACzD,QAAQ,IAAI,kBAAkB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC;QAE1F,IAAI,MAAM,EAAE,CAAC;YACX,QAAQ,IAAI,iBAAiB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACxE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,QAAQ,IAAI,KAAK,MAAM,CAAC,OAAO,KAAK,CAAC;YACvC,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,QAAQ,IAAI,kBAAkB,MAAM,CAAC,KAAK,EAAE,CAAC;YAC/C,CAAC;YACD,QAAQ,IAAI,uBAAuB,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC;QAC/E,CAAC;QAED,QAAQ,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;IACd,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACrF,QAAQ,IAAI,iBAAiB,YAAY,IAAI,SAAS,CAAC,MAAM,+BAA+B,CAAC;IAE7F,MAAM,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,MAAM,WAAW,YAAY,UAAU,CAAC,CAAC;IAEzE,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;aACf;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/server.ts
CHANGED
|
@@ -565,11 +565,6 @@ export class RubberDuckServer {
|
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
567
|
|
|
568
|
-
// Start health monitoring
|
|
569
|
-
this.healthMonitor.startMonitoring(60000);
|
|
570
|
-
|
|
571
|
-
// Initial health check
|
|
572
|
-
await this.healthMonitor.performHealthChecks();
|
|
573
568
|
|
|
574
569
|
// Start the server
|
|
575
570
|
const transport = new StdioServerTransport();
|
|
@@ -583,9 +578,6 @@ export class RubberDuckServer {
|
|
|
583
578
|
}
|
|
584
579
|
|
|
585
580
|
async stop() {
|
|
586
|
-
// Stop health monitoring
|
|
587
|
-
this.healthMonitor.stopMonitoring();
|
|
588
|
-
|
|
589
581
|
// Cleanup MCP resources
|
|
590
582
|
if (this.approvalService) {
|
|
591
583
|
this.approvalService.shutdown();
|
package/src/services/health.ts
CHANGED
|
@@ -4,104 +4,29 @@ import { logger } from '../utils/logger.js';
|
|
|
4
4
|
|
|
5
5
|
export class HealthMonitor {
|
|
6
6
|
private providerManager: ProviderManager;
|
|
7
|
-
private healthCheckInterval: NodeJS.Timeout | null = null;
|
|
8
|
-
private healthCache: Map<string, ProviderHealth> = new Map();
|
|
9
7
|
|
|
10
8
|
constructor(providerManager: ProviderManager) {
|
|
11
9
|
this.providerManager = providerManager;
|
|
12
10
|
}
|
|
13
11
|
|
|
14
|
-
async performHealthChecks(): Promise<
|
|
12
|
+
async performHealthChecks(): Promise<ProviderHealth[]> {
|
|
15
13
|
logger.info('๐ฆ Performing health checks on all ducks...');
|
|
16
|
-
|
|
14
|
+
|
|
17
15
|
const results = await this.providerManager.checkHealth();
|
|
18
|
-
|
|
16
|
+
|
|
19
17
|
for (const result of results) {
|
|
20
|
-
this.healthCache.set(result.provider, result);
|
|
21
|
-
|
|
22
18
|
const statusEmoji = result.healthy ? 'โ
' : 'โ';
|
|
23
19
|
const latencyInfo = result.latency ? ` (${result.latency}ms)` : '';
|
|
24
|
-
|
|
20
|
+
|
|
25
21
|
logger.info(
|
|
26
22
|
`${statusEmoji} ${result.provider}: ${result.healthy ? 'Healthy' : 'Unhealthy'}${latencyInfo}`
|
|
27
23
|
);
|
|
28
|
-
|
|
24
|
+
|
|
29
25
|
if (result.error) {
|
|
30
26
|
logger.warn(` Error: ${result.error}`);
|
|
31
27
|
}
|
|
32
28
|
}
|
|
33
29
|
|
|
34
|
-
return
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
startMonitoring(intervalMs: number = 60000): void {
|
|
38
|
-
if (this.healthCheckInterval) {
|
|
39
|
-
this.stopMonitoring();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Initial check
|
|
43
|
-
this.performHealthChecks().catch(error => {
|
|
44
|
-
logger.error('Initial health check failed:', error);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
// Set up periodic checks
|
|
48
|
-
this.healthCheckInterval = setInterval(() => {
|
|
49
|
-
this.performHealthChecks().catch(error => {
|
|
50
|
-
logger.error('Periodic health check failed:', error);
|
|
51
|
-
});
|
|
52
|
-
}, intervalMs);
|
|
53
|
-
|
|
54
|
-
logger.info(`Started health monitoring with ${intervalMs}ms interval`);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
stopMonitoring(): void {
|
|
58
|
-
if (this.healthCheckInterval) {
|
|
59
|
-
clearInterval(this.healthCheckInterval);
|
|
60
|
-
this.healthCheckInterval = null;
|
|
61
|
-
logger.info('Stopped health monitoring');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
getHealthStatus(): Map<string, ProviderHealth> {
|
|
66
|
-
return new Map(this.healthCache);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
getHealthyProviders(): string[] {
|
|
70
|
-
return Array.from(this.healthCache.entries())
|
|
71
|
-
.filter(([_, health]) => health.healthy)
|
|
72
|
-
.map(([provider, _]) => provider);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
isProviderHealthy(providerName: string): boolean {
|
|
76
|
-
const health = this.healthCache.get(providerName);
|
|
77
|
-
return health?.healthy || false;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
getProviderLatency(providerName: string): number | undefined {
|
|
81
|
-
const health = this.healthCache.get(providerName);
|
|
82
|
-
return health?.latency;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async waitForHealthyProvider(
|
|
86
|
-
maxWaitMs: number = 30000,
|
|
87
|
-
checkIntervalMs: number = 1000
|
|
88
|
-
): Promise<string | null> {
|
|
89
|
-
const startTime = Date.now();
|
|
90
|
-
|
|
91
|
-
while (Date.now() - startTime < maxWaitMs) {
|
|
92
|
-
const healthyProviders = this.getHealthyProviders();
|
|
93
|
-
|
|
94
|
-
if (healthyProviders.length > 0) {
|
|
95
|
-
return healthyProviders[0];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Perform a fresh health check
|
|
99
|
-
await this.performHealthChecks();
|
|
100
|
-
|
|
101
|
-
// Wait before next check
|
|
102
|
-
await new Promise(resolve => setTimeout(resolve, checkIntervalMs));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return null;
|
|
30
|
+
return results;
|
|
106
31
|
}
|
|
107
32
|
}
|
package/src/tools/list-ducks.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProviderManager } from '../providers/manager.js';
|
|
2
2
|
import { HealthMonitor } from '../services/health.js';
|
|
3
|
+
import { ProviderHealth } from '../config/types.js';
|
|
3
4
|
import { duckArt } from '../utils/ascii-art.js';
|
|
4
5
|
import { logger } from '../utils/logger.js';
|
|
5
6
|
|
|
@@ -12,15 +13,16 @@ export async function listDucksTool(
|
|
|
12
13
|
check_health?: boolean;
|
|
13
14
|
};
|
|
14
15
|
|
|
16
|
+
// Get all providers with their info
|
|
17
|
+
const providers = providerManager.getAllProviders();
|
|
18
|
+
|
|
15
19
|
// Perform health check if requested
|
|
20
|
+
let healthStatus = new Map<string, ProviderHealth>();
|
|
16
21
|
if (check_health) {
|
|
17
|
-
await healthMonitor.performHealthChecks();
|
|
22
|
+
const healthResults = await healthMonitor.performHealthChecks();
|
|
23
|
+
healthStatus = new Map(healthResults.map(result => [result.provider, result]));
|
|
18
24
|
}
|
|
19
25
|
|
|
20
|
-
// Get all providers with their info
|
|
21
|
-
const providers = providerManager.getAllProviders();
|
|
22
|
-
const healthStatus = healthMonitor.getHealthStatus();
|
|
23
|
-
|
|
24
26
|
// Build response
|
|
25
27
|
let response = `${duckArt.panel}\n\n`;
|
|
26
28
|
response += `Found ${providers.length} duck(s) in the pond:\n\n`;
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
name: ๐ Release & Deploy
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- 'v*'
|
|
7
|
-
|
|
8
|
-
env:
|
|
9
|
-
REGISTRY: ghcr.io
|
|
10
|
-
IMAGE_NAME: ${{ github.repository }}
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
test:
|
|
14
|
-
name: ๐งช Test
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
steps:
|
|
17
|
-
- name: ๐ฅ Checkout
|
|
18
|
-
uses: actions/checkout@v4
|
|
19
|
-
|
|
20
|
-
- name: ๐ฆ Setup Node.js
|
|
21
|
-
uses: actions/setup-node@v4
|
|
22
|
-
with:
|
|
23
|
-
node-version: '20'
|
|
24
|
-
cache: 'npm'
|
|
25
|
-
|
|
26
|
-
- name: ๐ฅ Install dependencies
|
|
27
|
-
run: npm ci
|
|
28
|
-
|
|
29
|
-
- name: ๐ Lint
|
|
30
|
-
run: npm run lint
|
|
31
|
-
|
|
32
|
-
- name: ๐๏ธ Build
|
|
33
|
-
run: npm run build
|
|
34
|
-
|
|
35
|
-
- name: ๐ฌ Type check
|
|
36
|
-
run: npm run typecheck
|
|
37
|
-
|
|
38
|
-
# Temporarily disabled tests to fix deployment
|
|
39
|
-
# - name: ๐งช Test
|
|
40
|
-
# run: npm test
|
|
41
|
-
|
|
42
|
-
build-and-push:
|
|
43
|
-
name: ๐ณ Build & Push Release
|
|
44
|
-
needs: test
|
|
45
|
-
runs-on: ubuntu-latest
|
|
46
|
-
permissions:
|
|
47
|
-
contents: write
|
|
48
|
-
packages: write
|
|
49
|
-
|
|
50
|
-
steps:
|
|
51
|
-
- name: ๐ฅ Checkout
|
|
52
|
-
uses: actions/checkout@v4
|
|
53
|
-
|
|
54
|
-
- name: ๐ ๏ธ Set up QEMU
|
|
55
|
-
uses: docker/setup-qemu-action@v3
|
|
56
|
-
|
|
57
|
-
- name: ๐ ๏ธ Set up Docker Buildx
|
|
58
|
-
uses: docker/setup-buildx-action@v3
|
|
59
|
-
|
|
60
|
-
- name: ๐ Login to Container Registry
|
|
61
|
-
uses: docker/login-action@v3
|
|
62
|
-
with:
|
|
63
|
-
registry: ${{ env.REGISTRY }}
|
|
64
|
-
username: ${{ github.actor }}
|
|
65
|
-
password: ${{ secrets.GITHUB_TOKEN }}
|
|
66
|
-
|
|
67
|
-
- name: ๐ท๏ธ Extract metadata
|
|
68
|
-
id: meta
|
|
69
|
-
uses: docker/metadata-action@v5
|
|
70
|
-
with:
|
|
71
|
-
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
72
|
-
tags: |
|
|
73
|
-
type=ref,event=tag
|
|
74
|
-
type=semver,pattern={{version}}
|
|
75
|
-
type=semver,pattern={{major}}.{{minor}}
|
|
76
|
-
type=semver,pattern={{major}}
|
|
77
|
-
type=raw,value=latest
|
|
78
|
-
labels: |
|
|
79
|
-
org.opencontainers.image.title=MCP Rubber Duck
|
|
80
|
-
org.opencontainers.image.description=Multi-platform MCP server for multiple OpenAI-compatible LLMs
|
|
81
|
-
org.opencontainers.image.version=${{ github.ref_name }}
|
|
82
|
-
|
|
83
|
-
- name: ๐ณ Build and push Docker image
|
|
84
|
-
id: build
|
|
85
|
-
uses: docker/build-push-action@v5
|
|
86
|
-
with:
|
|
87
|
-
context: .
|
|
88
|
-
platforms: linux/amd64,linux/arm64
|
|
89
|
-
push: true
|
|
90
|
-
tags: ${{ steps.meta.outputs.tags }}
|
|
91
|
-
labels: ${{ steps.meta.outputs.labels }}
|
|
92
|
-
cache-from: type=gha
|
|
93
|
-
cache-to: type=gha,mode=max
|
|
94
|
-
build-args: |
|
|
95
|
-
BUILDKIT_INLINE_CACHE=1
|
|
96
|
-
|
|
97
|
-
- name: ๐ง Make package public
|
|
98
|
-
if: success()
|
|
99
|
-
run: |
|
|
100
|
-
# Wait a moment for package to appear
|
|
101
|
-
sleep 10
|
|
102
|
-
|
|
103
|
-
# Try to make package public (may fail if already public)
|
|
104
|
-
gh api --method PATCH \
|
|
105
|
-
"user/packages/container/${{ github.event.repository.name }}" \
|
|
106
|
-
--field visibility=public \
|
|
107
|
-
--silent || echo "Package may already be public or visibility change failed"
|
|
108
|
-
env:
|
|
109
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
110
|
-
|
|
111
|
-
- name: ๐ Generate Release Notes
|
|
112
|
-
id: release_notes
|
|
113
|
-
run: |
|
|
114
|
-
echo "## ๐ฆ MCP Rubber Duck ${{ github.ref_name }}" > release_notes.md
|
|
115
|
-
echo "" >> release_notes.md
|
|
116
|
-
echo "### ๐ณ Docker Images" >> release_notes.md
|
|
117
|
-
echo "" >> release_notes.md
|
|
118
|
-
echo "**Multi-platform support:** AMD64, ARM64 (works on Mac, Linux, Windows, Raspberry Pi 3+)" >> release_notes.md
|
|
119
|
-
echo "" >> release_notes.md
|
|
120
|
-
echo "\`\`\`bash" >> release_notes.md
|
|
121
|
-
echo "# Pull the latest release" >> release_notes.md
|
|
122
|
-
echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" >> release_notes.md
|
|
123
|
-
echo "" >> release_notes.md
|
|
124
|
-
echo "# Or use latest tag" >> release_notes.md
|
|
125
|
-
echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> release_notes.md
|
|
126
|
-
echo "" >> release_notes.md
|
|
127
|
-
echo "# Quick start" >> release_notes.md
|
|
128
|
-
echo "cp .env.template .env" >> release_notes.md
|
|
129
|
-
echo "# Edit .env with your API keys" >> release_notes.md
|
|
130
|
-
echo "docker compose up -d" >> release_notes.md
|
|
131
|
-
echo "\`\`\`" >> release_notes.md
|
|
132
|
-
echo "" >> release_notes.md
|
|
133
|
-
echo "### ๐ฆ Available Tags" >> release_notes.md
|
|
134
|
-
echo "" >> release_notes.md
|
|
135
|
-
for tag in $(echo '${{ steps.meta.outputs.tags }}' | tr ',' '\n'); do
|
|
136
|
-
echo "- \`$tag\`" >> release_notes.md
|
|
137
|
-
done
|
|
138
|
-
echo "" >> release_notes.md
|
|
139
|
-
echo "### ๐ Deployment Options" >> release_notes.md
|
|
140
|
-
echo "" >> release_notes.md
|
|
141
|
-
echo "- **๐ฅ๏ธ Desktop/Server:** Use \`.env.desktop.example\` for optimal performance" >> release_notes.md
|
|
142
|
-
echo "- **๐ฅง Raspberry Pi:** Use \`.env.pi.example\` for memory-optimized settings" >> release_notes.md
|
|
143
|
-
echo "- **โ๏ธ Remote:** Deploy via SSH with \`./scripts/deploy.sh --mode ssh\`" >> release_notes.md
|
|
144
|
-
echo "" >> release_notes.md
|
|
145
|
-
echo "### โจ Features" >> release_notes.md
|
|
146
|
-
echo "" >> release_notes.md
|
|
147
|
-
echo "- ๐ฆ **Multiple AI Ducks:** Query OpenAI, Gemini, Groq, Ollama, and more" >> release_notes.md
|
|
148
|
-
echo "- ๐ฌ **Conversation Management:** Maintain context across messages" >> release_notes.md
|
|
149
|
-
echo "- ๐๏ธ **Duck Council:** Get responses from all configured LLMs" >> release_notes.md
|
|
150
|
-
echo "- ๐ **MCP Bridge:** Connect to external MCP servers" >> release_notes.md
|
|
151
|
-
echo "- ๐ **Universal Deployment:** Same image works on all platforms" >> release_notes.md
|
|
152
|
-
|
|
153
|
-
- name: ๐ Create GitHub Release
|
|
154
|
-
uses: actions/create-release@v1
|
|
155
|
-
env:
|
|
156
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
157
|
-
with:
|
|
158
|
-
tag_name: ${{ github.ref_name }}
|
|
159
|
-
release_name: MCP Rubber Duck ${{ github.ref_name }}
|
|
160
|
-
body_path: release_notes.md
|
|
161
|
-
draft: false
|
|
162
|
-
prerelease: false
|
|
163
|
-
|
|
164
|
-
- name: ๐ Success Summary
|
|
165
|
-
if: success()
|
|
166
|
-
run: |
|
|
167
|
-
echo "๐ **Release ${{ github.ref_name }} Published Successfully!**" >> $GITHUB_STEP_SUMMARY
|
|
168
|
-
echo "" >> $GITHUB_STEP_SUMMARY
|
|
169
|
-
echo "๐ฆ **Docker Images Built:**" >> $GITHUB_STEP_SUMMARY
|
|
170
|
-
for tag in $(echo '${{ steps.meta.outputs.tags }}' | tr ',' '\n'); do
|
|
171
|
-
echo "- \`$tag\`" >> $GITHUB_STEP_SUMMARY
|
|
172
|
-
done
|
|
173
|
-
echo "" >> $GITHUB_STEP_SUMMARY
|
|
174
|
-
echo "๐๏ธ **Platforms:** AMD64, ARM64" >> $GITHUB_STEP_SUMMARY
|
|
175
|
-
echo "๐ **Registry:** ${{ env.REGISTRY }}" >> $GITHUB_STEP_SUMMARY
|
|
176
|
-
echo "๐ **Package URL:** https://github.com/${{ github.repository }}/pkgs/container/${{ github.event.repository.name }}" >> $GITHUB_STEP_SUMMARY
|
|
177
|
-
echo "" >> $GITHUB_STEP_SUMMARY
|
|
178
|
-
echo "๐ **Quick Test:**" >> $GITHUB_STEP_SUMMARY
|
|
179
|
-
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
|
|
180
|
-
echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
|
|
181
|
-
echo "docker run --rm -e OPENAI_API_KEY=your-key ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
|
|
182
|
-
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|