Files
fusion/plugins/fusion-plugin-roadmap
gsxdsm 8bc3d7b0a5 FN-6042: raise dependency security floors
Harden dependency floors and update the Vitest toolchain to patched releases.

- upgrade workspace vitest and @vitest/coverage-v8 dependencies to the 4.1 line across packages and plugins
- pin transitive protobufjs via pnpm overrides and lockfile updates to patched versions
- adapt Vitest configs, engine test helpers, and security-floor coverage for the new dependency baselines
- add the published CLI changeset and related workspace/package metadata updates included in the task branch

Files changed:
 .changeset/fn-6042-security-dependencies.md        |   5 +
 AGENTS.md                                          |   4 +
 Dockerfile                                         |   3 +
 docs/PLUGIN_AUTHORING.md                           |   2 -
 package.json                                       |   3 +-
 packages/cli/package.json                          |   4 +-
 packages/cli/vitest.config.ts                      |   2 +-
 packages/core/package.json                         |   4 +-
 packages/core/vitest.config.ts                     |   2 +-
 packages/dashboard/app/test/mockApi.ts             |   4 +-
 packages/dashboard/package.json                    |   4 +-
 packages/dashboard/vitest.config.ts                |   2 +-
 packages/desktop/package.json                      |   4 +-
 packages/desktop/vitest.config.ts                  |   2 +-
 packages/droid-cli/package.json                    |   2 +-
 packages/droid-cli/vitest.config.ts                |   2 +-
 packages/engine/package.json                       |   4 +-
 .../engine/src/__tests__/executor-test-helpers.ts  |  29 +-
 .../engine/src/__tests__/gridlock-detector.test.ts |   5 +-
 .../src/__tests__/heartbeat-scheduler.test.ts      |   3 +-
 packages/engine/src/__tests__/scheduler.test.ts    |  24 +-
 packages/engine/src/__tests__/self-healing.test.ts |   5 +
 packages/engine/tsconfig.json                      |   3 +-
 packages/engine/vitest.config.ts                   |  10 +-
 packages/i18n/package.json                         |   2 +-
 packages/i18n/vitest.config.ts                     |   7 +
 packages/mobile/package.json                       |   2 +-
 packages/mobile/vitest.config.ts                   |   2 +-
 packages/pi-claude-cli/package.json                |   2 +-
 packages/pi-claude-cli/vitest.config.ts            |   2 +-
 packages/pi-llama-cpp/package.json                 |   2 +-
 packages/pi-llama-cpp/vitest.config.ts             |   2 +-
 packages/plugin-sdk/package.json                   |   2 +-
 packages/plugin-sdk/vitest.config.ts               |   2 +-
 .../examples/fusion-plugin-auto-label/package.json |   2 +-
 .../fusion-plugin-auto-label/vitest.config.ts      |   2 +-
 .../examples/fusion-plugin-ci-status/package.json  |   2 +-
 .../fusion-plugin-ci-status/vitest.config.ts       |   2 +-
 .../fusion-plugin-notification/package.json        |   2 +-
 .../fusion-plugin-notification/vitest.config.ts    |   2 +-
 .../fusion-plugin-settings-demo/package.json       |   2 +-
 .../fusion-plugin-settings-demo/vitest.config.ts   |   2 +-
 plugins/fusion-plugin-acp-runtime/package.json     |   2 +-
 plugins/fusion-plugin-acp-runtime/vitest.config.ts |   2 +-
 plugins/fusion-plugin-agent-browser/package.json   |   2 +-
 .../fusion-plugin-agent-browser/vitest.config.ts   |   2 +-
 .../fusion-plugin-cli-printing-press/package.json  |   2 +-
 .../vitest.config.ts                               |   2 +-
 .../package.json                                   |   2 +-
 .../src/__tests__/orchestrator-live-output.test.ts |   4 +-
 .../vitest.config.ts                               |   2 +-
 plugins/fusion-plugin-cursor-runtime/package.json  |   4 +-
 .../fusion-plugin-dependency-graph/package.json    |   4 +-
 .../vitest.config.ts                               |   2 +-
 plugins/fusion-plugin-droid-runtime/package.json   |   2 +-
 .../fusion-plugin-droid-runtime/vitest.config.ts   |   2 +-
 plugins/fusion-plugin-even-cards/package.json      |   2 +-
 plugins/fusion-plugin-even-cards/vitest.config.ts  |   2 +-
 .../package.json                                   |   2 +-
 .../vitest.config.ts                               |   2 +-
 plugins/fusion-plugin-hermes-runtime/package.json  |   2 +-
 .../fusion-plugin-hermes-runtime/vitest.config.ts  |   2 +-
 .../fusion-plugin-openclaw-runtime/package.json    |   2 +-
 .../vitest.config.ts                               |   2 +-
 .../fusion-plugin-paperclip-runtime/package.json   |   2 +-
 .../vitest.config.ts                               |   2 +-
 plugins/fusion-plugin-reports/package.json         |   2 +-
 .../src/__tests__/review-panel.test.ts             |   6 +-
 plugins/fusion-plugin-reports/vitest.config.ts     |   2 +-
 plugins/fusion-plugin-roadmap/package.json         |   2 +-
 plugins/fusion-plugin-roadmap/vitest.config.ts     |   2 +-
 plugins/fusion-plugin-whatsapp-chat/package.json   |   2 +-
 .../fusion-plugin-whatsapp-chat/vitest.config.ts   |   2 +-
 pnpm-lock.yaml                                     | 626 ++++++++-------------
 .../__tests__/dependency-security-floor.test.mjs   |  95 ++++
 75 files changed, 475 insertions(+), 491 deletions(-)

Fusion-Task-Id: FN-6042

Fusion-Task-Lineage: fff6a1cb-8937-435c-9a91-b7c7a59cc80e
2026-06-08 15:19:27 -07:00
..
2026-05-31 20:05:32 -07:00

fusion-plugin-roadmap

@fusion-plugin-examples/roadmap is the workspace package for the bundled fusion-plugin-roadmap plugin.

Plugin identity

  • Manifest id: fusion-plugin-roadmap
  • Route namespace: /api/plugins/fusion-plugin-roadmap/*
  • Dashboard view id: plugin:fusion-plugin-roadmap:roadmaps

Package layout

  • manifest.json — plugin metadata and dashboard view declaration
  • src/index.ts — plugin definition (onSchemaInit, routes, dashboard view metadata)
  • src/roadmap-schema.ts — canonical roadmap DDL used by hooks.onSchemaInit
  • src/server/index.ts — backend server exports
  • src/dashboard-view.tsx — dashboard view entry export for host registration
  • src/dashboard/RoadmapsView.tsx — plugin-owned roadmap planner page
  • src/dashboard/useRoadmaps.ts — plugin-owned roadmap CRUD/reorder/suggestions/handoff hook
  • src/dashboard/RoadmapsView.css — plugin-owned roadmap styles
  • src/dashboard/api.ts — plugin-local client for /api/plugins/fusion-plugin-roadmap/*
  • src/roadmap-types.ts + src/store/* — roadmap domain types/store

Exported surfaces

  • Root export: plugin default + roadmap domain helpers/types
  • ./server: roadmap route + AI suggestion service exports
  • ./dashboard-view: Roadmaps dashboard view export for host registry wiring

Regression test ownership

Roadmap behavior regression tests live in this plugin package and should stay here (not in @fusion/core or @fusion/dashboard):

  • src/store/__tests__/roadmap-store.test.ts
  • src/store/__tests__/roadmap-ordering.test.ts
  • src/store/__tests__/roadmap-handoff.test.ts
  • src/__tests__/index.test.ts (plugin contract: hooks.onSchemaInit, dashboard view metadata registration)
  • src/__tests__/roadmap-routes.test.ts
  • src/__tests__/roadmap-suggestions.test.ts (AI suggestion flow uses injected PluginContext.createAiSession() and session lifecycle handling)
  • src/__tests__/api-client.test.ts
  • src/dashboard/__tests__/useRoadmaps.test.ts
  • src/dashboard/__tests__/RoadmapsView.test.tsx

Prefer canonical package exports in tests:

  • plugin/server surface: @fusion-plugin-examples/roadmap or @fusion-plugin-examples/roadmap/server
  • dashboard view surface: @fusion-plugin-examples/roadmap/dashboard-view

Use deep source imports only when no package export exists for the target module.

Host vs plugin capability boundaries

Plugin-owned responsibilities:

  • Define roadmap schema DDL in src/roadmap-schema.ts and register it via hooks.onSchemaInit in src/index.ts.
  • Implement roadmap AI suggestion behavior through the injected PluginContext.createAiSession() seam.
  • Declare plugin dashboard view metadata (dashboardViews) and export the real view entrypoint (./dashboard-view).

Host-owned responsibilities:

  • Execute plugin schema hooks during DB startup and expose resulting tables/indexes to plugin routes.
  • Inject createAiSession() into plugin runtime/route context.
  • Discover plugin dashboard views via /api/plugins/dashboard-views and resolve plugin view IDs (for roadmap: plugin:fusion-plugin-roadmap:roadmaps) through the host view registry.

Notes

Roadmap tables are plugin-owned and created via hooks.onSchemaInit in src/index.ts, which delegates to src/roadmap-schema.ts. Core database bootstrap no longer creates roadmap tables/indexes.

Roadmap AI suggestion generation is plugin-owned (src/roadmap-suggestions.ts / src/roadmap-routes.ts) and uses PluginContext.createAiSession() when available. The plugin must not import @fusion/engine directly for suggestion generation.

The plugin keeps a single canonical dashboard entrypoint (./dashboard-view) and accepts host-supplied dashboard context (projectId, optional addToast). Do not deep-import dashboard internals from this plugin.