Skip to content

chore(packages): bump five packages to their merged Dependabot groups - #1366

Merged
Juliusolsson05 merged 8 commits into
mainfrom
chore/bump-packages-deps-2026-09-27
Sep 27, 2026
Merged

Juliusolsson05 merged 8 commits into
mainfrom
chore/bump-packages-deps-2026-09-27

Conversation

@Juliusolsson05

@Juliusolsson05 Juliusolsson05 commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Bumps five package pointers to the merges of their grouped Dependabot PRs:

Package Pointer Merged PR What it carries
opencode-headless 973ad4e → f566ab9 #17 postcss 8.5.28 (security), @vitest/coverage-v8
agent-transcript-parser 4ad8d9c → 68dbfff #39 fast-uri 3.1.8 (security), coverage, tsx
claude-code-headless 64fd0ea → 728cb49 #65 postcss 8.5.28 (security), coverage, tsx, react 19.3 (dev: tests/examples)
codex-headless d42cc1d → b225d45 #61 postcss 8.5.28 (security), coverage, tsx, undici-types
workflow-mcp b4b98f8 → ef995af #64, then #67 runtime: @openai/codex-sdk 0.144.6 → 0.154.0, @modelcontextprotocol/sdk 1.30.0, zod 4.6.5, acorn 8.18.0; ip-address 10.7.2 (security); dev and GitHub Actions bumps; one test and generated build metadata

For the four headless and parser packages, each package's main is exactly its grouped merge on top of the pointer main pinned. workflow-mcp's range holds two merges:

  1. feat(command-palette): add command descriptions panel #64 (80363d7): standalone/docker/Dockerfile pins libexpat 2.8.4-r0 → 2.8.5-r0, the container image's own OS package. It is not in the desktop app or the root lockfile.
  2. fix(dictation): force the built-in Mac microphone #67 (ef995af): the grouped Dependabot bump. The four headless and parser bumps are dev-only. workflow-mcp carries runtime dependency changes. Each grouped PR had three MERGE-READY reviews and green package CI; workflow-mcp#67 also had a verification pass.

Lockfile

Resynced with npm install --package-lock-only, because the file: package deps embed their trees. It is stable after the merge of origin/main.

Dedupes:

  • packages/agent-transcript-parser/node_modules/{vitest,@vitest/*} is gone: the parser's old ^4.1.10 range did not match the root's hoisted vitest, and the bumped ^4.1.11 does.
  • tsx 4.23.15 at the root now satisfies the packages' ^4.23.13.
  • 31 nested packages/workflow-mcp/node_modules/* entries (rolldown wasm helpers) drop out, matching workflow-mcp's own lockfile change.

⚠ Two app runtime versions move. The app itself declares @modelcontextprotocol/sdk: ^1.29.0 and zod: ^4.4.3. Their hoisted copies, shared with workflow-mcp, now resolve to 1.30.0 and 4.6.5. That is within the app's ranges, but it changes what the app's MCP servers and schemas run on (src/main/userMcp, src/main/externalControlMcp, the workflow host). workflow-mcp#67's reviews found only additive or hardening changes on the MCP SDK and zod surfaces workflow-mcp imports. The app's own imports get their own review here.

No other package or lockfile changes. The complete pointer ranges were checked by review (all five gitlinks equal the named merge commits).

App source fix: required keys lost under zod 4.6 (steering q84)

The first exact-head CI run failed src/main/externalControlMcp/tools.test.ts. The built-in McpServer advertised ac_probe_echo with required: [], while the external Server advertised required: ['payload'].

  • Cause. Under the newly hoisted zod 4.6.5, z.fromJSONSchema turns a recursive $ref property (every z.json() payload) into a lazy schema whose input optionality reports optional. Call validation still rejected {}. Only the re-exported tools/list schema lost required. zod 4.4.3 did not do this.
  • Fix. withDeclaredRequiredKeys in src/main/externalControlMcp/tools.ts re-imposes the descriptor's own required lists on every plain object it describes after conversion. It is a no-op on 4.4.3 and a repair on 4.6.x.
  • Wrappers (steering q92, verification b). The first repair only walked bare objects. z.fromJSONSchema wraps nested objects: an optional one in ZodOptional, a defaulted one in ZodDefault, a nullable one in ZodUnion[object, null] (paired with anyOf), and an array of objects in ZodArray. Their nested required was still lost on the built-in side.
    • c6896e43 and 6c60c8da walk through all four, cloning each with the repaired inner schema so its own checks (an array's min/max) survive.
    • A new test compares both real projections for every shape, and checks that a missing nested payload is still rejected.
    • It is red at d563b05a. Removing the Default, Union or Array branch each turns it red again.
  • Test. Reproduced red at 5f9bf305 with an isolated install of the PR's exact versions: the shared checkout's older zod is why the first local gate passed. It is green after the fix, and the equality assertion is unchanged. z.fromJSONSchema has no other call site in src/.

Gate

CI on this PR, plus locally:

  • npx tsc -b, against an isolated install of the PR's exact lockfile;
  • the workflow-mcp build;
  • the workflow, user-MCP, external-control, provider, conversation and transcript suites.

🤖 Generated with Claude Code

opencode-headless#17 (f566ab9), agent-transcript-parser#39 (68dbfff),
claude-code-headless#65 (728cb49), codex-headless#61 (b225d45): each package's
main is exactly its grouped Dependabot merge on top of the pointer main pins,
so this bump carries dev-dependency updates only (postcss/fast-uri security
updates, vitest coverage, tsx, react, undici-types).

The lockfile is resynced because the file: deps embed the package trees. Its
large deletion is a dedupe: the parser's nested vitest family and tsx existed
only because its old ranges did not match the root's hoisted versions; the
bumped ranges now do, so npm hoists them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Juliusolsson05 Juliusolsson05 added type:chore Maintenance, deps, tests, docs sev:P3 Minor labels Sep 27, 2026
Juliusolsson05 and others added 2 commits September 26, 2026 23:25
…995af)

workflow-mcp#67 (codex-sdk 0.154.0, MCP SDK 1.30.0, zod 4.6.5, acorn
8.18.0, ip-address 10.7.2). Lockfile resynced: the app's own hoisted
@modelcontextprotocol/sdk and zod move to 1.30.0 / 4.6.5 (within the
app's ^ ranges, now shared with the package), and 31 nested
workflow-mcp entries (rolldown wasm helpers) drop out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Juliusolsson05 Juliusolsson05 changed the title chore(packages): bump four packages to their merged Dependabot groups chore(packages): bump five packages to their merged Dependabot groups Sep 27, 2026
Juliusolsson05 and others added 5 commits September 27, 2026 00:00
…emas under zod 4.6

Steering q84: #1366 hoists zod 4.6.5 (shared with workflow-mcp). Its
z.fromJSONSchema turns a recursive $ref property (every z.json() payload)
into a lazy schema whose input optionality reports optional, so McpServer's
tools/list dropped required: ['payload'] for ac_probe_echo while the
external Server still advertised it. Calls were still validated. The
descriptor's required lists are now re-imposed on every object it spells
out after conversion: a no-op on 4.4.3, a repair on 4.6.x.
externalControlMcp/tools.test.ts was red at 5f9bf30 with the PR's
installed versions and is green now, assertion unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rray wrappers

Steering q92 / verification b of #1366: withDeclaredRequiredKeys only
recursed into bare objects. An optional or nullable nested object arrives
as ZodOptional / ZodNullable, and an array of objects as ZodArray, so
their required lists still vanished from the built-in tools/list under
zod 4.6 while the external Server kept them. Calls were validated either
way.

The walk now goes through those wrappers, cloning each with the repaired
inner schema so its own checks survive (an array's min/max). A new test
compares both real projections for an optional nested object and an
array of objects, and asserts that validation still rejects a missing
nested payload. It is red at d563b05, and removing either new branch
turns it red again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…bjects

Manager q92 asked for Optional/Nullable/Default. Probing zod 4.6.5 shows
z.fromJSONSchema turns a nullable object into ZodUnion[object, null]
paired with the schema's anyOf, not ZodNullable, and a defaulted one into
ZodDefault. The walk now repairs each union option against its anyOf
branch and goes through ZodDefault. The unreachable ZodNullable branch is
dropped. The projection test adds a nullable and a defaulted nested
object; removing the Default, Union or Array branch each turns it red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Verification b of #1366: a record of objects still lost the value
object's required list on the built-in side. z.fromJSONSchema turns a
record into ZodPipe(transform -> object whose catchall is the value
schema). The walk now repairs a pipe's output side and an object's
catchall against additionalProperties. The projection test adds a
record of objects; removing either new branch turns it red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Juliusolsson05

Copy link
Copy Markdown
Owner Author

Disposition for verification review b (head 33ebfba)

  • Record values lose required keys: fixed in 33ebfba.
    • withDeclaredRequiredKeys now repairs a record's value schema: the ZodPipe out object and its catchall, projected as additionalProperties.
    • The nested-schema test gains a byKey record of strict objects. It asserts that required: ['payload'] appears under additionalProperties in BOTH real MCP projections.
    • The test was red before the fix. Removing the pipe or catchall branch fails it.

@Juliusolsson05

Copy link
Copy Markdown
Owner Author

READY (W1). Head 33ebfba9. Exact-head CI is green. Every reviewer's latest verdict is MERGE-READY:

  • a: verify2-report-a, covering the q92 and record-value commits;
  • b: verify3-report-b, confirming CI after its code verification in verify2-report-b;
  • c: report-c.

Dispositions for q84, q92 and b's record finding are posted above. merge-gate.sh --member: GATE PASS. The PR is mergeable and clean, so main was not merged in.

Note for the batch: this PR moves the packages/codex-headless gitlink. The app half of #1336, bumping to codex-headless#70, waits for this PR to merge.

@Juliusolsson05
Juliusolsson05 merged commit 31b7a8b into main Sep 27, 2026
2 checks passed
Juliusolsson05 added a commit that referenced this pull request Sep 27, 2026
@Juliusolsson05
Juliusolsson05 deleted the chore/bump-packages-deps-2026-09-27 branch September 27, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

sev:P3 Minor type:chore Maintenance, deps, tests, docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant