@llm4ts/shell 0.17.0 → 0.18.1

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 (269) hide show
  1. package/dist/Cli.d.ts +4 -0
  2. package/dist/Cli.d.ts.map +1 -1
  3. package/dist/Cli.js +69 -8
  4. package/dist/Cli.js.map +1 -1
  5. package/dist/FlowCatalog.d.ts +10 -4
  6. package/dist/FlowCatalog.d.ts.map +1 -1
  7. package/dist/FlowCatalog.js +25 -14
  8. package/dist/FlowCatalog.js.map +1 -1
  9. package/flows/epic-stories.js +1 -8
  10. package/flows/hello.js +15 -0
  11. package/flows/implement.js +1 -8
  12. package/flows/issue-pr.js +1 -8
  13. package/flows/judge-suite.js +1 -4
  14. package/flows/lib/epic-stories.js +3 -4
  15. package/flows/local.js +2 -5
  16. package/flows/modernize-bench.js +3 -12
  17. package/flows/modernize-extract.js +38 -20
  18. package/flows/modernize-implement.js +4 -15
  19. package/flows/modernize-pack-check.js +1 -8
  20. package/flows/modernize-review.js +4 -13
  21. package/flows/modernize-seed.js +3 -11
  22. package/flows/modernize-survey.js +0 -0
  23. package/flows/modernize-verify.js +5 -13
  24. package/flows/sdd.js +2 -12
  25. package/kits/j2ee-nextjs/README.md +29 -0
  26. package/kits/j2ee-nextjs/fixtures/demo-bank/RUNBOOK.md +232 -0
  27. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/PAGES.md +67 -0
  28. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/pom.xml +49 -0
  29. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/dto/AcctOvwDTO.java +58 -0
  30. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/dto/BenfDTO.java +49 -0
  31. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/dto/TrfDTO.java +70 -0
  32. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbAcctListService.java +53 -0
  33. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbBenfListService.java +58 -0
  34. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbBenfMaintService.java +58 -0
  35. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbException.java +21 -0
  36. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbGateway.java +44 -0
  37. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbTrfExecService.java +53 -0
  38. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/esb/EsbTrfValidateService.java +45 -0
  39. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/web/AccountOverviewServlet.java +90 -0
  40. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/web/BeneficiaryServlet.java +195 -0
  41. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/web/TransferDraft.java +62 -0
  42. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/java/com/demobank/legacy/web/TransferServlet.java +223 -0
  43. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/WEB-INF/web.xml +59 -0
  44. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/accountOverview.jsp +65 -0
  45. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/beneficiaryEdit.jsp +70 -0
  46. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/beneficiaryList.jsp +43 -0
  47. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/css/bank.css +132 -0
  48. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/dashboard.jsp +28 -0
  49. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/footer.jsp +8 -0
  50. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/header.jsp +22 -0
  51. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/help.jsp +32 -0
  52. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/js/jquery-1.12.4.min.js +1 -0
  53. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/js/validate.js +79 -0
  54. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/login.jsp +29 -0
  55. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/messages.jsp +34 -0
  56. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/nav.jsp +14 -0
  57. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/oldTransfer.jsp +34 -0
  58. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/profile.jsp +26 -0
  59. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/promoQ3.jsp +23 -0
  60. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/settings.jsp +34 -0
  61. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/testHarness.jsp +39 -0
  62. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/transferConfirm.jsp +35 -0
  63. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/transferStep1.jsp +73 -0
  64. package/kits/j2ee-nextjs/fixtures/demo-bank/legacy-j2ee/src/main/webapp/transferStep2.jsp +40 -0
  65. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/CONTRIBUTING.md +76 -0
  66. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/README.md +46 -0
  67. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/contracts/cards.openapi.yaml +57 -0
  68. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/contracts/profile.openapi.yaml +73 -0
  69. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/eslint.config.mjs +24 -0
  70. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/next-env.d.ts +5 -0
  71. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/next.config.mjs +10 -0
  72. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/package.json +29 -0
  73. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/pnpm-lock.yaml +2895 -0
  74. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/app/cards/page.tsx +62 -0
  75. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/app/layout.tsx +41 -0
  76. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/app/page.tsx +26 -0
  77. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/app/profile/page.tsx +134 -0
  78. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/app/signed-in-badge.tsx +9 -0
  79. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/auth/AuthProvider.tsx +36 -0
  80. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/Button.tsx +27 -0
  81. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/Card.tsx +18 -0
  82. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/DataTable.tsx +57 -0
  83. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/Field.tsx +34 -0
  84. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/Form.tsx +70 -0
  85. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/PageLayout.tsx +39 -0
  86. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/Stepper.tsx +29 -0
  87. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/components/index.ts +19 -0
  88. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/services/cards/mock.ts +47 -0
  89. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/services/cards/port.ts +31 -0
  90. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/services/profile/mock.ts +45 -0
  91. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/services/profile/port.ts +24 -0
  92. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/services/registry.ts +20 -0
  93. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/theme/components.css +269 -0
  94. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/src/theme/tokens.css +38 -0
  95. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/tests/cards.page.test.tsx +81 -0
  96. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/tests/profile.page.test.tsx +87 -0
  97. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/tsconfig.json +54 -0
  98. package/kits/j2ee-nextjs/fixtures/demo-bank/nextjs/vitest.config.ts +17 -0
  99. package/kits/j2ee-nextjs/fixtures/demo-bank/preflight.mjs +53 -0
  100. package/kits/j2ee-nextjs/fixtures/demo-bank/reset-demo.mjs +40 -0
  101. package/kits/j2ee-nextjs/fixtures/demo-bank/seed-legacy-j2ee.mjs +71 -0
  102. package/kits/j2ee-nextjs/fixtures/demo-bank/seed-nextjs.mjs +111 -0
  103. package/kits/j2ee-nextjs/fixtures/demo-bank/smoke-legacy-j2ee.mjs +144 -0
  104. package/kits/j2ee-nextjs/fixtures/demo-bank/smoke-nextjs.mjs +118 -0
  105. package/{flows → kits/j2ee-nextjs/flows}/convert-all.js +1 -7
  106. package/{flows → kits/j2ee-nextjs/flows}/convert-page.js +2 -6
  107. package/{flows → kits/j2ee-nextjs/flows}/lib/convert.js +6 -16
  108. package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/pack.md +2 -1
  109. package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/spec.md +5 -1
  110. package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/pack.md +1 -1
  111. package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/pack.md +1 -1
  112. package/kits/mainframe-java/README.md +31 -0
  113. package/{flows → kits/mainframe-java}/packs/ace-integration/pack.md +1 -1
  114. package/{flows → kits/mainframe-java}/packs/ace-kafka/pack.md +1 -1
  115. package/{flows → kits/mainframe-java}/packs/cobol-kafka/pack.md +1 -1
  116. package/{flows → kits/mainframe-java}/packs/cobol-springboot/pack.md +1 -1
  117. package/package.json +6 -6
  118. package/src/Cli.ts +92 -9
  119. package/src/FlowCatalog.ts +29 -13
  120. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-001-jstl-table.md +0 -0
  121. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-002-jquery-validation.md +0 -0
  122. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-003-session-stepper.md +0 -0
  123. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-004-esb-port.md +0 -0
  124. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-005-include-shell.md +0 -0
  125. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/analysis.md +0 -0
  126. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/bdd.md +0 -0
  127. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/implement.md +0 -0
  128. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/plan.md +0 -0
  129. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/review.md +0 -0
  130. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/survey-refine.md +0 -0
  131. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/survey-triage.md +0 -0
  132. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/reviewers/acl-purity.md +0 -0
  133. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/reviewers/house-style.md +0 -0
  134. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/lessons.md +0 -0
  135. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/analysis.md +0 -0
  136. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/bdd.md +0 -0
  137. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/implement.md +0 -0
  138. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/plan.md +0 -0
  139. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/review.md +0 -0
  140. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/spec.md +0 -0
  141. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/survey-refine.md +0 -0
  142. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/prompts/survey-triage.md +0 -0
  143. /package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/reviewers/bff-boundary.md +0 -0
  144. /package/{flows/packs/ace-integration → kits/j2ee-nextjs/packs/jsp-bff-nextjs}/reviewers/traceability.md +0 -0
  145. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/lessons.md +0 -0
  146. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/analysis.md +0 -0
  147. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/bdd.md +0 -0
  148. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/implement.md +0 -0
  149. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/plan.md +0 -0
  150. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/review.md +0 -0
  151. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/spec.md +0 -0
  152. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/survey-refine.md +0 -0
  153. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/prompts/survey-triage.md +0 -0
  154. /package/{flows/packs/ace-kafka → kits/j2ee-nextjs/packs/jsp-nextjs}/reviewers/traceability.md +0 -0
  155. /package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/reviewers/ux-fidelity.md +0 -0
  156. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/README.md +0 -0
  157. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/app/layout.js +0 -0
  158. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/app/page.js +0 -0
  159. /package/{flows/fixtures/scaffolds/kafka-streams-service/src/test/resources/features → kits/j2ee-nextjs/scaffolds/nextjs-spa/docs/specs}/.gitkeep +0 -0
  160. /package/{flows/fixtures/scaffolds/nextjs-spa/docs/specs → kits/j2ee-nextjs/scaffolds/nextjs-spa/features}/.gitkeep +0 -0
  161. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/next.config.js +0 -0
  162. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/package.json +0 -0
  163. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/nextjs-spa/tests/smoke.test.js +0 -0
  164. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/README.md +0 -0
  165. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/frontend/app/layout.js +0 -0
  166. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/frontend/app/page.js +0 -0
  167. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/frontend/next.config.js +0 -0
  168. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/frontend/package.json +0 -0
  169. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/frontend/tests/smoke.test.js +0 -0
  170. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/pom.xml +0 -0
  171. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/scripts/test.sh +0 -0
  172. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/src/main/java/com/meridian/bff/Application.java +0 -0
  173. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/src/main/resources/application.yaml +0 -0
  174. /package/{flows/fixtures → kits/j2ee-nextjs}/scaffolds/spring-bff/src/test/java/com/meridian/bff/ApplicationTests.java +0 -0
  175. /package/{flows/fixtures/scaffolds/nextjs-spa → kits/j2ee-nextjs/scaffolds/spring-bff/src/test/resources}/features/.gitkeep +0 -0
  176. /package/{flows → kits/mainframe-java}/packs/ace-integration/lessons.md +0 -0
  177. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/analysis.md +0 -0
  178. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/bdd.md +0 -0
  179. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/implement.md +0 -0
  180. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/plan.md +0 -0
  181. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/review.md +0 -0
  182. /package/{flows → kits/mainframe-java}/packs/ace-integration/prompts/spec.md +0 -0
  183. /package/{flows → kits/mainframe-java}/packs/ace-integration/reviewers/routing-fidelity.md +0 -0
  184. /package/{flows/packs/cobol-kafka → kits/mainframe-java/packs/ace-integration}/reviewers/traceability.md +0 -0
  185. /package/{flows → kits/mainframe-java}/packs/ace-kafka/lessons.md +0 -0
  186. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/analysis.md +0 -0
  187. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/bdd.md +0 -0
  188. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/implement.md +0 -0
  189. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/plan.md +0 -0
  190. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/review.md +0 -0
  191. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/spec.md +0 -0
  192. /package/{flows → kits/mainframe-java}/packs/ace-kafka/prompts/vectors.md +0 -0
  193. /package/{flows → kits/mainframe-java}/packs/ace-kafka/reviewers/event-contracts.md +0 -0
  194. /package/{flows → kits/mainframe-java}/packs/ace-kafka/reviewers/routing-fidelity.md +0 -0
  195. /package/{flows/packs/cobol-springboot → kits/mainframe-java/packs/ace-kafka}/reviewers/traceability.md +0 -0
  196. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/lessons.md +0 -0
  197. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-001-record-to-event.md +0 -0
  198. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-002-job-step-topology.md +0 -0
  199. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-003-checkpoint-idempotence.md +0 -0
  200. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-004-eod-totals-window.md +0 -0
  201. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-005-reject-topic.md +0 -0
  202. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-006-keyed-state-store.md +0 -0
  203. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-007-outbox.md +0 -0
  204. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-008-partition-key.md +0 -0
  205. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-009-batch-window-cutoff.md +0 -0
  206. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/patterns/PAT-STREAM-010-replay-backfill.md +0 -0
  207. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/analysis.md +0 -0
  208. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/bdd.md +0 -0
  209. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/implement.md +0 -0
  210. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/plan.md +0 -0
  211. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/review.md +0 -0
  212. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/spec.md +0 -0
  213. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/survey-refine.md +0 -0
  214. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/survey-triage.md +0 -0
  215. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/prompts/vectors.md +0 -0
  216. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/reviewers/cobol-fidelity.md +0 -0
  217. /package/{flows → kits/mainframe-java}/packs/cobol-kafka/reviewers/pattern-conformance.md +0 -0
  218. /package/{flows/packs/jsp-bff-nextjs → kits/mainframe-java/packs/cobol-kafka}/reviewers/traceability.md +0 -0
  219. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/lessons.md +0 -0
  220. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/analysis.md +0 -0
  221. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/bdd.md +0 -0
  222. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/implement.md +0 -0
  223. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/plan.md +0 -0
  224. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/review.md +0 -0
  225. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/spec.md +0 -0
  226. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/survey-refine.md +0 -0
  227. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/survey-triage.md +0 -0
  228. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/prompts/vectors.md +0 -0
  229. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/reviewers/cobol-fidelity.md +0 -0
  230. /package/{flows → kits/mainframe-java}/packs/cobol-springboot/reviewers/pattern-conformance.md +0 -0
  231. /package/{flows/packs/jsp-nextjs → kits/mainframe-java/packs/cobol-springboot}/reviewers/traceability.md +0 -0
  232. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-001-comp3-money.md +0 -0
  233. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-002-redefines.md +0 -0
  234. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-003-88-levels.md +0 -0
  235. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-004-perform-thru.md +0 -0
  236. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-005-file-status.md +0 -0
  237. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-006-sqlcode.md +0 -0
  238. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-007-validation-order.md +0 -0
  239. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-008-zoned-decimal.md +0 -0
  240. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-009-occurs-table.md +0 -0
  241. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-010-copybook-record.md +0 -0
  242. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-011-batch-counters.md +0 -0
  243. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-012-commit-frequency.md +0 -0
  244. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-013-abend.md +0 -0
  245. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-014-reject-file.md +0 -0
  246. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-015-accept-date.md +0 -0
  247. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-016-string-building.md +0 -0
  248. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-017-cursor-loop.md +0 -0
  249. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-018-yn-switches.md +0 -0
  250. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-019-shared-accumulators.md +0 -0
  251. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-020-tiered-fees.md +0 -0
  252. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-021-overdraft-floor.md +0 -0
  253. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-022-jcl-job-net.md +0 -0
  254. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-023-sort-step.md +0 -0
  255. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-024-fixed-width-records.md +0 -0
  256. /package/{flows → kits/mainframe-java}/patterns/PAT-COBOL-025-audit-rows.md +0 -0
  257. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/kafka-streams-service/README.md +0 -0
  258. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/kafka-streams-service/pom.xml +0 -0
  259. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/kafka-streams-service/scripts/replay.sh +0 -0
  260. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/kafka-streams-service/src/main/java/com/meridian/scaffold/Application.java +0 -0
  261. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/kafka-streams-service/src/test/java/com/meridian/scaffold/ApplicationTests.java +0 -0
  262. /package/{flows/fixtures/scaffolds/spring-bff → kits/mainframe-java/scaffolds/kafka-streams-service}/src/test/resources/features/.gitkeep +0 -0
  263. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/README.md +0 -0
  264. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/pom.xml +0 -0
  265. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/scripts/replay.sh +0 -0
  266. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/src/main/java/com/meridian/scaffold/Application.java +0 -0
  267. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/src/main/resources/application.yaml +0 -0
  268. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/src/test/java/com/meridian/scaffold/ApplicationTests.java +0 -0
  269. /package/{flows/fixtures → kits/mainframe-java}/scaffolds/spring-boot-service/src/test/resources/features/.gitkeep +0 -0
