diff --git a/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml b/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000..c8529498f --- /dev/null +++ b/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,26 @@ +name: Bug report +description: Report a reproducible codex-lsp bug. +title: "[bug]: " +labels: ["bug"] +body: + - type: textarea + id: summary + attributes: + label: Summary + description: What happened? + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproduction + description: Exact steps, config, command output, and affected language server. + validations: + required: true + - type: input + id: version + attributes: + label: Version + placeholder: 0.1.0 + validations: + required: true diff --git a/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml b/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 000000000..b9d3af725 --- /dev/null +++ b/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,19 @@ +name: Feature request +description: Propose a focused codex-lsp improvement. +title: "[feature]: " +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: Problem + description: What workflow should improve? + validations: + required: true + - type: textarea + id: proposal + attributes: + label: Proposal + description: What should codex-lsp do? + validations: + required: true diff --git a/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml b/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml new file mode 100644 index 000000000..f8d6415c2 --- /dev/null +++ b/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml @@ -0,0 +1,56 @@ +name: ci + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + test: + name: test (${{ matrix.os }} ยท node ${{ matrix.node }}) + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + node: ["20", "22"] + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Setup Node ${{ matrix.node }} + uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node }} + cache: npm + + - name: Bootstrap lsp-tools-mcp submodule + shell: bash + run: | + cd packages/lsp-tools-mcp + npm ci + npm run build + + - name: Install dependencies + run: npm ci + + - name: Check + run: npm run check + + - name: Unit tests + run: npm test + + - name: Package smoke + run: npm pack --dry-run diff --git a/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml b/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml new file mode 100644 index 000000000..125a45587 --- /dev/null +++ b/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml @@ -0,0 +1,60 @@ +name: publish + +on: + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +permissions: + contents: read + id-token: write + +jobs: + publish: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + submodules: recursive + + - name: Setup Node 22 + uses: actions/setup-node@v6 + with: + node-version: "22" + registry-url: https://registry.npmjs.org + cache: npm + + - name: Bootstrap lsp-tools-mcp submodule + shell: bash + run: | + cd packages/lsp-tools-mcp + npm ci + npm run build + + - name: Install dependencies + run: npm ci + + - name: Check + run: npm run check + + - name: Unit tests + run: npm test + + - name: Package smoke + run: npm pack --dry-run + + - name: Publish to npm + run: | + if [ -z "$NODE_AUTH_TOKEN" ]; then + echo "NODE_AUTH_TOKEN is not configured; skipping npm publish." + exit 0 + fi + npm publish --access public --provenance + env: + NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}