Skip to content

chore(security): add dependabot config + close 14 open advisories#348

Merged
rohitg00 merged 1 commit into
mainfrom
chore/dependabot-config-and-security-fixes
May 13, 2026
Merged

chore(security): add dependabot config + close 14 open advisories#348
rohitg00 merged 1 commit into
mainfrom
chore/dependabot-config-and-security-fixes

Conversation

@rohitg00
Copy link
Copy Markdown
Owner

@rohitg00 rohitg00 commented May 13, 2026

Summary

  • Adds .github/dependabot.yml (didn't exist before) covering all 5 npm manifests + github-actions, weekly cadence, grouped minor/patch.
  • Bumps next in website/ from ^16.2.4^16.2.6 to close 13 open advisories spanning middleware/proxy bypass, SSRF on WebSocket upgrades, DoS via connection exhaustion, CSP-nonce XSS, image-opt DoS, RSC cache poisoning, beforeInteractive XSS, and segment-prefetch routes.
  • Pins postcss to ^8.5.10 (resolves to 8.5.14) via overrides in website/package.json to close the XSS-via-unescaped-</style> advisory. postcss is transitive, so the override is the cleanest forced floor.

Closes

Closes the 14 open Dependabot alerts on default branch:

Dependabot scope

Ecosystem Path Cadence Notes
npm / weekly grouped minor/patch
npm /website weekly grouped minor/patch
npm /integrations/openclaw weekly
npm /integrations/pi weekly
npm /integrations/filesystem-watcher weekly
github-actions / weekly grouped minor/patch

Verification

  • npm audit --omit=dev in website/0 vulnerabilities.
  • npm run build in website/ clean on Next 16.2.6 (Turbopack, 5 static pages generated).
  • TypeScript pass clean.

Test plan

  • CI green on the PR
  • After merge, GitHub Security tab shows 0 open Dependabot alerts
  • Dependabot starts running weekly on Monday 06:00 UTC against all 6 update streams

Summary by CodeRabbit

Chores

  • Updated Next.js framework to version 16.2.6
  • Configured automated weekly dependency update checks for npm packages and GitHub Actions workflows with customizable pull request limits, labels, and custom commit message prefixes across the repository root, website directory, and integration subdirectories
  • Applied PostCSS version pinning

Review Change Stack

….5.10

- Add .github/dependabot.yml covering npm (root, website, 3 integrations) +
  github-actions. Weekly cadence, grouped minor/patch, scoped commit prefixes.
- Bump website next ^16.2.4 → ^16.2.6: closes 13 open advisories
  (middleware/proxy bypass, SSRF, DoS, CSP-nonce XSS, image-opt DoS, cache
  poisoning, beforeInteractive XSS, segment-prefetch routes).
- Pin website postcss → ^8.5.10 via overrides: closes XSS via unescaped
  </style> in CSS stringify output (resolves to 8.5.14).

Verified:
- `npm audit --omit=dev` → 0 vulnerabilities.
- `npm run build` clean on Next 16.2.6 (Turbopack).
@vercel
Copy link
Copy Markdown

vercel Bot commented May 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agentmemory Ready Ready Preview, Comment May 13, 2026 7:12pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

📝 Walkthrough

Walkthrough

This PR adds automated dependency management to the repository by introducing a Dependabot configuration that schedules weekly updates for npm packages across the root, website, and integration directories, plus GitHub Actions, with concrete version updates to the website's Next.js and postcss dependencies.

Changes

Dependency Automation Setup

Layer / File(s) Summary
Dependabot npm targets
.github/dependabot.yml
Weekly npm dependency updates are scheduled for the repository root, /website, and three integration subdirectories (/integrations/openclaw, /integrations/pi, /integrations/filesystem-watcher), each configured with PR limits, labels, grouped minor/patch updates, and deps(...) commit-message prefixes.
GitHub Actions automation
.github/dependabot.yml
Weekly GitHub Actions updates are enabled for the repository root with PR limits, labels, a ci(deps) commit-message prefix, and grouped minor/patch update types.
Website package dependencies
website/package.json
The next dependency is updated to ^16.2.6, and a new overrides section pins postcss to ^8.5.10.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Automation hops along the way,
Dependencies update every Monday!
Root, website, actions aligned,
Postcss pinned, no conflicts to find.
Dependabot brings order and peace! 🚀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and accurately summarizes the primary changes: adding Dependabot configuration and resolving security advisories through dependency updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/dependabot-config-and-security-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.github/dependabot.yml (1)

44-90: ⚡ Quick win

Consider grouping minor/patch updates for integration directories.

The three integration configurations (openclaw, pi, filesystem-watcher) lack the groups section that is present in the root, website, and github-actions configurations. This inconsistency means minor and patch updates will create separate PRs for integrations instead of being grouped together, potentially increasing PR volume.

For consistency and to reduce PR noise, consider adding the same grouping strategy:

📦 Proposed addition of groups to integration configs

For each integration block (openclaw, pi, filesystem-watcher), add after the commit-message section:

     commit-message:
       prefix: deps(openclaw)
       include: scope
+    groups:
+      minor-and-patch:
+        update-types:
+          - minor
+          - patch
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/dependabot.yml around lines 44 - 90, The three Dependabot npm
entries for the integration directories (package-ecosystem: npm, directory:
/integrations/openclaw, /integrations/pi, /integrations/filesystem-watcher) are
missing a groups section; add the same grouping strategy used elsewhere so
minor/patch updates are consolidated (e.g., add a groups entry after
commit-message that groups "all-minor-patch" for type: dependency and
update-types: [version-update:semver-minor, version-update:semver-patch] and any
required patterns), ensuring each integration block uses identical group names
and rules to match the root/website/github-actions configs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/dependabot.yml:
- Around line 44-90: The three Dependabot npm entries for the integration
directories (package-ecosystem: npm, directory: /integrations/openclaw,
/integrations/pi, /integrations/filesystem-watcher) are missing a groups
section; add the same grouping strategy used elsewhere so minor/patch updates
are consolidated (e.g., add a groups entry after commit-message that groups
"all-minor-patch" for type: dependency and update-types:
[version-update:semver-minor, version-update:semver-patch] and any required
patterns), ensuring each integration block uses identical group names and rules
to match the root/website/github-actions configs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bb57d519-713b-417c-8536-b3b204aadca4

📥 Commits

Reviewing files that changed from the base of the PR and between 87fae50 and 5b4a341.

⛔ Files ignored due to path filters (1)
  • website/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • .github/dependabot.yml
  • website/package.json

@rohitg00 rohitg00 merged commit 96c0ed0 into main May 13, 2026
5 checks passed
@rohitg00 rohitg00 deleted the chore/dependabot-config-and-security-fixes branch May 13, 2026 19:27
rohitg00 added a commit that referenced this pull request May 15, 2026
…loy templates + Gemini GA bumps (#383)

* chore(release): v0.9.13 — env-example discovery + CJK tokenizer + load
harness + deploy templates + Gemini GA bumps + 14 advisories closed

Six PRs landed since v0.9.12:

- #372 .env.example discovery (this commit) — repo-root template + `init`
  CLI command + CI sync-checker
- #362 CJK BM25 tokenizer (`@node-rs/jieba` + tiny-segmenter + Hangul)
- #363 `benchmark/load-100k.ts` harness with p50/p90/p99 + per-release
  results dir
- #361 one-click deploy templates for fly.io / Railway / Render / Coolify
  (multi-stage Dockerfile, `iiidev/iii` base, `gosu` privilege drop,
  first-boot HMAC, verified end-to-end on fly.io)
- #364 Python ecosystem via `iii-sdk` example (replaces closed PR #360)
- #370 Gemini GA bumps (LLM default → gemini-2.5-flash, embedding →
  gemini-embedding-001 + L2-norm + 768 dims)

Plus 14 open Dependabot advisories closed in PR #348 via Next.js → 16.2.6
and PostCSS → 8.5.10 overrides.

Bumped:

- src/version.ts: VERSION 0.9.12 → 0.9.13
- package.json: 0.9.12 → 0.9.13, files += ".env.example", build script
  copies .env.example into dist/
- packages/mcp/package.json: 0.9.12 → 0.9.13 (lockstep with main)
- plugin/.claude-plugin/plugin.json, plugin/.codex-plugin/plugin.json:
  0.9.12 → 0.9.13
- src/types.ts: ExportData.version union extended with "0.9.13"
- src/functions/export-import.ts: supportedVersions Set extended
- test/export-import.test.ts: expected version updated

New surface:

- .env.example at repo root — every env var read by src/ documented in
  one place, grouped by surface (LLM, embedding, auth, search tuning,
  behaviour flags, CLI runtime, ports, iii engine pin, Claude Code
  bridge, Obsidian export). Every line commented out by default so the
  file is a template.
- agentmemory init — copies bundled .env.example to ~/.agentmemory/.env
  if absent, refuses to overwrite, prints a diff command. Wired into
  CLI dispatch + help block.
- scripts/check-env-example.mjs — walks src/ for env-read patterns,
  fails CI on drift in either direction. Plugged into ci.yml after
  npm test. Initial bootstrap: 60 keys in sync.

Verified: npm test 903/903, npm run build clean, init smoke pass
(creates ~/.agentmemory/.env on first run, refuses overwrite on second).

* fix(init): atomic copy via COPYFILE_EXCL; address CodeRabbit review

Two valid findings from the CodeRabbit pass on PR #383.

1. `runInit` race between existsSync(target) + copyFile(template, target).
   A parallel `agentmemory init` (or any other process touching
   ~/.agentmemory/.env between the two calls) would silently overwrite
   the config the operator just wrote. Switch to a single atomic
   `copyFile(template, target, fsConstants.COPYFILE_EXCL)` and treat
   the EEXIST error as the "already configured" signal — same warning
   + diff hint as before, but the check + copy now happen in one
   syscall so they cannot race. Other failure paths still surface as
   process exit 1.

2. Comment on `scripts/check-env-example.mjs::walk` claimed it matched
   ".ts / .mts / .mjs" but the regex also matched ".js". Rewrote the
   comment to match the regex (".ts / .mts / .mjs / .js"). Same comment
   pass: noted that test/ never enters because the walk is rooted at
   src/, not because of an explicit skip.

Skipped findings:

- WHAT-style comment on `findEnvExample` — kept a one-liner explaining
  the package-vs-source priority since both paths are real; reduced
  the block from 4 lines to 2 instead of removing it entirely.
- "Add trailing newline to .env.example" — file already ends with `\n`
  (verified `tail -c 5` shows `tion\n`).

Verified locally:
- `npm run build` clean.
- `npm test` 903 / 903 pass.
- First `agentmemory init` against a clean HOME creates the file.
- Second init against the same HOME hits EEXIST and prints the
  "leaving it untouched" warning + diff hint without overwriting.
- `node scripts/check-env-example.mjs` — in sync (60 keys).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant