umlforge 0.2.0__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. {umlforge-0.2.0 → umlforge-0.2.2}/PKG-INFO +3 -2
  2. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/__init__.py +1 -1
  3. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/base.py +2 -2
  4. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p13_legacy_migrate.py +1 -1
  5. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/suggest.py +5 -1
  6. {umlforge-0.2.0 → umlforge-0.2.2}/connector/README.md +2 -1
  7. {umlforge-0.2.0 → umlforge-0.2.2}/connector/tools.py +19 -9
  8. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/docs/page.tsx +1 -1
  9. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/manuals/page.tsx +1 -1
  10. {umlforge-0.2.0 → umlforge-0.2.2}/pyproject.toml +1 -1
  11. {umlforge-0.2.0 → umlforge-0.2.2}/server.json +2 -2
  12. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase7_all_prompts.py +1 -1
  13. {umlforge-0.2.0 → umlforge-0.2.2}/.claude/settings.json +0 -0
  14. {umlforge-0.2.0 → umlforge-0.2.2}/.env.example +0 -0
  15. {umlforge-0.2.0 → umlforge-0.2.2}/.github/workflows/ci.yml +0 -0
  16. {umlforge-0.2.0 → umlforge-0.2.2}/.gitignore +0 -0
  17. {umlforge-0.2.0 → umlforge-0.2.2}/.mcp.json +0 -0
  18. {umlforge-0.2.0 → umlforge-0.2.2}/.railway/README.md +0 -0
  19. {umlforge-0.2.0 → umlforge-0.2.2}/LICENSE +0 -0
  20. {umlforge-0.2.0 → umlforge-0.2.2}/README.md +0 -0
  21. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/README +0 -0
  22. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/env.py +0 -0
  23. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/script.py.mako +0 -0
  24. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/000_create_base_schema.py +0 -0
  25. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/001_add_dashboard_auth_fields.py +0 -0
  26. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/002_rename_socratic_to_guided.py +0 -0
  27. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/003_add_key_lookup_hash.py +0 -0
  28. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/004_add_admin_tier.py +0 -0
  29. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/005_add_diagram_history_and_guided_toggle.py +0 -0
  30. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/006_add_report_mode_enabled.py +0 -0
  31. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/007_add_report_text_to_diagram_history.py +0 -0
  32. {umlforge-0.2.0 → umlforge-0.2.2}/alembic/versions/008_add_lemonsqueezy_to_subscriptions.py +0 -0
  33. {umlforge-0.2.0 → umlforge-0.2.2}/alembic.ini +0 -0
  34. {umlforge-0.2.0 → umlforge-0.2.2}/all-commits.patch +0 -0
  35. {umlforge-0.2.0 → umlforge-0.2.2}/api/__init__.py +0 -0
  36. {umlforge-0.2.0 → umlforge-0.2.2}/api/_rate_limiter.py +0 -0
  37. {umlforge-0.2.0 → umlforge-0.2.2}/api/auth.py +0 -0
  38. {umlforge-0.2.0 → umlforge-0.2.2}/api/auth_routes.py +0 -0
  39. {umlforge-0.2.0 → umlforge-0.2.2}/api/billing.py +0 -0
  40. {umlforge-0.2.0 → umlforge-0.2.2}/api/billing_routes.py +0 -0
  41. {umlforge-0.2.0 → umlforge-0.2.2}/api/config.py +0 -0
  42. {umlforge-0.2.0 → umlforge-0.2.2}/api/db.py +0 -0
  43. {umlforge-0.2.0 → umlforge-0.2.2}/api/email.py +0 -0
  44. {umlforge-0.2.0 → umlforge-0.2.2}/api/free_tier_budget.py +0 -0
  45. {umlforge-0.2.0 → umlforge-0.2.2}/api/lemon.py +0 -0
  46. {umlforge-0.2.0 → umlforge-0.2.2}/api/limiter.py +0 -0
  47. {umlforge-0.2.0 → umlforge-0.2.2}/api/main.py +0 -0
  48. {umlforge-0.2.0 → umlforge-0.2.2}/api/models/__init__.py +0 -0
  49. {umlforge-0.2.0 → umlforge-0.2.2}/api/models/inputs.py +0 -0
  50. {umlforge-0.2.0 → umlforge-0.2.2}/api/models/orm.py +0 -0
  51. {umlforge-0.2.0 → umlforge-0.2.2}/api/models/responses.py +0 -0
  52. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p01_reverse_engineer.py +0 -0
  53. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p02_stakeholder_arch.py +0 -0
  54. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p03_api_sequence.py +0 -0
  55. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p04_state_machine.py +0 -0
  56. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p05_living_docs.py +0 -0
  57. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p06_erd_schema.py +0 -0
  58. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p07_threat_model.py +0 -0
  59. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p08_frontend_components.py +0 -0
  60. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p09_event_driven.py +0 -0
  61. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p10_onboarding.py +0 -0
  62. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p11_ai_agent.py +0 -0
  63. {umlforge-0.2.0 → umlforge-0.2.2}/api/prompts/p12_deployment.py +0 -0
  64. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/__init__.py +0 -0
  65. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/anthropic_provider.py +0 -0
  66. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/base.py +0 -0
  67. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/factory.py +0 -0
  68. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/google_provider.py +0 -0
  69. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/ollama_provider.py +0 -0
  70. {umlforge-0.2.0 → umlforge-0.2.2}/api/providers/openai_provider.py +0 -0
  71. {umlforge-0.2.0 → umlforge-0.2.2}/api/router.py +0 -0
  72. {umlforge-0.2.0 → umlforge-0.2.2}/api/usage.py +0 -0
  73. {umlforge-0.2.0 → umlforge-0.2.2}/api/validator.py +0 -0
  74. {umlforge-0.2.0 → umlforge-0.2.2}/connector/__init__.py +0 -0
  75. {umlforge-0.2.0 → umlforge-0.2.2}/connector/__main__.py +0 -0
  76. {umlforge-0.2.0 → umlforge-0.2.2}/connector/api_client.py +0 -0
  77. {umlforge-0.2.0 → umlforge-0.2.2}/connector/config.py +0 -0
  78. {umlforge-0.2.0 → umlforge-0.2.2}/connector/requirements.txt +0 -0
  79. {umlforge-0.2.0 → umlforge-0.2.2}/connector/server.py +0 -0
  80. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/.env.example +0 -0
  81. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/billing/BillingContent.tsx +0 -0
  82. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/billing/page.tsx +0 -0
  83. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/connect/page.tsx +0 -0
  84. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/dashboard/page.tsx +0 -0
  85. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/demo/page.tsx +0 -0
  86. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/docs/getting-started/page.tsx +0 -0
  87. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/docs/how-to/page.tsx +0 -0
  88. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/feedback/page.tsx +0 -0
  89. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/forgot-password/page.tsx +0 -0
  90. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/generate/page.tsx +0 -0
  91. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/globals.css +0 -0
  92. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/history/page.tsx +0 -0
  93. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/layout.tsx +0 -0
  94. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/login/page.tsx +0 -0
  95. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/page.tsx +0 -0
  96. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/privacy/page.tsx +0 -0
  97. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/reset-password/page.tsx +0 -0
  98. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/signup/page.tsx +0 -0
  99. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/terms/page.tsx +0 -0
  100. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/app/verify/page.tsx +0 -0
  101. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/components/CreateKeyModal.tsx +0 -0
  102. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/components/DemoSection.tsx +0 -0
  103. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/components/DiagramsSection.tsx +0 -0
  104. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/components/MermaidDiagram.tsx +0 -0
  105. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/global.d.ts +0 -0
  106. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/lib/api.ts +0 -0
  107. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/next-env.d.ts +0 -0
  108. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/next.config.js +0 -0
  109. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@antfu/install-pkg/README.md +0 -0
  110. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@braintree/sanitize-url/README.md +0 -0
  111. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@iconify/types/README.md +0 -0
  112. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@img/colour/README.md +0 -0
  113. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@img/sharp-win32-x64/README.md +0 -0
  114. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@jridgewell/gen-mapping/README.md +0 -0
  115. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@jridgewell/resolve-uri/README.md +0 -0
  116. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@jridgewell/sourcemap-codec/README.md +0 -0
  117. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@jridgewell/trace-mapping/README.md +0 -0
  118. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@mermaid-js/parser/README.md +0 -0
  119. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@next/env/README.md +0 -0
  120. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@next/swc-win32-x64-msvc/README.md +0 -0
  121. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@nodelib/fs.scandir/README.md +0 -0
  122. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@nodelib/fs.stat/README.md +0 -0
  123. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@nodelib/fs.walk/README.md +0 -0
  124. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3/README.md +0 -0
  125. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-array/README.md +0 -0
  126. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-axis/README.md +0 -0
  127. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-brush/README.md +0 -0
  128. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-chord/README.md +0 -0
  129. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-color/README.md +0 -0
  130. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-contour/README.md +0 -0
  131. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-delaunay/README.md +0 -0
  132. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-dispatch/README.md +0 -0
  133. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-drag/README.md +0 -0
  134. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-dsv/README.md +0 -0
  135. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-ease/README.md +0 -0
  136. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-fetch/README.md +0 -0
  137. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-force/README.md +0 -0
  138. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-format/README.md +0 -0
  139. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-geo/README.md +0 -0
  140. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-hierarchy/README.md +0 -0
  141. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-interpolate/README.md +0 -0
  142. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-path/README.md +0 -0
  143. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-polygon/README.md +0 -0
  144. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-quadtree/README.md +0 -0
  145. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-random/README.md +0 -0
  146. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-scale/README.md +0 -0
  147. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-scale-chromatic/README.md +0 -0
  148. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-selection/README.md +0 -0
  149. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-shape/README.md +0 -0
  150. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-time/README.md +0 -0
  151. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-time-format/README.md +0 -0
  152. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-timer/README.md +0 -0
  153. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-transition/README.md +0 -0
  154. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/d3-zoom/README.md +0 -0
  155. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/geojson/README.md +0 -0
  156. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/node/README.md +0 -0
  157. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/prop-types/README.md +0 -0
  158. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/react/README.md +0 -0
  159. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/react-dom/README.md +0 -0
  160. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@types/trusted-types/README.md +0 -0
  161. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@upsetjs/venn.js/README.md +0 -0
  162. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/@vercel/analytics/README.md +0 -0
  163. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/any-promise/README.md +0 -0
  164. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/anymatch/README.md +0 -0
  165. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/arg/README.md +0 -0
  166. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/autoprefixer/README.md +0 -0
  167. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/baseline-browser-mapping/README.md +0 -0
  168. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/braces/README.md +0 -0
  169. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/browserslist/README.md +0 -0
  170. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/camelcase-css/README.md +0 -0
  171. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/caniuse-lite/README.md +0 -0
  172. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/chokidar/README.md +0 -0
  173. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/chokidar/node_modules/glob-parent/README.md +0 -0
  174. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cose-base/README.md +0 -0
  175. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cssesc/README.md +0 -0
  176. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/csstype/README.md +0 -0
  177. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cytoscape/README.md +0 -0
  178. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cytoscape-cose-bilkent/README.md +0 -0
  179. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cytoscape-fcose/README.md +0 -0
  180. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cytoscape-fcose/node_modules/cose-base/README.md +0 -0
  181. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/cytoscape-fcose/node_modules/layout-base/README.md +0 -0
  182. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3/README.md +0 -0
  183. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-array/README.md +0 -0
  184. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-axis/README.md +0 -0
  185. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-brush/README.md +0 -0
  186. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-chord/README.md +0 -0
  187. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-color/README.md +0 -0
  188. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-contour/README.md +0 -0
  189. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-delaunay/README.md +0 -0
  190. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-dispatch/README.md +0 -0
  191. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-drag/README.md +0 -0
  192. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-dsv/README.md +0 -0
  193. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-ease/README.md +0 -0
  194. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-fetch/README.md +0 -0
  195. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-force/README.md +0 -0
  196. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-format/README.md +0 -0
  197. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-geo/README.md +0 -0
  198. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-hierarchy/README.md +0 -0
  199. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-interpolate/README.md +0 -0
  200. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-path/README.md +0 -0
  201. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-polygon/README.md +0 -0
  202. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-quadtree/README.md +0 -0
  203. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-random/README.md +0 -0
  204. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-sankey/README.md +0 -0
  205. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-sankey/node_modules/d3-array/README.md +0 -0
  206. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-sankey/node_modules/d3-path/README.md +0 -0
  207. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-sankey/node_modules/d3-shape/README.md +0 -0
  208. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-sankey/node_modules/internmap/README.md +0 -0
  209. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-scale/README.md +0 -0
  210. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-scale-chromatic/README.md +0 -0
  211. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-selection/README.md +0 -0
  212. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-shape/README.md +0 -0
  213. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-time/README.md +0 -0
  214. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-time-format/README.md +0 -0
  215. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-timer/README.md +0 -0
  216. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-transition/README.md +0 -0
  217. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/d3-zoom/README.md +0 -0
  218. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/dagre-d3-es/README.md +0 -0
  219. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/dayjs/README.md +0 -0
  220. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/delaunator/README.md +0 -0
  221. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/detect-libc/README.md +0 -0
  222. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/didyoumean/README.md +0 -0
  223. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/dlv/README.md +0 -0
  224. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/dompurify/README.md +0 -0
  225. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/electron-to-chromium/README.md +0 -0
  226. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/es-errors/README.md +0 -0
  227. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/es-toolkit/README.md +0 -0
  228. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/fast-glob/README.md +0 -0
  229. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/fast-glob/node_modules/glob-parent/README.md +0 -0
  230. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/fastq/README.md +0 -0
  231. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/fill-range/README.md +0 -0
  232. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/fraction.js/README.md +0 -0
  233. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/function-bind/README.md +0 -0
  234. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/glob-parent/README.md +0 -0
  235. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/hachure-fill/README.md +0 -0
  236. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/hasown/README.md +0 -0
  237. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/iconv-lite/README.md +0 -0
  238. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/internmap/README.md +0 -0
  239. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/is-core-module/README.md +0 -0
  240. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/is-extglob/README.md +0 -0
  241. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/is-glob/README.md +0 -0
  242. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/is-number/README.md +0 -0
  243. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/jiti/README.md +0 -0
  244. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/README.md +0 -0
  245. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/contrib/auto-render/README.md +0 -0
  246. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/contrib/copy-tex/README.md +0 -0
  247. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/contrib/mathtex-script-type/README.md +0 -0
  248. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/contrib/mhchem/README.md +0 -0
  249. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/dist/README.md +0 -0
  250. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/katex/src/metrics/README.md +0 -0
  251. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/layout-base/README.md +0 -0
  252. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/lines-and-columns/README.md +0 -0
  253. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/lodash-es/README.md +0 -0
  254. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/marked/README.md +0 -0
  255. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/merge2/README.md +0 -0
  256. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/mermaid/README.md +0 -0
  257. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/micromatch/README.md +0 -0
  258. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/mz/README.md +0 -0
  259. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/nanoid/README.md +0 -0
  260. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/README.md +0 -0
  261. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/dist/compiled/@babel/runtime/README.md +0 -0
  262. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/dist/compiled/react-is/README.md +0 -0
  263. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/dist/compiled/react-refresh/README.md +0 -0
  264. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/dist/compiled/regenerator-runtime/README.md +0 -0
  265. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/next/node_modules/postcss/README.md +0 -0
  266. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/node-releases/README.md +0 -0
  267. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/normalize-path/README.md +0 -0
  268. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/package-manager-detector/README.md +0 -0
  269. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/path-data-parser/README.md +0 -0
  270. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/path-parse/README.md +0 -0
  271. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/picocolors/README.md +0 -0
  272. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/picomatch/README.md +0 -0
  273. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/pirates/README.md +0 -0
  274. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/points-on-curve/README.md +0 -0
  275. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/points-on-path/README.md +0 -0
  276. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss/README.md +0 -0
  277. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-import/README.md +0 -0
  278. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-js/README.md +0 -0
  279. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-load-config/README.md +0 -0
  280. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-nested/README.md +0 -0
  281. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-selector-parser/README.md +0 -0
  282. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/postcss-value-parser/README.md +0 -0
  283. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/queue-microtask/README.md +0 -0
  284. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/react/README.md +0 -0
  285. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/react-dom/README.md +0 -0
  286. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/read-cache/README.md +0 -0
  287. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/readdirp/README.md +0 -0
  288. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/reusify/README.md +0 -0
  289. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/robust-predicates/README.md +0 -0
  290. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/roughjs/README.md +0 -0
  291. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/run-parallel/README.md +0 -0
  292. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/rw/README.md +0 -0
  293. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/scheduler/README.md +0 -0
  294. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/semver/README.md +0 -0
  295. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/sharp/README.md +0 -0
  296. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/source-map-js/README.md +0 -0
  297. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/stylis/README.md +0 -0
  298. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/sucrase/README.md +0 -0
  299. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/supports-preserve-symlinks-flag/README.md +0 -0
  300. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tailwindcss/README.md +0 -0
  301. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tailwindcss/lib/postcss-plugins/nesting/README.md +0 -0
  302. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tailwindcss/lib/value-parser/README.md +0 -0
  303. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tailwindcss/src/postcss-plugins/nesting/README.md +0 -0
  304. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tailwindcss/src/value-parser/README.md +0 -0
  305. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/thenify/README.md +0 -0
  306. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/thenify-all/README.md +0 -0
  307. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tinyexec/README.md +0 -0
  308. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tinyglobby/README.md +0 -0
  309. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tinyglobby/node_modules/fdir/README.md +0 -0
  310. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tinyglobby/node_modules/picomatch/README.md +0 -0
  311. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/to-regex-range/README.md +0 -0
  312. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/ts-dedent/README.md +0 -0
  313. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/ts-interface-checker/README.md +0 -0
  314. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/tslib/README.md +0 -0
  315. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/typescript/README.md +0 -0
  316. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/undici-types/README.md +0 -0
  317. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/update-browserslist-db/README.md +0 -0
  318. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/util-deprecate/README.md +0 -0
  319. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/node_modules/uuid/README.md +0 -0
  320. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/package-lock.json +0 -0
  321. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/package.json +0 -0
  322. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/postcss.config.js +0 -0
  323. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/tailwind.config.js +0 -0
  324. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/tsconfig.json +0 -0
  325. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/vercel.json +0 -0
  326. {umlforge-0.2.0 → umlforge-0.2.2}/dashboard/wrangler.toml +0 -0
  327. {umlforge-0.2.0 → umlforge-0.2.2}/infra/db/schema.sql +0 -0
  328. {umlforge-0.2.0 → umlforge-0.2.2}/pytest.ini +0 -0
  329. {umlforge-0.2.0 → umlforge-0.2.2}/railway.toml +0 -0
  330. {umlforge-0.2.0 → umlforge-0.2.2}/requirements-dev.txt +0 -0
  331. {umlforge-0.2.0 → umlforge-0.2.2}/requirements.txt +0 -0
  332. {umlforge-0.2.0 → umlforge-0.2.2}/ruff.toml +0 -0
  333. {umlforge-0.2.0 → umlforge-0.2.2}/scripts/setup_paystack_plans.py +0 -0
  334. {umlforge-0.2.0 → umlforge-0.2.2}/test_phase3_app.py +0 -0
  335. {umlforge-0.2.0 → umlforge-0.2.2}/tests/conftest.py +0 -0
  336. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_integration.py +0 -0
  337. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase10_connector.py +0 -0
  338. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase11_auth_routes.py +0 -0
  339. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase12_billing_routes.py +0 -0
  340. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase14_deployment.py +0 -0
  341. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase15_vercel.py +0 -0
  342. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase16_providers.py +0 -0
  343. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase1_database.py +0 -0
  344. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase2_auth.py +0 -0
  345. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase3_app.py +0 -0
  346. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase4_prompts.py +0 -0
  347. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase5_threat_model.py +0 -0
  348. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase6_validator.py +0 -0
  349. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase8_billing.py +0 -0
  350. {umlforge-0.2.0 → umlforge-0.2.2}/tests/test_phase9_usage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: umlforge
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: UML Forge MCP connector — architecture intelligence, security analysis, and living documentation for engineering teams
5
5
  Project-URL: Homepage, https://umlforge.dev
