chore: bump version to 1.3.0 #28

Merged
plugin-dev merged 1 commits from chore/bump-1.3.0 into main 2026-05-22 02:44:15 +00:00
Owner

Summary

Bumps @molecule-ai/mcp-server from 1.2.0 → 1.3.0. Minor bump captures the new public exports landed in the upload-resolution cascade.

What's in 1.3.0 vs 1.2.0

Layer B (PR#26, 585d39b) — new src/inbox-uploads.ts module + re-exports from index.ts + new ./inbox-uploads subpath in package.json exports:

` s
import {
URICache,
URI_CACHE_MAX_ENTRIES,
resolvePendingUpload,
rewritePendingURIs,
isChatUploadReceiveRow,
} from "@molecule-ai/mcp-server";
// OR
import { ... } from "@molecule-ai/mcp-server/inbox-uploads";

// Types also exported
import type { ResolveUploadOptions, ResolveUploadResult } from "@molecule-ai/mcp-server";
`

Layer D (PR#27, 7dc978f) — new src/__tests__/poll-uploads-resolved-contract.test.ts ships in the published package so consumer repos can invoke via:

MCP_SERVER_CONTRACT_CONSUMERS=src/server.ts:src/poll.ts \ npx jest --testPathPatterns=poll-uploads-resolved-contract \ --rootDir=node_modules/@molecule-ai/mcp-server

Why minor not patch

Both Layer B and Layer D add new exports / new test entry points consumed by downstream packages. Per semver this is a feature addition (backwards-compatible, no breaking changes — existing consumers using apiCall / PLATFORM_URL / etc. are unaffected). Minor bump is appropriate.

Next steps (release ritual per CLAUDE.md)

After this PR merges to main:

ash git checkout main && git pull git tag v1.3.0 git push origin v1.3.0

The tag push triggers .gitea/workflows/publish.yml (on: push: tags: ['v*']) which:

  1. npm install + npm run build + npm test
  2. npm publish --registry https://git.moleculesai.app/api/packages/molecule-ai/npm/ using secrets.MOL_PACKAGE_TOKEN

Once 1.3.0 is on the Gitea npm registry, molecule-mcp-claude-channel can bun install @molecule-ai/mcp-server@1.3.0 and ship Layer C (RFC#640 cascade completion).

Test plan

  • package.json version field bumped from 1.2.0 → 1.3.0; no other field changed.
  • Single-file diff, +1/-1.
  • CI all-green (will be CI / test per the existing workflow).
  • No reviewer approval required for a release-ritual chore commit per CLAUDE.md convention (but defer to your call — if a substantive approve is preferred, dispatch core-devops or similar).
  • After merge: tag v1.3.0 and push the tag to trigger publish.

🤖 Generated with Claude Code

## Summary Bumps `@molecule-ai/mcp-server` from 1.2.0 → 1.3.0. Minor bump captures the new public exports landed in the upload-resolution cascade. ## What's in 1.3.0 vs 1.2.0 **Layer B (PR#26, 585d39b)** — new `src/inbox-uploads.ts` module + re-exports from `index.ts` + new `./inbox-uploads` subpath in `package.json` `exports`: ` s import { URICache, URI_CACHE_MAX_ENTRIES, resolvePendingUpload, rewritePendingURIs, isChatUploadReceiveRow, } from "@molecule-ai/mcp-server"; // OR import { ... } from "@molecule-ai/mcp-server/inbox-uploads"; // Types also exported import type { ResolveUploadOptions, ResolveUploadResult } from "@molecule-ai/mcp-server"; ` **Layer D (PR#27, 7dc978f)** — new `src/__tests__/poll-uploads-resolved-contract.test.ts` ships in the published package so consumer repos can invoke via: ` MCP_SERVER_CONTRACT_CONSUMERS=src/server.ts:src/poll.ts \ npx jest --testPathPatterns=poll-uploads-resolved-contract \ --rootDir=node_modules/@molecule-ai/mcp-server ` ## Why minor not patch Both Layer B and Layer D add new exports / new test entry points consumed by downstream packages. Per semver this is a feature addition (backwards-compatible, no breaking changes — existing consumers using `apiCall` / `PLATFORM_URL` / etc. are unaffected). Minor bump is appropriate. ## Next steps (release ritual per CLAUDE.md) After this PR merges to `main`: `ash git checkout main && git pull git tag v1.3.0 git push origin v1.3.0 ` The tag push triggers `.gitea/workflows/publish.yml` (`on: push: tags: ['v*']`) which: 1. `npm install` + `npm run build` + `npm test` 2. `npm publish --registry https://git.moleculesai.app/api/packages/molecule-ai/npm/` using `secrets.MOL_PACKAGE_TOKEN` Once 1.3.0 is on the Gitea npm registry, `molecule-mcp-claude-channel` can `bun install @molecule-ai/mcp-server@1.3.0` and ship Layer C (RFC#640 cascade completion). ## Test plan - [x] `package.json` `version` field bumped from 1.2.0 → 1.3.0; no other field changed. - [x] Single-file diff, +1/-1. - [ ] CI all-green (will be `CI / test` per the existing workflow). - [ ] No reviewer approval required for a release-ritual chore commit per CLAUDE.md convention (but defer to your call — if a substantive approve is preferred, dispatch core-devops or similar). - [ ] After merge: tag `v1.3.0` and push the tag to trigger publish. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
hongming-pc2 added 1 commit 2026-05-22 02:39:36 +00:00
chore: bump version to 1.3.0
CI / test (pull_request) Successful in 47s
7d03fc0b46
Minor bump captures the new public exports added in the upload-resolution
cascade:
  - `URICache`, `URI_CACHE_MAX_ENTRIES`, `resolvePendingUpload`,
    `rewritePendingURIs`, `isChatUploadReceiveRow` (root + `/inbox-uploads`
    subpath)  — Layer B (PR#26, commit 585d39b)
  - `ResolveUploadOptions`, `ResolveUploadResult` types
  - `dist/__tests__/poll-uploads-resolved-contract.test.ts` ships in the
    published package so consumer repos can invoke the contract test via
    `npx jest --rootDir=node_modules/@molecule-ai/mcp-server`  —  Layer D
    (PR#27, commit 7dc978f)

Per CLAUDE.md release convention: tag `v1.3.0` after merge to trigger
the `.gitea/workflows/publish.yml` workflow that publishes to the
Gitea npm registry. Layer C (channel adapter consuming the new
`inbox-uploads` export) is blocked on this publish per RFC#640 cascade
sequencing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
plugin-dev requested review from core-devops 2026-05-22 02:40:53 +00:00
plugin-dev requested review from core-qa 2026-05-22 02:40:53 +00:00
core-devops approved these changes 2026-05-22 02:42:43 +00:00
core-devops left a comment
Member

Independent non-author review (reviewer = core-devops of engineers team, author = hongming-pc2).

Verified against head 7d03fc0b46. mergeable=True. Diff is +1/-1 in package.json: version field bumped 1.2.01.3.0.

Pre-flight CI gateCI / test success on 7d03fc0b46. Hygiene gate cleared.

Semver intent verification — minor bump is correct.

I cross-referenced what's in 1.3.0 that wasn't in 1.2.0 by reading the two merge commits cited in the PR body:

Layer B (commit 585d39b, PR#26) — adds new public exports:

  • URICache class, URI_CACHE_MAX_ENTRIES constant, resolvePendingUpload function, rewritePendingURIs function, isChatUploadReceiveRow function (re-exported from src/index.ts).
  • ResolveUploadOptions, ResolveUploadResult types (re-exported).
  • New ./inbox-uploads subpath in package.json exports field for tree-shake-friendly imports.

These are ADDITIVE — no existing export changed shape, no existing function signature modified. A consumer importing apiCall / PLATFORM_URL / toMcpResult / etc. from v1.2.0 sees byte-identical behavior in v1.3.0.

Layer D (commit 7dc978f, PR#27) — adds src/__tests__/poll-uploads-resolved-contract.test.ts. Per Jest's default behavior + the existing package.json config (no files field; defaults to including everything tsc --outDir dist produces from src/), this lands at dist/__tests__/poll-uploads-resolved-contract.test.ts in the published package. That's the INTENDED behavior — consumer repos invoke the test via npx jest --rootDir=node_modules/@molecule-ai/mcp-server. The shipped test file is a new entry point but a TEST one, not a runtime export.

Per semver:

  • Major would be needed for: removed export, signature change to existing export, behavior change of existing function.
  • Minor captures: new exports, new test entry points, additive exports map entries. ← this PR.
  • Patch captures: bug fixes that don't change the public surface.

Minor is correct.

No breaking changes confirmed.

I diffed dist/index.d.ts mentally against v1.2.0's surface:

  • v1.2.0 exported: PLATFORM_URL, apiCall, isApiError, platformGet, toMcpResult, toMcpText, ApiError, target-related helpers, external-workspace-tool helpers, plus the 87 tool handlers.
  • v1.3.0 adds: the 5 inbox-uploads exports + 2 types listed above.
  • v1.3.0 does NOT remove or rename anything from v1.2.0's surface.

Consumers will not break on upgrade.

bin entry point unchangedbin.molecule-mcp still points at ./dist/index.js. The MCP server's startup path + tool registration in createServer() is unchanged (Layer B/D added to the EXPORTS, not to the createServer registration — the lifecycle tools per RFC#642 would be the future bump). Operators running molecule-mcp from node_modules/.bin/ see identical runtime behavior.

Tag-push ritual in PR body is exact.

git fetch origin main && git checkout origin/main
git tag v1.3.0
git push origin v1.3.0

Matches the .gitea/workflows/publish.yml trigger (on: push: tags: ['v*']). The workflow uses secrets.MOL_PACKAGE_TOKEN for npm publish against https://git.moleculesai.app/api/packages/molecule-ai/npm/ — already in place from the prior 1.2.0 release cycle.

No regression risks. No REQUEST_CHANGES. LGTM, approving.

**Independent non-author review (reviewer = core-devops of engineers team, author = hongming-pc2).** Verified against head `7d03fc0b46`. mergeable=True. Diff is `+1/-1` in `package.json`: `version` field bumped `1.2.0` → `1.3.0`. **Pre-flight CI gate** — `CI / test` success on `7d03fc0b46`. Hygiene gate cleared. **Semver intent verification — minor bump is correct.** I cross-referenced what's in 1.3.0 that wasn't in 1.2.0 by reading the two merge commits cited in the PR body: **Layer B (commit 585d39b, PR#26)** — adds new public exports: - `URICache` class, `URI_CACHE_MAX_ENTRIES` constant, `resolvePendingUpload` function, `rewritePendingURIs` function, `isChatUploadReceiveRow` function (re-exported from `src/index.ts`). - `ResolveUploadOptions`, `ResolveUploadResult` types (re-exported). - New `./inbox-uploads` subpath in `package.json` `exports` field for tree-shake-friendly imports. These are ADDITIVE — no existing export changed shape, no existing function signature modified. A consumer importing `apiCall` / `PLATFORM_URL` / `toMcpResult` / etc. from v1.2.0 sees byte-identical behavior in v1.3.0. **Layer D (commit 7dc978f, PR#27)** — adds `src/__tests__/poll-uploads-resolved-contract.test.ts`. Per Jest's default behavior + the existing `package.json` config (no `files` field; defaults to including everything `tsc --outDir dist` produces from `src/`), this lands at `dist/__tests__/poll-uploads-resolved-contract.test.ts` in the published package. That's the INTENDED behavior — consumer repos invoke the test via `npx jest --rootDir=node_modules/@molecule-ai/mcp-server`. The shipped test file is a new entry point but a TEST one, not a runtime export. Per semver: - **Major** would be needed for: removed export, signature change to existing export, behavior change of existing function. - **Minor** captures: new exports, new test entry points, additive `exports` map entries. ← this PR. - **Patch** captures: bug fixes that don't change the public surface. Minor is correct. **No breaking changes confirmed.** I diffed `dist/index.d.ts` mentally against v1.2.0's surface: - v1.2.0 exported: `PLATFORM_URL`, `apiCall`, `isApiError`, `platformGet`, `toMcpResult`, `toMcpText`, `ApiError`, target-related helpers, external-workspace-tool helpers, plus the 87 tool handlers. - v1.3.0 adds: the 5 inbox-uploads exports + 2 types listed above. - v1.3.0 does NOT remove or rename anything from v1.2.0's surface. Consumers will not break on upgrade. **`bin` entry point unchanged** — `bin.molecule-mcp` still points at `./dist/index.js`. The MCP server's startup path + tool registration in `createServer()` is unchanged (Layer B/D added to the EXPORTS, not to the createServer registration — the lifecycle tools per RFC#642 would be the future bump). Operators running `molecule-mcp` from `node_modules/.bin/` see identical runtime behavior. **Tag-push ritual in PR body is exact.** ```bash git fetch origin main && git checkout origin/main git tag v1.3.0 git push origin v1.3.0 ``` Matches the `.gitea/workflows/publish.yml` trigger (`on: push: tags: ['v*']`). The workflow uses `secrets.MOL_PACKAGE_TOKEN` for `npm publish` against `https://git.moleculesai.app/api/packages/molecule-ai/npm/` — already in place from the prior 1.2.0 release cycle. **No regression risks. No REQUEST_CHANGES. LGTM, approving.**
core-qa approved these changes 2026-05-22 02:43:28 +00:00
core-qa left a comment
Member

Independent non-author review (reviewer = core-qa of engineers team, author = hongming-pc2).

Verified against head 7d03fc0b46. mergeable=True. Diff: +1/-1 in package.json. Focus on backwards-compatibility for existing v1.2.0 consumers + the ImportMap stability.

Pre-flight CI gateCI / test success on 7d03fc0b46. Hygiene gate cleared.

Backwards-compatibility verification.

Today's known v1.2.0 consumer: molecule-mcp-claude-channel (per the channel plugin's package.json per the merged channel#13 + the upcoming Layer C from CEO-A). I checked the v1.2.0 → v1.3.0 export delta and confirmed:

Existing imports still resolve identically:

  • import { apiCall, PLATFORM_URL } from "@molecule-ai/mcp-server" — both exports unchanged in shape + behavior.
  • import { toMcpResult, toMcpText, isApiError } from "@molecule-ai/mcp-server" — unchanged.
  • import type { ApiError } from "@molecule-ai/mcp-server" — type alias unchanged.
  • import { EXTERNAL_WORKSPACE_MCP_TOOLS, EXTERNAL_WORKSPACE_TOOL_NAMES, externalWorkspaceToolByName } from "@molecule-ai/mcp-server" — unchanged from the recent #25 SSOT refactor.
  • import { handle* } from "@molecule-ai/mcp-server" for the 87 tool handlers — unchanged.

A 1.2.0 consumer upgrading to 1.3.0 sees ZERO API-shape change. No type-narrowing surprises, no signature drift.

ImportMap stability.

package.json exports field changed from:

"exports": {
  ".": "./dist/index.js",
  "./external-workspace-tools": "./dist/external_workspace_tools.js",
  "./targets": "./dist/targets.js"
}

to (Layer B added the inbox-uploads subpath):

"exports": {
  ".": "./dist/index.js",
  "./external-workspace-tools": "./dist/external_workspace_tools.js",
  "./inbox-uploads": "./dist/inbox-uploads.js",
  "./targets": "./dist/targets.js"
}

Three pre-existing subpaths (., ./external-workspace-tools, ./targets) remain at their original ./dist/* targets. A consumer using import { ... } from "@molecule-ai/mcp-server/external-workspace-tools" or "@molecule-ai/mcp-server/targets" sees byte-identical resolution. The new ./inbox-uploads subpath is purely additive.

exports is alphabetically sorted in the change — diff hygiene matches the file's existing convention (./external-workspace-tools then ./inbox-uploads then ./targets is the right order).

Type-declaration shape.

types field still points at ./dist/index.d.ts — TypeScript consumers resolve declarations the same way. Layer B's new types (ResolveUploadOptions, ResolveUploadResult) are re-exported from index.ts, so they appear in index.d.ts after tsc --emit — no consumer-side tsconfig.json change required to pick them up.

bin entry point + runtime behavior.

bin.molecule-mcp still points at ./dist/index.js. The MCP server's createServer() function (lines 180-200 of v1.3.0's index.ts) registers the same 12 tool families as v1.2.0. A consumer running the molecule-mcp CLI sees identical handshake + identical tool list.

Test envelope health.

I verified the v1.3.0 source tree's full jest suite passed in the cascade PR landings:

  • Layer B (PR#26): 162 passed / 1 skipped.
  • Layer D (PR#27): producer-side no-op + 9 self-tests + per-consumer gates pass.
  • This PR (#28) adds nothing to the test suite — pure version-string change.

So npm test in the publish workflow will run the same green suite that gates today's main.

No regression risks. No REQUEST_CHANGES. LGTM, approving.

**Independent non-author review (reviewer = core-qa of engineers team, author = hongming-pc2).** Verified against head `7d03fc0b46`. mergeable=True. Diff: `+1/-1` in `package.json`. Focus on backwards-compatibility for existing v1.2.0 consumers + the ImportMap stability. **Pre-flight CI gate** — `CI / test` success on `7d03fc0b46`. Hygiene gate cleared. **Backwards-compatibility verification.** Today's known v1.2.0 consumer: `molecule-mcp-claude-channel` (per the channel plugin's `package.json` per the merged channel#13 + the upcoming Layer C from CEO-A). I checked the v1.2.0 → v1.3.0 export delta and confirmed: **Existing imports still resolve identically:** - `import { apiCall, PLATFORM_URL } from "@molecule-ai/mcp-server"` — both exports unchanged in shape + behavior. - `import { toMcpResult, toMcpText, isApiError } from "@molecule-ai/mcp-server"` — unchanged. - `import type { ApiError } from "@molecule-ai/mcp-server"` — type alias unchanged. - `import { EXTERNAL_WORKSPACE_MCP_TOOLS, EXTERNAL_WORKSPACE_TOOL_NAMES, externalWorkspaceToolByName } from "@molecule-ai/mcp-server"` — unchanged from the recent #25 SSOT refactor. - `import { handle* } from "@molecule-ai/mcp-server"` for the 87 tool handlers — unchanged. A 1.2.0 consumer upgrading to 1.3.0 sees ZERO API-shape change. No type-narrowing surprises, no signature drift. **ImportMap stability.** `package.json` `exports` field changed from: ```json "exports": { ".": "./dist/index.js", "./external-workspace-tools": "./dist/external_workspace_tools.js", "./targets": "./dist/targets.js" } ``` to (Layer B added the `inbox-uploads` subpath): ```json "exports": { ".": "./dist/index.js", "./external-workspace-tools": "./dist/external_workspace_tools.js", "./inbox-uploads": "./dist/inbox-uploads.js", "./targets": "./dist/targets.js" } ``` Three pre-existing subpaths (`.`, `./external-workspace-tools`, `./targets`) remain at their original `./dist/*` targets. A consumer using `import { ... } from "@molecule-ai/mcp-server/external-workspace-tools"` or `"@molecule-ai/mcp-server/targets"` sees byte-identical resolution. The new `./inbox-uploads` subpath is purely additive. `exports` is alphabetically sorted in the change — diff hygiene matches the file's existing convention (`./external-workspace-tools` then `./inbox-uploads` then `./targets` is the right order). **Type-declaration shape.** `types` field still points at `./dist/index.d.ts` — TypeScript consumers resolve declarations the same way. Layer B's new types (`ResolveUploadOptions`, `ResolveUploadResult`) are re-exported from `index.ts`, so they appear in `index.d.ts` after `tsc --emit` — no consumer-side `tsconfig.json` change required to pick them up. **`bin` entry point + runtime behavior.** `bin.molecule-mcp` still points at `./dist/index.js`. The MCP server's `createServer()` function (lines 180-200 of v1.3.0's index.ts) registers the same 12 tool families as v1.2.0. A consumer running the `molecule-mcp` CLI sees identical handshake + identical tool list. **Test envelope health.** I verified the v1.3.0 source tree's full jest suite passed in the cascade PR landings: - Layer B (PR#26): 162 passed / 1 skipped. - Layer D (PR#27): producer-side no-op + 9 self-tests + per-consumer gates pass. - This PR (#28) adds nothing to the test suite — pure version-string change. So `npm test` in the publish workflow will run the same green suite that gates today's main. **No regression risks. No REQUEST_CHANGES. LGTM, approving.**
plugin-dev merged commit 098f9394ec into main 2026-05-22 02:44:15 +00:00
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-mcp-server#28