@llm4ts/shell 0.17.0 → 0.18.0

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 +8 -18
  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 +156 -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 +45 -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 +1 -1
  109. package/{flows → kits/j2ee-nextjs}/packs/jsp-bff-nextjs/pack.md +1 -1
  110. package/{flows → kits/j2ee-nextjs}/packs/jsp-nextjs/pack.md +1 -1
  111. package/kits/mainframe-java/README.md +31 -0
  112. package/{flows → kits/mainframe-java}/packs/ace-integration/pack.md +1 -1
  113. package/{flows → kits/mainframe-java}/packs/ace-kafka/pack.md +1 -1
  114. package/{flows → kits/mainframe-java}/packs/cobol-kafka/pack.md +1 -1
  115. package/{flows → kits/mainframe-java}/packs/cobol-springboot/pack.md +1 -1
  116. package/package.json +6 -6
  117. package/src/Cli.ts +92 -9
  118. package/src/FlowCatalog.ts +29 -13
  119. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-001-jstl-table.md +0 -0
  120. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-002-jquery-validation.md +0 -0
  121. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-003-session-stepper.md +0 -0
  122. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-004-esb-port.md +0 -0
  123. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/patterns/PAT-J2EE-005-include-shell.md +0 -0
  124. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/analysis.md +0 -0
  125. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/bdd.md +0 -0
  126. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/implement.md +0 -0
  127. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/plan.md +0 -0
  128. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/review.md +0 -0
  129. /package/{flows → kits/j2ee-nextjs}/packs/j2ee-nextjs-spa/prompts/spec.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,32 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Static FAQ (filler). Also mapped as the 500 error page in web.xml. --%>
3
+ <jsp:include page="header.jsp" />
4
+
5
+ <h1>Help &amp; FAQ</h1>
6
+
7
+ <h2>I cannot see my accounts</h2>
8
+ <p>
9
+ Balances are retrieved from the central host. If the overview shows no
10
+ accounts, retry in a few minutes; during nightly batch (00:30-01:30 CET)
11
+ positions may be unavailable.
12
+ </p>
13
+
14
+ <h2>How long does a wire transfer take?</h2>
15
+ <p>
16
+ SEPA transfers in EUR are settled on the next business day. Transfers
17
+ entered after 17:30 CET are processed the following business day.
18
+ </p>
19
+
20
+ <h2>Is there a transfer limit?</h2>
21
+ <p>
22
+ The default online limit is EUR 5,000.00 per day. Higher limits can be
23
+ arranged at your branch.
24
+ </p>
25
+
26
+ <h2>Who do I contact?</h2>
27
+ <p>
28
+ Customer service: 800 000 000 (Mon-Fri 8:00-20:00), or write from the
29
+ <a href="messages.jsp">Messages</a> page.
30
+ </p>
31
+
32
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1 @@
1
+ /* Placeholder stub standing in for jQuery 1.12.4 (jquery-1.12.4.min.js). The real minified library is deliberately not vendored in this synthetic fixture. */
@@ -0,0 +1,79 @@
1
+ /*
2
+ * DemoBank shared form validation helpers.
3
+ * Hand-rolled long before any validation plugin was approved by the
4
+ * architecture board (see ticket DB-1187). Every page wires these up
5
+ * slightly differently -- do not "clean up" without regression testing
6
+ * beneficiaryEdit.jsp and transferStep1.jsp.
7
+ *
8
+ * History:
9
+ * 2009-03-12 gferri initial version
10
+ * 2010-11-02 rmasi IBAN check for SEPA go-live
11
+ * 2012-06-21 lgreco amount check, decimal comma tolerated
12
+ */
13
+
14
+ function dbTrim(s) {
15
+ if (s == null) return ""
16
+ return String(s).replace(/^\s+|\s+$/g, "")
17
+ }
18
+
19
+ /* Required field: returns true when non-empty, otherwise marks the field. */
20
+ function dbRequired(fld, msg) {
21
+ var v = dbTrim($(fld).val())
22
+ if (v.length == 0) {
23
+ dbMark(fld, msg || "Required field")
24
+ return false
25
+ }
26
+ dbUnmark(fld)
27
+ return true
28
+ }
29
+
30
+ /* Very loose IBAN shape check: 2 letters, 2 digits, then 10..30 chars.
31
+ * The REAL check is on the host side (ESB), this is only cosmetic.
32
+ * Spaces are tolerated and stripped. */
33
+ function dbIbanShape(fld) {
34
+ var v = dbTrim($(fld).val()).replace(/ /g, "").toUpperCase()
35
+ if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{10,30}$/.test(v)) {
36
+ dbMark(fld, "IBAN format not recognised")
37
+ return false
38
+ }
39
+ dbUnmark(fld)
40
+ return true
41
+ }
42
+
43
+ /* Amount: positive, max 2 decimals, comma or dot accepted.
44
+ * NB: server side only accepts the dot -- known mismatch, ticket DB-3302. */
45
+ function dbAmount(fld) {
46
+ var v = dbTrim($(fld).val()).replace(",", ".")
47
+ if (!/^[0-9]+(\.[0-9]{1,2})?$/.test(v) || parseFloat(v) <= 0) {
48
+ dbMark(fld, "Enter a positive amount (max 2 decimals)")
49
+ return false
50
+ }
51
+ dbUnmark(fld)
52
+ return true
53
+ }
54
+
55
+ /* Max length helper used by the beneficiary name field. */
56
+ function dbMaxLen(fld, n) {
57
+ var v = dbTrim($(fld).val())
58
+ if (v.length > n) {
59
+ dbMark(fld, "Maximum " + n + " characters")
60
+ return false
61
+ }
62
+ dbUnmark(fld)
63
+ return true
64
+ }
65
+
66
+ function dbMark(fld, msg) {
67
+ $(fld).addClass("fldErr")
68
+ var id = $(fld).attr("id")
69
+ if ($("#err_" + id).length == 0) {
70
+ $(fld).after('<span class="errMsg" id="err_' + id + '"></span>')
71
+ }
72
+ $("#err_" + id).text(msg)
73
+ }
74
+
75
+ function dbUnmark(fld) {
76
+ $(fld).removeClass("fldErr")
77
+ var id = $(fld).attr("id")
78
+ $("#err_" + id).remove()
79
+ }
@@ -0,0 +1,29 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Login shell (filler). Authentication is out of scope for this fixture:
3
+ the form posts to the container-managed j_security_check stub and
4
+ nothing checks it. Welcome page per web.xml. --%>
5
+ <jsp:include page="header.jsp" />
6
+
7
+ <h1>Internet Banking Login</h1>
8
+
9
+ <form class="legacy" method="post" action="j_security_check">
10
+ <div class="row">
11
+ <label for="j_username">Customer id</label>
12
+ <input type="text" id="j_username" name="j_username" size="20" value="CUST0042" />
13
+ </div>
14
+ <div class="row">
15
+ <label for="j_password">PIN</label>
16
+ <input type="password" id="j_password" name="j_password" size="20" />
17
+ </div>
18
+ <div class="row">
19
+ <input type="submit" class="btn" value="Login" />
20
+ </div>
21
+ </form>
22
+
23
+ <p class="small">
24
+ Forgot your PIN? Call 800 000 000 or visit your branch with a valid id
25
+ document. Never share your PIN with anyone: DemoBank staff will never ask
26
+ for it.
27
+ </p>
28
+
29
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,34 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Secure messages inbox (filler). Static demo rows; the real inbox
3
+ servlet lives in the CRM webapp, not this portal. --%>
4
+ <jsp:include page="header.jsp" />
5
+
6
+ <h1>Messages</h1>
7
+
8
+ <table class="data">
9
+ <tr>
10
+ <th>Date</th>
11
+ <th>From</th>
12
+ <th>Subject</th>
13
+ </tr>
14
+ <tr>
15
+ <td>02/01/2013</td>
16
+ <td>DemoBank</td>
17
+ <td>Your December statement is available</td>
18
+ </tr>
19
+ <tr class="odd">
20
+ <td>18/12/2012</td>
21
+ <td>DemoBank</td>
22
+ <td>New security recommendations for online banking</td>
23
+ </tr>
24
+ <tr>
25
+ <td>02/11/2012</td>
26
+ <td>DemoBank</td>
27
+ <td>Fee schedule update effective 01/01/2013</td>
28
+ </tr>
29
+ </table>
30
+
31
+ <p><input type="button" class="btn" value="New message"
32
+ onclick="alert('Messaging is handled by the branch CRM. Please call 800 000 000.');" /></p>
33
+
34
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,14 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Main navigation. NOTE: keep in sync with web.xml mappings (ticket DB-2141). --%>
3
+ <div id="nav">
4
+ <ul>
5
+ <li><a href="dashboard.jsp">Home</a></li>
6
+ <li><a href="accountOverview">Accounts</a></li>
7
+ <li><a href="beneficiary">Beneficiaries</a></li>
8
+ <li><a href="transfer">Wire Transfer</a></li>
9
+ <li><a href="messages.jsp">Messages</a></li>
10
+ <li><a href="profile.jsp">Profile</a></li>
11
+ <li><a href="settings.jsp">Settings</a></li>
12
+ <li><a href="help.jsp">Help</a></li>
13
+ </ul>
14
+ </div>
@@ -0,0 +1,34 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- DEAD PAGE. Single-page transfer form, replaced by the 3-step wizard
3
+ in release 2.4 (2011). Kept "just in case" for the branch kiosks and
4
+ never removed. Posts to /doTransfer which no longer exists in web.xml. --%>
5
+ <jsp:include page="header.jsp" />
6
+
7
+ <h1>Wire Transfer</h1>
8
+
9
+ <form class="legacy" method="post" action="doTransfer">
10
+ <div class="row">
11
+ <label for="benfIban">Beneficiary IBAN</label>
12
+ <input type="text" id="benfIban" name="benfIban" size="40"
13
+ value="IT00 DEMO 0101 0101 0000 0000 001" />
14
+ </div>
15
+ <div class="row">
16
+ <label for="benfNm">Beneficiary name</label>
17
+ <input type="text" id="benfNm" name="benfNm" size="50" />
18
+ </div>
19
+ <div class="row">
20
+ <label for="amt">Amount (EUR)</label>
21
+ <input type="text" id="amt" name="amt" size="12" />
22
+ </div>
23
+ <div class="row">
24
+ <label for="desc">Description</label>
25
+ <input type="text" id="desc" name="desc" size="50" />
26
+ </div>
27
+ <div class="row">
28
+ <input type="submit" class="btn" value="Execute transfer" />
29
+ </div>
30
+ </form>
31
+
32
+ <p class="small">All fields are mandatory. Transfers over EUR 5,000.00 must be arranged at the branch.</p>
33
+
34
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,26 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Customer profile (filler). Data is hard-coded demo content; the host
3
+ profile inquiry (ESB_CUST_INQ) was never wired into this page. --%>
4
+ <jsp:include page="header.jsp" />
5
+
6
+ <%
7
+ String custId = (String) session.getAttribute("custId");
8
+ if (custId == null) custId = "CUST0042";
9
+ %>
10
+ <h1>Customer Profile</h1>
11
+
12
+ <table class="data" style="width: 60%;">
13
+ <tr><th>Customer id</th><td><%= custId %></td></tr>
14
+ <tr><th>Name</th><td>MARIO BIANCHI</td></tr>
15
+ <tr><th>Address</th><td>VIA ROMA 1, 20100 MILANO (MI)</td></tr>
16
+ <tr><th>Email</th><td>mario.bianchi@example.invalid</td></tr>
17
+ <tr><th>Phone</th><td>+39 02 0000 0000</td></tr>
18
+ <tr><th>Branch</th><td>0042 - MILANO CENTRO</td></tr>
19
+ </table>
20
+
21
+ <p class="small">
22
+ To update your personal data please visit your branch with a valid id
23
+ document. Online profile update is not yet available.
24
+ </p>
25
+
26
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,23 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- DEAD PAGE. Q3 2011 deposit campaign, expired 30/09/2011. Marketing
3
+ asked to keep it "until the next campaign"; there was no next campaign. --%>
4
+ <jsp:include page="header.jsp" />
5
+
6
+ <h1>DemoBank Summer Deposit 2011</h1>
7
+
8
+ <p class="msgOk">Promotional rate 2.75% gross on new deposits until 30/09/2011!</p>
9
+
10
+ <ul>
11
+ <li>Minimum deposit: EUR 5,000.00</li>
12
+ <li>6 month term, no early withdrawal fee</li>
13
+ <li>Reserved to sums not already held with DemoBank</li>
14
+ </ul>
15
+
16
+ <p>
17
+ To subscribe visit your branch or call 800 000 000. Terms and conditions
18
+ in the information sheet available at every branch.
19
+ </p>
20
+
21
+ <p class="small">Offer valid 01/07/2011 - 30/09/2011. Rates before tax.</p>
22
+
23
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,34 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- Settings page (filler). Toggles are rendered but wired to nothing:
3
+ the save servlet was never built (ticket DB-1560, parked 2010). --%>
4
+ <jsp:include page="header.jsp" />
5
+
6
+ <h1>Settings</h1>
7
+
8
+ <form class="legacy" method="post" action="#">
9
+ <div class="row">
10
+ <label for="lang">Language</label>
11
+ <select id="lang" name="lang">
12
+ <option value="it" selected="selected">Italiano</option>
13
+ <option value="en">English</option>
14
+ </select>
15
+ </div>
16
+ <div class="row">
17
+ <label for="stmtMode">Statement delivery</label>
18
+ <select id="stmtMode" name="stmtMode">
19
+ <option value="P">Paper</option>
20
+ <option value="E" selected="selected">Electronic</option>
21
+ </select>
22
+ </div>
23
+ <div class="row">
24
+ <label for="smsAlert">SMS alerts</label>
25
+ <input type="checkbox" id="smsAlert" name="smsAlert" checked="checked" />
26
+ over threshold EUR
27
+ <input type="text" name="smsThr" size="8" value="500.00" />
28
+ </div>
29
+ <div class="row">
30
+ <input type="submit" class="btn" value="Save" onclick="alert('Settings service temporarily unavailable.'); return false;" />
31
+ </div>
32
+ </form>
33
+
34
+ <jsp:include page="footer.jsp" />
@@ -0,0 +1,39 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%-- DEAD PAGE. Developer scratch page for poking the servlets by hand.
3
+ Should never have shipped to production (it did, release 2.3). Not
4
+ linked from anywhere; security review DB-SEC-77 flagged it in 2012,
5
+ removal still pending. --%>
6
+ <html>
7
+ <head>
8
+ <title>portal test harness - INTERNAL</title>
9
+ <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
10
+ </head>
11
+ <body style="font-family: monospace;">
12
+ <h3>portal test harness (dev only)</h3>
13
+
14
+ <p>
15
+ <a href="accountOverview?fmt=json">acct list json</a> |
16
+ <a href="beneficiary">benf list</a> |
17
+ <a href="transfer">trf step1</a>
18
+ </p>
19
+
20
+ <form method="post" action="transfer">
21
+ <input type="hidden" name="step" value="1" />
22
+ benfId <input type="text" name="benfId" value="B0001" size="6" />
23
+ amt <input type="text" name="trfAmt" value="1.00" size="8" />
24
+ ccy <input type="text" name="trfCcy" value="EUR" size="4" />
25
+ <input type="submit" value="post step1" />
26
+ </form>
27
+
28
+ <pre id="out"></pre>
29
+ <script type="text/javascript">
30
+ // dump the acct json into the pre for eyeballing
31
+ $(function() {
32
+ $.get("accountOverview", { fmt: "json" }, function(d) {
33
+ $("#out").text(typeof d == "string" ? d : JSON.stringify(d));
34
+ });
35
+ });
36
+ </script>
37
+
38
+ </body>
39
+ </html>
@@ -0,0 +1,35 @@
1
+ <%@ page contentType="text/html; charset=ISO-8859-1" %>
2
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3
+ <%-- HERO 3, step 3 of 3: result screen. TransferServlet forwards here after
4
+ ESB_TRF_EXEC with a TrfDTO in request attribute "trfRes"; the session
5
+ draft has been cleared by then. --%>
6
+ <jsp:include page="header.jsp" />
7
+
8
+ <h1>Wire Transfer &mdash; Completed</h1>
9
+
10
+ <c:choose>
11
+ <c:when test="${trfRes.status == 'OK'}">
12
+ <p class="msgOk">Transfer accepted by the bank host.</p>
13
+ <table class="data" style="width: 60%;">
14
+ <tr><th>Reference</th><td><c:out value="${trfRes.trfRef}" /></td></tr>
15
+ <tr><th>Beneficiary</th><td><c:out value="${trfRes.benfNm}" /></td></tr>
16
+ <tr><th>Amount</th><td><c:out value="${trfRes.trfCcy}" /> <c:out value="${trfRes.trfAmt}" /></td></tr>
17
+ <tr><th>Value date</th><td><c:out value="${trfRes.valDt}" /></td></tr>
18
+ </table>
19
+ <p>Keep the reference number for any enquiry with customer service.</p>
20
+ </c:when>
21
+ <c:otherwise>
22
+ <p class="msgErr">
23
+ The transfer was NOT executed:
24
+ <c:out value="${trfRes.hostMsg}" /> (code <c:out value="${trfRes.hostRc}" />)
25
+ </p>
26
+ <p>No amount has been debited. Please retry later or contact your branch.</p>
27
+ </c:otherwise>
28
+ </c:choose>
29
+
30
+ <p>
31
+ <a class="btn" href="transfer">New transfer</a>
32
+ <a class="btn btnGrey" href="accountOverview">Back to accounts</a>
33
+ </p>
34
+
35
+ <jsp:include page="footer.jsp" />
@@ -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.