6
6
  Project-URL: Documentation, https://umlforge.dev/docs
@@ -29,7 +29,7 @@ Description-Content-Type: text/markdown
29
29
  **Architecture intelligence, security analysis, and living documentation — inside your coding agent.**
30
30
 
31
31
  [UML Forge](https://umlforge.dev) gives Claude Code, Cursor, Windsurf, and any
32
- MCP-compatible coding agent a suite of 13 specialised tools for producing
32
+ MCP-compatible coding agent a suite of 14 specialised tools for producing
33
33
  professional UML diagrams from your codebase, schema, or architecture
34
34
  descriptions.
35
35
 
@@ -69,6 +69,7 @@ Get your API key at [umlforge.dev](https://umlforge.dev).
69
69
  | `umlforge_stakeholder_arch` | C4 context diagrams for investors, CTOs, and non-technical stakeholders |
70
70
  | `umlforge_living_docs` | Update existing diagrams to reflect sprint or PR changes |
71
71
  | `umlforge_onboarding` | Day-one knowledge-transfer package for new team members |
72
+ | `umlforge_legacy_migration` | Legacy structure + modern architecture diagrams and 6-phase migration roadmap from COBOL, Fortran, ABAP, RPG, and other legacy languages |
72
73
 
73
74
  All tools accept `report_mode=True` to generate a written analysis report
74
75
  alongside the diagram.
@@ -36,7 +36,7 @@ TOOL_REGISTRY: dict[str, BasePrompt] = {
36
36
  "umlforge_onboarding": OnboardingPrompt(),
37
37
  "umlforge_ai_agent": AiAgentPrompt(),
38
38
  "umlforge_deployment": DeploymentPrompt(),
39
- "umlforge_legacy_migrate": LegacyMigratePrompt(),
39
+ "umlforge_legacy_migration": LegacyMigratePrompt(),
40
40
  }
41
41
 
42
42
 
@@ -1,7 +1,7 @@
1
1
  """
2
2
  UML Forge — Base Prompt Architecture
3
3
 
4
- BasePrompt is the abstract base class for all 12 prompt modules.
4
+ BasePrompt is the abstract base class for all 13 prompt modules.
5
5
  Every module inherits from this, sets tool_name + clarifying_questions,
6
6
  and implements build_prompt().
7
7
 
@@ -62,7 +62,7 @@ _DIAGRAM_TYPE_MAP: dict[str, str] = {
62
62
 
63
63
  class BaseToolInput(BaseModel):
64
64
  """
65
- Base input model for all 13 prompt tools.
65
+ Base input model for all 14 prompt tools.
66
66
  clarifications is populated by the Socratic elicitation engine —
67
67
  tool-specific input models must inherit from this class.
68
68
  """
@@ -104,7 +104,7 @@ class LegacyMigrateInput(BaseToolInput):
104
104
 
105
105
  class LegacyMigratePrompt(BasePrompt):
106
106
 
107
- tool_name = "umlforge_legacy_migrate"
107
+ tool_name = "umlforge_legacy_migration"
108
108
  input_class = LegacyMigrateInput
109
109
 
110
110
  clarifying_questions = [
@@ -1,7 +1,7 @@
1
1
  """
2
2
  UML Forge — Tool Suggestion Prompt
3
3
 
4
- Suggests which of the 12 prompt tools best matches a plain-English
4
+ Suggests which of the 13 prompt tools best matches a plain-English
5
5
  task description. Implemented as a standalone function rather than
6
6
  a BasePrompt subclass because it does not produce a diagram.
7
7
  Registered at POST /v1/suggest (wired in Phase 7).
@@ -68,6 +68,10 @@ umlforge_ai_agent(pipeline_purpose="", agents="", tools_available="", orchestrat
68
68
  umlforge_deployment(system_name="", cloud_provider="", environments="", services="", cicd_tool="", report_mode=False)
69
69
  → Infrastructure topology and CI/CD pipeline diagram.
70
70
  → NOT FOR: application-level architecture, security threat modelling.
71
+
72
+ umlforge_legacy_migration(legacy_code="", github_url=None, source_language="COBOL", target_language="Python", system_purpose="", report_mode=False)
73
+ → Visualise a legacy codebase (COBOL, Fortran, ABAP, RPG, PL/I, Pascal, BASIC, Assembly, Ada, ALGOL) and produce a 6-phase migration roadmap to Python, Go, Rust, Java, TypeScript, C#, or Kotlin.
74
+ → NOT FOR: analysing modern codebases, generating translated source code, database schema design.
71
75
  """.strip()
72
76
 
73
77
  _VALID_TOOLS = frozenset(t.split("(")[0] for t in _TOOL_CATALOGUE.splitlines() if t.startswith("umlforge_"))
@@ -5,7 +5,7 @@
5
5
  **Architecture intelligence, security analysis, and living documentation — inside your coding agent.**
6
6
 
7
7
  [UML Forge](https://umlforge.dev) gives Claude Code, Cursor, Windsurf, and any
8
- MCP-compatible coding agent a suite of 13 specialised tools for producing
8
+ MCP-compatible coding agent a suite of 14 specialised tools for producing
9
9
  professional UML diagrams from your codebase, schema, or architecture
10
10
  descriptions.
11
11
 
@@ -45,6 +45,7 @@ Get your API key at [umlforge.dev](https://umlforge.dev).
45
45
  | `umlforge_stakeholder_arch` | C4 context diagrams for investors, CTOs, and non-technical stakeholders |
46
46
  | `umlforge_living_docs` | Update existing diagrams to reflect sprint or PR changes |
47
47
  | `umlforge_onboarding` | Day-one knowledge-transfer package for new team members |
48
+ | `umlforge_legacy_migration` | Legacy structure + modern architecture diagrams and 6-phase migration roadmap from COBOL, Fortran, ABAP, RPG, and other legacy languages |
48
49
 
49
50
  All tools accept `report_mode=True` to generate a written analysis report
50
51
  alongside the diagram.
@@ -1,7 +1,7 @@
1
1
  """
2
2
  UML Forge Connector — MCP Tool Definitions
3
3
 
4
- Registers all 13 UML Forge tools with the FastMCP server.
4
+ Registers all 14 UML Forge tools with the FastMCP server.
5
5
 
6
6
  CRITICAL CONSTRAINTS (enforced by architecture):
7
7
  - ZERO business logic in this file
@@ -131,7 +131,7 @@ _GUIDED_QUESTIONS: dict[str, list[str]] = {
131
131
  "Are there any manual steps in the current deployment "
132
132
  "process that are not yet automated and should be flagged?",
133
133
  ],
134
- "umlforge_legacy_migrate": [
134
+ "umlforge_legacy_migration": [
135
135
  "What does this program currently do in production — is it a batch job, "
136
136
  "an online transaction processor, or a reporting/extract system?",
137
137
  "Are there hard interface contracts that must be preserved exactly — "
@@ -187,6 +187,7 @@ async def umlforge_reverse_engineer(
187
187
  codebase: str = "",
188
188
  github_url: str | None = None,
189
189
  max_nodes: int = 20,
190
+ github_token: str | None = None,
190
191
  report_mode: bool = False,
191
192
  ctx: Context | None = None,
192
193
  ) -> str:
@@ -222,7 +223,9 @@ async def umlforge_reverse_engineer(
222
223
  github.com/owner/repo/blob/branch/path/to/file.py
223
224
  codebase: Paste code directly when you have files in context
224
225
  or the repo is private.
225
- max_nodes: Max classes/components per diagram (default 20).
226
+ max_nodes: Max classes/components per diagram (default 20, range 5–50).
227
+ github_token: GitHub personal access token (repo scope) — only needed
228
+ for private repositories. Never stored or logged.
226
229
  report_mode: True → also produce an Architectural Intelligence Report.
227
230
  Pro/Team/Enterprise only.
228
231
  """
@@ -231,6 +234,7 @@ async def umlforge_reverse_engineer(
231
234
  "codebase": codebase,
232
235
  "github_url": github_url,
233
236
  "max_nodes": max_nodes,
237
+ "github_token": github_token,
234
238
  "report_mode": report_mode,
235
239
  }
236
240
  if config.guided_mode and ctx is not None:
@@ -637,8 +641,10 @@ async def umlforge_frontend_components(
637
641
  Args:
638
642
  feature_description: The UI feature or page to diagram.
639
643
  framework: Frontend framework (default: React).
644
+ Supported: React, Vue, Angular, Svelte, Next.js.
640
645
  state_management: State approach — Redux, Zustand, Context API, Pinia (optional).
641
- interactions: Key user interactions (optional — improves sequence diagram).
646
+ interactions: Key user interactions and data flows
647
+ (e.g. "user submits form, table sorts on header click") (optional).
642
648
  report_mode: True → also produce Component Analysis Notes.
643
649
  Pro/Team/Enterprise only.
644
650
  """
@@ -917,15 +923,16 @@ async def umlforge_deployment(
917
923
  )
918
924
 
919
925
 
920
- # ── 13. Legacy Migrate ───────────────────────────────────────────────────────
926
+ # ── 13. Legacy Migration ─────────────────────────────────────────────────────
921
927
 
922
928
  @mcp.tool(annotations=_READ_ONLY)
923
- async def umlforge_legacy_migrate(
929
+ async def umlforge_legacy_migration(
924
930
  legacy_code: str = "",
925
931
  github_url: str | None = None,
926
932
  source_language: str = "COBOL",
927
933
  target_language: str = "Python",
928
934
  system_purpose: str = "",
935
+ github_token: str | None = None,
929
936
  report_mode: bool = False,
930
937
  ctx: Context | None = None,
931
938
  ) -> str:
@@ -972,6 +979,8 @@ async def umlforge_legacy_migrate(
972
979
  system_purpose: Brief description of what the program does in production
973
980
  (e.g. "monthly payroll batch", "order entry OLTP"). Optional
974
981
  but improves diagram labels and migration advice.
982
+ github_token: GitHub personal access token (repo scope) — only needed
983
+ for private repositories. Never stored or logged.
975
984
  report_mode: True → also produce a Legacy Migration Assessment with
976
985
  complexity scores and tooling recommendations.
977
986
  Pro/Team/Enterprise only.
@@ -983,16 +992,17 @@ async def umlforge_legacy_migrate(
983
992
  "source_language": source_language,
984
993
  "target_language": target_language,
985
994
  "system_purpose": system_purpose,
995
+ "github_token": github_token,
986
996
  "report_mode": report_mode,
987
997
  }
988
998
  if config.guided_mode and ctx is not None:
989
999
  clarifications = await _elicit_clarifications(
990
- ctx, _GUIDED_QUESTIONS["umlforge_legacy_migrate"]
1000
+ ctx, _GUIDED_QUESTIONS["umlforge_legacy_migration"]
991
1001
  )
992
1002
  if clarifications:
993
1003
  params["clarifications"] = clarifications
994
1004
  return await api_client.generate(
995
- "umlforge_legacy_migrate", params, guided_mode=config.guided_mode
1005
+ "umlforge_legacy_migration", params, guided_mode=config.guided_mode
996
1006
  )
997
1007
 
998
1008
 
@@ -1009,7 +1019,7 @@ async def umlforge_suggest(task_description: str) -> str:
1009
1019
  3. Explain why this tool fits and suggest an alternative
1010
1020
 
1011
1021
  USE THIS WHEN:
1012
- - You are not sure which of the 13 tools to use
1022
+ - You are not sure which of the 14 tools to use
1013
1023
  - You want to describe a goal ("analyse this repo", "model our order lifecycle")
1014
1024
  and get a ready-to-run recommendation
1015
1025
  - You want to avoid trial and error with the wrong tool
@@ -34,7 +34,7 @@ const TOOLS = [
34
34
  { name: "umlforge_onboarding", label: "Team Onboarding", desc: "System overview and developer workflow package for new team members." },
35
35
  { name: "umlforge_deployment", label: "Deployment Architecture", desc: "Infrastructure topology and CI/CD pipeline diagrams." },
36
36
  { name: "umlforge_living_docs", label: "Living Docs", desc: "Update existing diagrams to reflect sprint or PR changes." },
37
- { name: "umlforge_legacy_migrate", label: "Legacy Migrate", desc: "Visualise COBOL, Fortran, or other legacy code and produce a modern equivalent architecture diagram and migration roadmap." },
37
+ { name: "umlforge_legacy_migration", label: "Legacy Migration", desc: "Visualise COBOL, Fortran, or other legacy code and produce a modern equivalent architecture diagram and migration roadmap." },
38
38
  { name: "umlforge_suggest", label: "Suggest a Tool", desc: "Describe your task and get a recommendation for the right diagram tool." },
39
39
  ];
40
40
 
@@ -218,7 +218,7 @@ const TOOLS = [
218
218
  ],
219
219
  },
220
220
  {
221
- name: "umlforge_legacy_migrate",
221
+ name: "umlforge_legacy_migration",
222
222
  label: "Legacy Migrate",
223
223
  icon: "🏺",
224
224
  when: "You have COBOL, Fortran, ABAP, RPG, PL/I, Pascal, BASIC, Assembly, Ada, or ALGOL code and want to understand its structure and plan a migration to a modern language.",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "umlforge"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "UML Forge MCP connector — architecture intelligence, security analysis, and living documentation for engineering teams"
9
9
  readme = "connector/README.md"
10
10
  requires-python = ">=3.11"
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/dave1362/umlforge-connector",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.2.0",
10
+ "version": "0.2.2",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "pypi",
14
14
  "identifier": "umlforge",
15
- "version": "0.2.0",
15
+ "version": "0.2.2",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },
@@ -91,7 +91,7 @@ _VALID_INPUTS = {
91
91
  "environments": "development, staging, production",
92
92
  "services": "FastAPI API, Next.js dashboard, Neon PostgreSQL, Redis cache",
93
93
  },
94
- "umlforge_legacy_migrate": {
94
+ "umlforge_legacy_migration": {
95
95
  "legacy_code": "IDENTIFICATION DIVISION.\nPROGRAM-ID. PAYROLL.\nDATA DIVISION.\nWORKING-STORAGE SECTION.\n01 WS-HOURS PIC 9(3).\nPROCEDURE DIVISION.\n MOVE 40 TO WS-HOURS\n STOP RUN.",
96
96
  "source_language": "COBOL",
97
97
  "target_language": "Python",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes