Skip to content

Commit 1c1263f

Browse files
Merge branch 'main' into fix-get-me-ui-visibility
2 parents a1c6104 + c88d2ec commit 1c1263f

14 files changed

Lines changed: 1013 additions & 852 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Build UI
2+
description: Restore cached UI HTML artifacts, or set up Node and run script/build-ui on cache miss.
3+
4+
runs:
5+
using: composite
6+
steps:
7+
- name: Cache UI artifacts
8+
id: cache-ui
9+
uses: actions/cache@v5
10+
with:
11+
path: |
12+
pkg/github/ui_dist/get-me.html
13+
pkg/github/ui_dist/issue-write.html
14+
pkg/github/ui_dist/pr-write.html
15+
key: ui-dist-v1-${{ hashFiles('ui/package-lock.json', 'ui/package.json', 'ui/index.html', 'ui/tsconfig*.json', 'ui/vite.config.ts', 'ui/src/**', 'ui/scripts/**') }}
16+
enableCrossOsArchive: true
17+
18+
- name: Set up Node.js
19+
if: steps.cache-ui.outputs.cache-hit != 'true'
20+
uses: actions/setup-node@v6
21+
with:
22+
node-version: "20"
23+
cache: npm
24+
cache-dependency-path: ui/package-lock.json
25+
26+
- name: Build UI
27+
if: steps.cache-ui.outputs.cache-hit != 'true'
28+
shell: bash
29+
run: script/build-ui
30+
31+
- name: Report UI cache status
32+
shell: bash
33+
run: |
34+
if [ "${{ steps.cache-ui.outputs.cache-hit }}" = "true" ]; then
35+
echo "UI artifacts restored from cache (skipped build)."
36+
else
37+
echo "UI artifacts rebuilt from source."
38+
fi

.github/workflows/code-scanning.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ jobs:
7878
go-version: ${{ fromJSON(steps.resolve-environment.outputs.environment).configuration.go.version }}
7979
cache: false
8080

81-
- name: Set up Node.js
82-
if: matrix.language == 'go' || matrix.language == 'javascript'
81+
- name: Set up Node.js (for JavaScript CodeQL)
82+
if: matrix.language == 'javascript'
8383
uses: actions/setup-node@v6
8484
with:
8585
node-version: "20"
@@ -88,7 +88,7 @@ jobs:
8888

8989
- name: Build UI
9090
if: matrix.language == 'go'
91-
run: script/build-ui
91+
uses: ./.github/actions/build-ui
9292

9393
- name: Autobuild
9494
uses: github/codeql-action/autobuild@v4

.github/workflows/docs-check.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,8 @@ jobs:
1616
- name: Checkout code
1717
uses: actions/checkout@v6
1818

19-
- name: Set up Node.js
20-
uses: actions/setup-node@v6
21-
with:
22-
node-version: "20"
23-
cache: "npm"
24-
cache-dependency-path: ui/package-lock.json
25-
2619
- name: Build UI
27-
run: script/build-ui
20+
uses: ./.github/actions/build-ui
2821

2922
- name: Set up Go
3023
uses: actions/setup-go@v6

.github/workflows/go.yml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,8 @@ jobs:
2525
- name: Check out code
2626
uses: actions/checkout@v6
2727

28-
- name: Set up Node.js
29-
uses: actions/setup-node@v6
30-
with:
31-
node-version: "20"
32-
cache: "npm"
33-
cache-dependency-path: ui/package-lock.json
34-
3528
- name: Build UI
36-
shell: bash
37-
run: script/build-ui
29+
uses: ./.github/actions/build-ui
3830

3931
- name: Set up Go
4032
uses: actions/setup-go@v6

.github/workflows/goreleaser.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,8 @@ jobs:
1616
- name: Check out code
1717
uses: actions/checkout@v6
1818

19-
- name: Set up Node.js
20-
uses: actions/setup-node@v6
21-
with:
22-
node-version: "20"
23-
cache: "npm"
24-
cache-dependency-path: ui/package-lock.json
25-
2619
- name: Build UI
27-
run: script/build-ui
20+
uses: ./.github/actions/build-ui
2821

2922
- name: Set up Go
3023
uses: actions/setup-go@v6

.github/workflows/license-check.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,8 @@ jobs:
3232
GH_TOKEN: ${{ github.token }}
3333
run: gh pr checkout ${{ github.event.pull_request.number }}
3434

35-
- name: Set up Node.js
36-
uses: actions/setup-node@v6
37-
with:
38-
node-version: "20"
39-
cache: "npm"
40-
cache-dependency-path: ui/package-lock.json
41-
4235
- name: Build UI
43-
run: script/build-ui
36+
uses: ./.github/actions/build-ui
4437

4538
- name: Set up Go
4639
uses: actions/setup-go@v6

.github/workflows/lint.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,8 @@ jobs:
1414
runs-on: ubuntu-latest
1515
steps:
1616
- uses: actions/checkout@v6
17-
- uses: actions/setup-node@v6
18-
with:
19-
node-version: "20"
20-
cache: "npm"
21-
cache-dependency-path: ui/package-lock.json
2217
- name: Build UI
23-
run: script/build-ui
18+
uses: ./.github/actions/build-ui
2419
- uses: actions/setup-go@v6
2520
with:
2621
go-version: '1.25'

.github/workflows/mcp-diff.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,8 @@ jobs:
1919
with:
2020
fetch-depth: 0
2121

22-
- name: Set up Node.js
23-
uses: actions/setup-node@v6
24-
with:
25-
node-version: '20'
26-
2722
- name: Build UI
28-
run: script/build-ui
23+
uses: ./.github/actions/build-ui
2924

3025
- name: Run MCP Server Diff
3126
uses: SamMorrowDrums/mcp-server-diff@v2.3.5

pkg/github/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@ func NewServer(version, name, title string, opts *mcp.ServerOptions) *mcp.Server
204204

205205
func CompletionsHandler(getClient GetClientFn) func(ctx context.Context, req *mcp.CompleteRequest) (*mcp.CompleteResult, error) {
206206
return func(ctx context.Context, req *mcp.CompleteRequest) (*mcp.CompleteResult, error) {
207+
if req == nil || req.Params == nil || req.Params.Ref == nil {
208+
return nil, fmt.Errorf("missing required parameter: ref")
209+
}
207210
switch req.Params.Ref.Type {
208211
case "ref/resource":
209212
if strings.HasPrefix(req.Params.Ref.URI, "repo://") {

pkg/github/server_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,3 +349,27 @@ func TestResolveEnabledToolsets(t *testing.T) {
349349
})
350350
}
351351
}
352+
353+
func TestCompletionsHandler_RejectsMissingRef(t *testing.T) {
354+
getClient := func(_ context.Context) (*gogithub.Client, error) {
355+
return &gogithub.Client{}, nil
356+
}
357+
handler := CompletionsHandler(getClient)
358+
359+
tests := []struct {
360+
name string
361+
req *mcp.CompleteRequest
362+
}{
363+
{name: "nil request", req: nil},
364+
{name: "nil params", req: &mcp.CompleteRequest{}},
365+
{name: "nil ref", req: &mcp.CompleteRequest{Params: &mcp.CompleteParams{}}},
366+
}
367+
for _, tc := range tests {
368+
t.Run(tc.name, func(t *testing.T) {
369+
result, err := handler(context.Background(), tc.req)
370+
require.Error(t, err)
371+
assert.Nil(t, result)
372+
assert.Contains(t, err.Error(), "missing required parameter: ref")
373+
})
374+
}
375+
}

0 commit comments

Comments
 (0)