@@ -0,0 +1,73 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%@ page import="java.util.List" %>
3
+ <%@ page import="com.demobank.legacy.dto.BenfDTO" %>
4
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
5
+ <%-- HERO 3, step 1 of 3: wire transfer entry. Posts step=1 to TransferServlet
6
+ which stores a TransferDraft in HttpSession. Scriptlet + JSTL mix is
7
+ historical: the beneficiary combo predates the JSTL migration. --%>
8
+ <jsp:include page="header.jsp" />
9
+
10
+ <h1>Wire Transfer &mdash; Step 1 of 3</h1>
11
+
12
+ <c:if test="${not empty stepErr}">
13
+ <p class="msgErr"><c:out value="${stepErr}" /></p>
14
+ </c:if>
15
+
16
+ <form id="trfForm" class="legacy" method="post" action="transfer">
17
+ <input type="hidden" name="step" value="1" />
18
+ <div class="row">
19
+ <label for="benfId">Beneficiary</label>
20
+ <select id="benfId" name="benfId">
21
+ <option value="">-- select --</option>
22
+ <%
23
+ // Legacy: combo rendered with a scriptlet since 2007 (pre-JSTL page).
24
+ List benfCombo = (List) request.getAttribute("benfCombo");
25
+ if (benfCombo != null) {
26
+ for (int i = 0; i < benfCombo.size(); i++) {
27
+ BenfDTO b = (BenfDTO) benfCombo.get(i);
28
+ %>
29
+ <option value="<%= b.getBenfId() %>"><%= b.getBenfNm() %> - <%= b.getBenfIban() %></option>
30
+ <%
31
+ }
32
+ }
33
+ %>
34
+ </select>
35
+ <a href="beneficiary?action=new">new beneficiary</a>
36
+ </div>
37
+ <div class="row">
38
+ <label for="trfAmt">Amount</label>
39
+ <input type="text" id="trfAmt" name="trfAmt" size="12" value="<c:out value='${draft.trfAmt}' />" />
40
+ <select id="trfCcy" name="trfCcy">
41
+ <option value="EUR" selected="selected">EUR</option>
42
+ </select>
43
+ </div>
44
+ <div class="row">
45
+ <label for="trfDesc">Description</label>
46
+ <input type="text" id="trfDesc" name="trfDesc" size="50" maxlength="140"
47
+ value="<c:out value='${draft.trfDesc}' />" />
48
+ </div>
49
+ <div class="row">
50
+ <label for="valDt">Value date</label>
51
+ <input type="text" id="valDt" name="valDt" size="10" value="<c:out value='${draft.valDt}' />" />
52
+ <span class="small">(dd/mm/yyyy, leave blank for first available)</span>
53
+ </div>
54
+ <div class="row">
55
+ <input type="submit" class="btn" value="Continue" />
56
+ </div>
57
+ </form>
58
+
59
+ <script type="text/javascript">
60
+ $(document).ready(function() {
61
+ $("#trfForm").submit(function() {
62
+ var ok = true;
63
+ if (dbTrim($("#benfId").val()) == "") { dbMark("#benfId", "Select a beneficiary"); ok = false; }
64
+ else dbUnmark("#benfId");
65
+ if (!dbAmount("#trfAmt")) ok = false;
66
+ // Description optional client-side; host rejects some characters,
67
+ // server strips them silently (see TransferServlet.sanitizeDesc).
68
+ return ok;
69
+ });
70
+ });
71
+ </script>
72
+
73
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,40 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%@ page import="com.demobank.legacy.web.TransferDraft" %>
3
+ <%-- HERO 3, step 2 of 3: review. All data comes from the TransferDraft in
4
+ HttpSession (attribute "trfDraft"); nothing is re-posted except the
5
+ confirmation itself. Direct GET without a draft bounces to step 1. --%>
6
+ <jsp:include page="header.jsp" />
7
+
8
+ <h1>Wire Transfer &mdash; Step 2 of 3: Review</h1>
9
+
10
+ <%
11
+ TransferDraft draft = (TransferDraft) session.getAttribute("trfDraft");
12
+ if (draft == null) {
13
+ // Session expired or deep link: back to step 1.
14
+ response.sendRedirect("transfer");
15
+ return;
16
+ }
17
+ %>
18
+
19
+ <table class="data" style="width: 60%;">
20
+ <tr><th>Beneficiary</th><td><%= draft.getBenfNm() %></td></tr>
21
+ <tr><th>IBAN</th><td><%= draft.getBenfIban() %></td></tr>
22
+ <tr><th>Amount</th><td><%= draft.getTrfCcy() %> <%= draft.getTrfAmt() %></td></tr>
23
+ <tr><th>Description</th><td><%= draft.getTrfDesc() == null ? "" : draft.getTrfDesc() %></td></tr>
24
+ <tr><th>Value date</th><td><%= draft.getValDt() %></td></tr>
25
+ <tr><th>Fee</th><td>EUR <%= draft.getFeeAmt() %> (standard SEPA)</td></tr>
26
+ </table>
27
+
28
+ <p class="msgErr">
29
+ Please verify the details above. On confirmation the transfer is sent to
30
+ the bank host and can no longer be amended online.
31
+ </p>
32
+
33
+ <form method="post" action="transfer">
34
+ <input type="hidden" name="step" value="3" />
35
+ <input type="submit" class="btn" value="Confirm transfer" />
36
+ <input type="button" class="btn btnGrey" value="Back"
37
+ onclick="window.location='transfer';" />
38
+ </form>
39
+
40
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,76 @@
1
+ # DemoBank house rules
2
+
3
+ These rules apply to every page added to this repository — by people or by
4
+ automated converters. The exemplar pages (`src/app/cards/page.tsx`,
5
+ `src/app/profile/page.tsx`) demonstrate all of them; imitate the exemplars
6
+ before inventing anything.
7
+
8
+ ## File layout
9
+
10
+ ```text
11
+ contracts/<domain>.openapi.yaml wire contract (OpenAPI 3.0)
12
+ src/app/<route>/page.tsx one page per route, always "use client"
13
+ src/auth/AuthProvider.tsx SSO stub — consume, never reimplement
14
+ src/components/ design system (import from '@/components')
15
+ src/services/<domain>/port.ts typed interface + factory type
16
+ src/services/<domain>/mock.ts mock adapter with fixture data
17
+ src/services/registry.ts the only place adapters are wired to ports
18
+ src/theme/ tokens + component CSS
19
+ tests/<route>.page.test.tsx one component test file per page
20
+ ```
21
+
22
+ Imports use the `@/` alias (`@/components`, `@/services/registry`); no deep
23
+ relative paths across top-level folders.
24
+
25
+ ## Pages
26
+
27
+ - Every page starts with `'use client'` and default-exports the page
28
+ component. No server components fetching data, no API routes.
29
+ - Every page renders exactly one `PageLayout` at its root and puts content
30
+ in `Card`s.
31
+ - Get the signed-in user from `useAuth()`. Never implement login, tokens, or
32
+ redirects.
33
+ - Loading states: hold `null` until the port resolves and render
34
+ `<p className="db-loading">…</p>` meanwhile (see the exemplars).
35
+
36
+ ## Components
37
+
38
+ - Compose the design system: `Button`, `Field`, `Form`, `DataTable`,
39
+ `Stepper`, `Card`, `PageLayout`. Do not add external UI kits and do not
40
+ hand-roll tables, labels, or submit handling that a component covers.
41
+ - Tabular data goes through `DataTable` with declarative columns.
42
+ - Every form control sits inside a `Field` (label + error handled for you)
43
+ and every form is a `Form` render prop (values, errors, setValue,
44
+ submitting). Validation is a pure function next to the page returning a
45
+ `ValidationErrors<T>` map.
46
+ - Styling: use the `db-*` classes from `src/theme/components.css`, which
47
+ consume only the custom properties in `src/theme/tokens.css`. No inline
48
+ colors, no new CSS files per page, no CSS-in-JS.
49
+
50
+ ## Services (ports and adapters)
51
+
52
+ - No `fetch`/network calls in components — ever. Pages call ports; adapters
53
+ talk to the gateway.
54
+ - Each domain gets `src/services/<domain>/port.ts` (interface + `...Factory`
55
+ type), `src/services/<domain>/mock.ts` (deterministic fixture data, small
56
+ artificial delay), and `contracts/<domain>.openapi.yaml` matching the port.
57
+ - Pages obtain ports only from `src/services/registry.ts`. Swapping a mock
58
+ for a real adapter is a one-line change there; pages never import adapters
59
+ directly.
60
+
61
+ ## Tests
62
+
63
+ - One test file per page under `tests/`, named `<route>.page.test.tsx`,
64
+ written with Vitest + React Testing Library.
65
+ - Style: `vi.mock('@/services/registry', …)` with instrumented port
66
+ functions, render the page inside `AuthProvider`, then assert (1) fields
67
+ or rows render, (2) validation fires and blocks the port on bad input,
68
+ (3) the port is called with the expected payload.
69
+ - Tests are deterministic and network-free.
70
+
71
+ ## TypeScript and lint
72
+
73
+ - `strict` TypeScript; no `any`, no type assertions (`as`), no `@ts-ignore`.
74
+ - Model domain data with `readonly` interfaces exported from the port.
75
+ - Gates that must stay green: `pnpm typecheck && pnpm lint && pnpm test &&
76
+ pnpm build`.
@@ -0,0 +1,46 @@
1
+ # demo-bank-nextjs
2
+
3
+ Synthetic, client-only Next.js SPA for a fictional bank ("DemoBank"). This is
4
+ the **destination fixture** for the llm4ts bank-conversion PoC: converted
5
+ legacy pages land here, and the convert flow judges them by how well they
6
+ imitate this repo's house style (see `CONTRIBUTING.md` and the exemplar
7
+ pages `src/app/cards/page.tsx` and `src/app/profile/page.tsx`).
8
+
9
+ Everything is fake: SSO is a stubbed `AuthProvider`, service adapters are
10
+ in-memory mocks behind typed ports, and the data is deterministic fixture
11
+ data. No real bank, brand, or person is referenced.
12
+
13
+ ## Install and run
14
+
15
+ This package is standalone — it is **not** part of the llm4ts pnpm
16
+ workspace, so install with the workspace ignored:
17
+
18
+ ```bash
19
+ pnpm install --ignore-workspace
20
+ pnpm dev # local dev server
21
+ ```
22
+
23
+ Gates (the convert flow's hard gates — all must pass):
24
+
25
+ ```bash
26
+ pnpm typecheck && pnpm lint && pnpm test && pnpm build
27
+ ```
28
+
29
+ `pnpm build` produces a static export in `out/` (`output: 'export'`; there
30
+ is no server runtime).
31
+
32
+ ## Offline notes
33
+
34
+ - `pnpm-lock.yaml` is committed; installs are deterministic.
35
+ - To run on a machine without network (e.g. workshop stage): warm the pnpm
36
+ store once while online with `pnpm install --ignore-workspace` here, then
37
+ in a seeded copy run `pnpm install --ignore-workspace --offline` — pnpm
38
+ resolves everything from the lockfile and the local store.
39
+ - Tests, typecheck, lint, and build never touch the network.
40
+
41
+ ## Seeding a working copy
42
+
43
+ The fixture is materialized as a standalone git repository by
44
+ `../seed-nextjs.mjs` (node_modules and build output are excluded; the
45
+ initial commit is deterministic). `../smoke-nextjs.mjs` seeds into a temp
46
+ dir and asserts the expected files exist.
@@ -0,0 +1,57 @@
1
+ # Wire contract for the cards domain. Mirrors src/services/cards/port.ts —
2
+ # keep the two in sync. Served by the API gateway; the SPA never calls it
3
+ # directly outside the cards adapter.
4
+ openapi: 3.0.3
5
+ info:
6
+ title: DemoBank Cards API
7
+ version: 1.0.0
8
+ paths:
9
+ /customers/{customerId}/cards:
10
+ get:
11
+ operationId: listCards
12
+ summary: List payment cards for a customer
13
+ parameters:
14
+ - name: customerId
15
+ in: path
16
+ required: true
17
+ schema:
18
+ type: string
19
+ responses:
20
+ '200':
21
+ description: The customer's cards
22
+ content:
23
+ application/json:
24
+ schema:
25
+ type: array
26
+ items:
27
+ $ref: '#/components/schemas/CardSummary'
28
+ components:
29
+ schemas:
30
+ Money:
31
+ type: object
32
+ required: [amount, currency]
33
+ properties:
34
+ amount:
35
+ type: number
36
+ currency:
37
+ type: string
38
+ description: ISO 4217 code
39
+ CardSummary:
40
+ type: object
41
+ required: [id, label, maskedPan, kind, status, balance]
42
+ properties:
43
+ id:
44
+ type: string
45
+ label:
46
+ type: string
47
+ maskedPan:
48
+ type: string
49
+ description: Masked PAN, e.g. "**** **** **** 4242"
50
+ kind:
51
+ type: string
52
+ enum: [debit, credit]
53
+ status:
54
+ type: string
55
+ enum: [active, blocked]
56
+ balance:
57
+ $ref: '#/components/schemas/Money'
@@ -0,0 +1,73 @@
1
+ # Wire contract for the profile domain. Mirrors src/services/profile/port.ts —
2
+ # keep the two in sync. Served by the API gateway; the SPA never calls it
3
+ # directly outside the profile adapter.
4
+ openapi: 3.0.3
5
+ info:
6
+ title: DemoBank Profile API
7
+ version: 1.0.0
8
+ paths:
9
+ /customers/{customerId}/profile:
10
+ get:
11
+ operationId: getProfile
12
+ summary: Fetch a customer's profile
13
+ parameters:
14
+ - name: customerId
15
+ in: path
16
+ required: true
17
+ schema:
18
+ type: string
19
+ responses:
20
+ '200':
21
+ description: The customer's profile
22
+ content:
23
+ application/json:
24
+ schema:
25
+ $ref: '#/components/schemas/Profile'
26
+ put:
27
+ operationId: updateProfile
28
+ summary: Update a customer's profile
29
+ parameters:
30
+ - name: customerId
31
+ in: path
32
+ required: true
33
+ schema:
34
+ type: string
35
+ requestBody:
36
+ required: true
37
+ content:
38
+ application/json:
39
+ schema:
40
+ $ref: '#/components/schemas/ProfileUpdate'
41
+ responses:
42
+ '200':
43
+ description: The updated profile
44
+ content:
45
+ application/json:
46
+ schema:
47
+ $ref: '#/components/schemas/Profile'
48
+ components:
49
+ schemas:
50
+ Profile:
51
+ type: object
52
+ required: [customerId, fullName, email, phone]
53
+ properties:
54
+ customerId:
55
+ type: string
56
+ fullName:
57
+ type: string
58
+ email:
59
+ type: string
60
+ format: email
61
+ phone:
62
+ type: string
63
+ ProfileUpdate:
64
+ type: object
65
+ required: [fullName, email, phone]
66
+ properties:
67
+ fullName:
68
+ type: string
69
+ email:
70
+ type: string
71
+ format: email
72
+ phone:
73
+ type: string
@@ -0,0 +1,24 @@
1
+ // Minimal flat config: typescript-eslint recommended plus a few house rules.
2
+ // Deliberately no framework plugin zoo — the hard gates are typecheck, lint,
3
+ // test, build; the house style lives in CONTRIBUTING.md and the exemplars.
4
+ import tseslint from 'typescript-eslint';
5
+
6
+ export default tseslint.config(
7
+ {
8
+ ignores: ['node_modules/', '.next/', 'out/', 'next-env.d.ts'],
9
+ },
10
+ ...tseslint.configs.recommended,
11
+ {
12
+ rules: {
13
+ '@typescript-eslint/no-explicit-any': 'error',
14
+ '@typescript-eslint/consistent-type-assertions': [
15
+ 'error',
16
+ { assertionStyle: 'never' },
17
+ ],
18
+ '@typescript-eslint/consistent-type-imports': 'error',
19
+ eqeqeq: ['error', 'always'],
20
+ 'no-console': 'error',
21
+ 'prefer-const': 'error',
22
+ },
23
+ },
24
+ );
@@ -0,0 +1,5 @@
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+
4
+ // NOTE: This file should not be edited
5
+ // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Client-only SPA: static export, served from object storage behind a CDN.
3
+ * Mirrors kits/j2ee-nextjs/scaffolds/nextjs-spa (the bank-provided scaffold).
4
+ * @type {import('next').NextConfig}
5
+ */
6
+ const nextConfig = {
7
+ output: 'export',
8
+ };
9
+
10
+ export default nextConfig;
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "demo-bank-nextjs",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev",
7
+ "build": "next build",
8
+ "typecheck": "tsc --noEmit",
9
+ "lint": "eslint .",
10
+ "test": "vitest run"
11
+ },
12
+ "dependencies": {
13
+ "next": "15.3.4",
14
+ "react": "19.1.0",
15
+ "react-dom": "19.1.0"
16
+ },
17
+ "devDependencies": {
18
+ "@testing-library/dom": "^10.4.0",
19
+ "@testing-library/react": "^16.3.0",
20
+ "@types/node": "^22.15.0",
21
+ "@types/react": "^19.1.0",
22
+ "@types/react-dom": "^19.1.0",
23
+ "eslint": "^9.29.0",
24
+ "jsdom": "^26.1.0",
25
+ "typescript": "5.8.3",
26
+ "typescript-eslint": "^8.34.0",
27
+ "vitest": "^3.2.0"
28
+ }
29
+ }