From 6e1d9a53e05b04305ee1a4cb3257eeb8ea48e85f Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Sun, 12 Jul 2026 10:26:13 +0800 Subject: [PATCH] Fix launch readiness automation --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 12 +++++------- .release-please-manifest.json | 3 +++ SECURITY.md | 2 +- tests/integration/configIntegration.test.ts | 6 +++++- tests/integration/serverIntegration.test.ts | 11 +++++++---- 6 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 .release-please-manifest.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e5d3f5733..17b54b7f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,7 +89,7 @@ jobs: node-version: 22 cache: npm - run: npm ci - - run: npx vitest run --reporter=verbose --reporter=junit --outputFile.junit=test-results.xml + - run: npm test -- --reporter=verbose --reporter=junit --outputFile.junit=test-results.xml - uses: actions/upload-artifact@v4 if: always() with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a9f16727b..d7449e878 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,12 +28,12 @@ jobs: if: needs.release-please.outputs.release_created == 'true' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: - node-version: 22 - cache: npm + node-version: 24 + package-manager-cache: false registry-url: https://registry.npmjs.org - run: npm ci @@ -42,6 +42,4 @@ jobs: run: npm run build - name: Publish - run: npm publish --provenance --access public - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npm publish --access public diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 000000000..466df71c8 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.1.0" +} diff --git a/SECURITY.md b/SECURITY.md index 8db9c9334..aba1525d9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,7 +8,7 @@ Security fixes are provided for the latest published version of REA. Upgrade to Do not disclose vulnerabilities, proof-of-concept exploits, credentials, private binaries, or Hopper documents in a public issue. -If private vulnerability reporting is available in the repository's **Security** tab, use **Report a vulnerability**. Otherwise, open a minimal issue asking the maintainer to establish a private contact channel; include no sensitive technical details in that issue. +Use **Report a vulnerability** in the repository's **Security** tab to submit the report privately. Do not open a public issue to request a private contact channel. Include the affected REA version, macOS and Hopper versions, impact, reproduction conditions, and any suggested mitigation in the private report. Remove credentials, proprietary binaries, Hopper documents, socket capability tokens, and unrelated local paths from logs or examples. diff --git a/tests/integration/configIntegration.test.ts b/tests/integration/configIntegration.test.ts index 893f6e3f5..57336ca63 100644 --- a/tests/integration/configIntegration.test.ts +++ b/tests/integration/configIntegration.test.ts @@ -25,7 +25,11 @@ describe("configuration parsing integration", () => { if (!result.ok) throw new Error("unreachable"); expect(result.value.hopperTargetPath).toBe("/usr/bin/true"); expect(result.value.hopperTargetKind).toBe("executable"); - expect(result.value.hopperLoaderArgs).toEqual(["-l", "Mach-O", "--aarch64"]); + expect(result.value.hopperLoaderArgs).toEqual([ + "-l", + "Mach-O", + "--aarch64", + ]); }); it("rejects target kind values outside the enum", () => { diff --git a/tests/integration/serverIntegration.test.ts b/tests/integration/serverIntegration.test.ts index 4fa247382..9d3bd7c66 100644 --- a/tests/integration/serverIntegration.test.ts +++ b/tests/integration/serverIntegration.test.ts @@ -82,10 +82,13 @@ describe("full MCP integration with multi-tool sequences", () => { }); it("preserves the complete 42-tool inventory with a session", async () => { - const session = new BinarySession((_path) => ({ - callTool: () => Promise.resolve(ok(null)), - close: () => Promise.resolve(), - } satisfies BinaryClient)); + const session = new BinarySession( + (_path) => + ({ + callTool: () => Promise.resolve(ok(null)), + close: () => Promise.resolve(), + }) satisfies BinaryClient, + ); const server = createServer( { callTool: () => Promise.resolve(ok(null)) }, session,