feat(calm-explorer): add interactive CALM architecture explorer#1766
feat(calm-explorer): add interactive CALM architecture explorer#1766pmerrison wants to merge 104 commits intofinos:mainfrom
Conversation
One or more co-authors of this pull request were not found. You must specify co-authors in commit message trailer via: Supported
Please update your commit message(s) by doing |
Add a new CALM Visualizer project as a workspace module, providing an interactive web-based tool for visualizing and exploring FINOS CALM (Common Architecture Language Model) architecture diagrams. Key features: - Interactive graph visualization using ReactFlow and Dagre layout - Integrated Monaco JSON editor with syntax highlighting and validation - AIGF (AI Governance Framework) risk visualization with color-coded risk levels - Node details panel showing properties, interfaces, risks, and mitigations - Control and governance annotations on nodes and edges - File import/export functionality for CALM JSON files - Comprehensive test coverage with Vitest (50 passing tests) - Responsive resizable panel layout Project integration: - Add calm-visualizer to npm workspaces - Create GitHub Actions workflow for build, test, and lint - Update CVE and license scanning workflows to include calm-visualizer - Add project to root README with build badge - Add calm-visualizer scope to commitlint configuration - Configure eslint with TypeScript rules (warnings for any types) Technology stack: - React 18 with TypeScript - Vite for build tooling - ReactFlow for graph visualization - Monaco Editor for JSON editing - Tailwind CSS and shadcn/ui components - Vitest for testing with jsdom environment Maintainer: @pmerrison
f64efae to
ba826cb
Compare
Fix multiple runtime errors preventing the visualizer from rendering: - Add Vite resolve aliases to force single React instance across all dependencies - Add dedupe configuration for React and d3 packages to prevent version conflicts - Fix controlResolver to handle missing control requirement properties - Remove invalid defaultSize prop from graph visualization panel - Install d3-selection, d3-drag, and d3-zoom as direct dependencies This resolves "Invalid hook call" and "selection5.interrupt is not a function" errors.
|
Notes:
|
|
Current test coverage: As a follow on item, it would be helpful if I could get some guidance on how to effectively unit test React elements or pointers to where else we've done that in this repo |
- Add branch input field to GitHubConnectDialog - Update GitHubService.getRepoTree to accept optional branch parameter - When branch specified, use it directly; otherwise fetch default branch - Add logging for branch being fetched and file count - Add truncation warning for large repos - Update tests to reflect new branch parameter behavior Fixes issue where JSON files on non-default branches (like 'calm' branch) could not be accessed. Users can now specify any branch to browse files from.
* fix(deps): update minor updates * chore(deps): update JaCoCo version and enhance dependency grouping in Renovate config --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Matthew Bain <66839492+rocketstack-matt@users.noreply.github.com> Co-authored-by: rocketstack-matt <matt@rocketstack.co>
Add package-lock.json files to .gitignore to prevent merge conflicts. The project uses Yarn for package management.
Resolved package-lock.json conflict by removing the file as project uses Yarn.
5c99983 to
35cf374
Compare
|
#1798 - @pmerrison to fix the build failures relating to package-lock.json missing |
Update .gitignore to allow package-lock.json files as they are required for GitHub Actions CI to pass properly.
Regenerate package-lock.json to ensure all workspace packages are properly included and synchronized with their package.json files.
Change package name from calm-explorer-vscode to @finos/calm-explorer to match FINOS naming convention and fix npm ci sync errors in CI.
Regenerate package-lock.json with --include=optional to ensure platform-specific optional dependencies like @rollup/rollup-linux-x64-gnu are properly included for CI builds.
Remove the extension build step from the build script as the VS Code extension functionality is not part of this PR. Only build the webview.
Remove lovable-tagger plugin from vite config as it's an ESM-only package that causes build failures. This is a development-only tool that's not needed for CI builds.
Remove vite-plugin-monaco-editor as it's causing module resolution failures during CI builds. Monaco editor functionality can be added back later with proper configuration.
Remove extra closing parenthesis that was causing parsing errors.
rocketstack-matt
left a comment
There was a problem hiding this comment.
Approving into experimental now all builds are passing
3db1df7 to
594609b
Compare
|
Closing this PR and opening a new one, as it's easier to sort out the merge conflict that way |
Summary
This PR adds a new CALM Explorer project to the architecture-as-code monorepo, providing an interactive web-based tool for visualising and exploring FINOS CALM (Common Architecture Language Model) architecture diagrams. Full disclosure: I made use of Claude Code in the preparation of this code and PR.
Key Features
Technology Stack
Project Integration
This PR includes full integration into the monorepo:
Workspace Configuration
calm-explorerto npm workspaces in root package.jsonnpm run build:calm-explorer,npm run test:calm-explorer,npm run lint:calm-explorerCI/CD Integration
.github/workflows/build-calm-explorer.ymlDocumentation
calm-explorerscope to commitlint configurationCode Quality
Testing
All workspace commands have been verified:
License Compliance
All direct dependencies use Apache-2.0, MIT, ISC, or BSD licenses. Some transitive dependencies have permissive open-source licenses (BlueOak-1.0.0, MIT-0, 0BSD, CC0-1.0) which are standard in the Node.js ecosystem.
Screenshots
The explorer provides:
Maintainer
@pmerrison