ApiLogicServer 15.0.61__py3-none-any.whl → 15.1.0__py3-none-any.whl

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 (531) hide show
  1. api_logic_server_cli/api_logic_server.py +4 -3
  2. api_logic_server_cli/api_logic_server_info.yaml +2 -2
  3. api_logic_server_cli/cli.py +2 -2
  4. api_logic_server_cli/database/basic_demo.sqlite +0 -0
  5. api_logic_server_cli/genai/{genai_admin_app.py → genai_react_app.py} +10 -2
  6. api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md +321 -2
  7. api_logic_server_cli/prototypes/base/docs/training/logic_bank_api.prompt +27 -0
  8. api_logic_server_cli/prototypes/base/logic/logic_discovery/use_case.py +5 -1
  9. api_logic_server_cli/prototypes/base/test/readme_test.md +395 -0
  10. api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
  11. api_logic_server_cli/prototypes/basic_demo/docs/models-not-code.png +0 -0
  12. api_logic_server_cli/prototypes/basic_demo/docs/runtime engines.png +0 -0
  13. api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
  14. api_logic_server_cli/prototypes/basic_demo/logic/procedural/credit_service.py +204 -0
  15. api_logic_server_cli/prototypes/manager/.github/.copilot-instructions.md +1 -12
  16. api_logic_server_cli/prototypes/manager/.vscode/launch.json +2 -1
  17. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/For_VSCode.dockerfile +10 -0
  18. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/devcontainer.json +64 -0
  19. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/readme.md +1 -0
  20. api_logic_server_cli/prototypes/manager/samples/basic_demo/.devcontainer-option/setup.sh +10 -0
  21. api_logic_server_cli/prototypes/manager/samples/basic_demo/.env +4 -0
  22. api_logic_server_cli/prototypes/manager/samples/basic_demo/.github/.copilot-instructions.md +581 -0
  23. api_logic_server_cli/prototypes/manager/samples/basic_demo/.gitignore +9 -0
  24. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/ApiLogicServer.xml +24 -0
  25. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Report_Behave_Logic.xml +24 -0
  26. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Run_Behave.xml +24 -0
  27. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/Windows_Run_Behave.xml +24 -0
  28. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run___No_Security.xml +25 -0
  29. api_logic_server_cli/prototypes/manager/samples/basic_demo/.idea/runConfigurations/run_docker.xml +59 -0
  30. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/launch.json +314 -0
  31. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/settings.json +40 -0
  32. api_logic_server_cli/prototypes/manager/samples/basic_demo/.vscode/venv_init.sh +64 -0
  33. api_logic_server_cli/prototypes/manager/samples/basic_demo/_config.yml +8 -0
  34. api_logic_server_cli/prototypes/manager/samples/basic_demo/_layouts/redirect.html +15 -0
  35. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/__init__.py +0 -0
  36. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/auto_discovery.py +27 -0
  37. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_discovery.py +97 -0
  38. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/mcp_expose_api_models.py +53 -0
  39. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/new_service.py +21 -0
  40. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/newer_service.py +21 -0
  41. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/ontimize_api.py +495 -0
  42. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/order_b2b_service.py +60 -0
  43. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/api_discovery/system.py +77 -0
  44. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/customize_api.py +63 -0
  45. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/expose_api_models.py +52 -0
  46. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/json_encoder.py +17 -0
  47. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/readme_customize_api.md +103 -0
  48. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/api_utils.py +171 -0
  49. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/custom_endpoint.py +1085 -0
  50. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/expression_parser.py +685 -0
  51. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_csv_report.py +41 -0
  52. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/gen_pdf_report.py +215 -0
  53. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/opt_locking.py +158 -0
  54. api_logic_server_cli/prototypes/manager/samples/basic_demo/api/system/opt_locking/readme.md +225 -0
  55. api_logic_server_cli/prototypes/manager/samples/basic_demo/api_logic_server_run.py +162 -0
  56. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/__init__.py +0 -0
  57. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/activate_logicbank.py +46 -0
  58. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/config.py +772 -0
  59. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/default.env +16 -0
  60. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging-reduced.yml +112 -0
  61. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/logging.yml +123 -0
  62. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/mypy.ini +25 -0
  63. api_logic_server_cli/prototypes/manager/samples/basic_demo/config/server_setup.py +459 -0
  64. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/api/api_discovery/openapi.py +92 -0
  65. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/config/default.env +13 -0
  66. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/db.sqlite +0 -0
  67. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/database/models.py +130 -0
  68. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/docs/mcp_learning/mcp_discovery.json +108 -0
  69. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/cocktail-napkin.jpg +0 -0
  70. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/declare_logic.py +106 -0
  71. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/email_request.py +49 -0
  72. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/logic/logic_discovery/simple_constraints.py +25 -0
  73. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/security/declare_security.py +60 -0
  74. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/admin.yaml +162 -0
  75. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/admin/home.js +48 -0
  76. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README.md +17 -0
  77. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/README_create_react_app.md +70 -0
  78. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package-lock.json +18469 -0
  79. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/package.json +47 -0
  80. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/favicon.ico +0 -0
  81. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/index.html +43 -0
  82. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo192.png +0 -0
  83. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/logo512.png +0 -0
  84. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/manifest.json +25 -0
  85. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/public/robots.txt +3 -0
  86. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.css +38 -0
  87. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.js +61 -0
  88. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/App.test.js +8 -0
  89. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config-reference.js +527 -0
  90. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Config.js +527 -0
  91. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer-reference.js +216 -0
  92. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Customer.js +230 -0
  93. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Item.js +170 -0
  94. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Order.js +207 -0
  95. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/Product.js +140 -0
  96. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysEmail.js +157 -0
  97. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/SysMcp.js +110 -0
  98. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/app_loader.js +24 -0
  99. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.css +13 -0
  100. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/index.js +17 -0
  101. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/logo.svg +1 -0
  102. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +5 -0
  103. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  104. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +25 -0
  105. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  106. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +116 -0
  107. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +116 -0
  108. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  109. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +11 -0
  110. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  111. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  112. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  113. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  114. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +9 -0
  115. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/reportWebVitals.js +13 -0
  116. api_logic_server_cli/prototypes/manager/samples/basic_demo/customizations/ui/reference_react_app/src/setupTests.js +5 -0
  117. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/__init__.py +0 -0
  118. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/alembic_run.py +98 -0
  119. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/env.py +78 -0
  120. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/readme_alembic.md +36 -0
  121. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/script.py.mako +24 -0
  122. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/ae6a5c2fdc47_autogenerated.py +34 -0
  123. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic/versions/readme.md +1 -0
  124. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/alembic.ini +103 -0
  125. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/authentication_db.sqlite +0 -0
  126. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/bind_dbs.py +25 -0
  127. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/customize_models.py +19 -0
  128. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/authentication_models.py +183 -0
  129. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/database_discovery/auto_discovery.py +27 -0
  130. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db.sqlite +0 -0
  131. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/db_debug/db_debug.py +90 -0
  132. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_db.sqlite +0 -0
  133. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/mcp_models.py +58 -0
  134. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/models.py +132 -0
  135. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/system/SAFRSBaseX.py +139 -0
  136. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/alp_init.py +40 -0
  137. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/readme.md +13 -0
  138. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/response2code.py +148 -0
  139. api_logic_server_cli/prototypes/manager/samples/basic_demo/database/test_data/test_data_preamble.py +83 -0
  140. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.Dockerfile +65 -0
  141. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_mysql.sql +112 -0
  142. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/auth-db/authdb_postgres.sql +57 -0
  143. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-azure/azure-deploy.sh +98 -0
  144. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose-dev-local.yml +38 -0
  145. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-compose-dev-local/docker-compose.sh +34 -0
  146. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.dockerfile +20 -0
  147. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/build_image.sh +67 -0
  148. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/env.list +35 -0
  149. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-image/run_image.sh +23 -0
  150. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/docker-compose-standard-image.yml +33 -0
  151. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/docker-standard-image/env.list +55 -0
  152. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.mv.db +0 -0
  153. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/h2/keycloakdb.trace.db +236 -0
  154. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-realm.json +1807 -0
  155. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/kcals-users-0.json +24 -0
  156. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-realm.json +1953 -0
  157. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/import/master-users-0.json +23 -0
  158. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/data/tmp/kc-gzip-cache/nnbna/js/keycloak.js.gz +0 -0
  159. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-dev-network.yml +31 -0
  160. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose-nginx.yml +48 -0
  161. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/docker-compose.yml +24 -0
  162. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-realm.json +1898 -0
  163. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/kcals-users-0.json +319 -0
  164. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-realm.json +1953 -0
  165. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/import/master-users-0.json +23 -0
  166. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/cert.pem +25 -0
  167. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/key.pem +28 -0
  168. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/nginx/nginx.conf +73 -0
  169. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_nginx.txt +0 -0
  170. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/startup_log_no_nginx.txt +0 -0
  171. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/auth_provider.py +80 -0
  172. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/keycloak/unused/unused-docker-compose-keycloak.sh +13 -0
  173. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/python-anywhere/python_anywhere_wsgi.py +116 -0
  174. api_logic_server_cli/prototypes/manager/samples/basic_demo/devops/readme-devops.md +31 -0
  175. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/db.dbml +14 -0
  176. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/graphics/readme.md +12 -0
  177. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic/readme.md +19 -0
  178. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/logic_suggestions/readme_logic_suggestions.md +3 -0
  179. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp.prompt +39 -0
  180. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/mcp_learning/mcp_schema.json +30 -0
  181. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/models-not-code.png +0 -0
  182. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/runtime engines.png +0 -0
  183. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/system-creation-vibe.md +158 -0
  184. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_1_context.prompt.md +43 -0
  185. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_2_functionality.prompt.md +69 -0
  186. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/admin_app_3_architecture.prompt.md +29 -0
  187. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_bank_api.prompt +342 -0
  188. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/logic_example.py +41 -0
  189. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_map.prompt.md +13 -0
  190. api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/training/react_tree.prompt.md +10 -0
  191. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_consumer.py +60 -0
  192. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_producer.py +127 -0
  193. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/kafka/kafka_readme.md +3 -0
  194. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_context_results.txt +142 -0
  195. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_discovery_response.json +150 -0
  196. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_request.prompt +46 -0
  197. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_schema.txt +47 -0
  198. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response.json +34 -0
  199. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/examples/mcp_tool_context_response_get.json +18 -0
  200. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_client_executor.py +545 -0
  201. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/mcp_server_discovery.json +9 -0
  202. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/mcp/readme-mcp.md +9 -0
  203. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/N8N_WebHook_from_ApiLogicServer.json +394 -0
  204. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_producer.py +172 -0
  205. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/n8n/n8n_readme.md +67 -0
  206. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/OrderB2BMapper.py +54 -0
  207. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/row_dict_maps/row_dict_maps_readme.md +3 -0
  208. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/FlaskKafka.py +105 -0
  209. api_logic_server_cli/prototypes/manager/samples/basic_demo/integration/system/RowDictMapper.py +416 -0
  210. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/api/api_discovery/order_b2b.py +92 -0
  211. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/database/db.sqlite +0 -0
  212. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/docs/er_diagram.png +0 -0
  213. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderB2B.py +36 -0
  214. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/integration/row_dict_maps/OrderShipping.py +30 -0
  215. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/logic/declare_logic.py +147 -0
  216. api_logic_server_cli/prototypes/manager/samples/basic_demo/iteration/ui/admin/admin.yaml +175 -0
  217. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declarative-vs-procedural-comparison.html +110 -0
  218. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/declare_logic.py +81 -0
  219. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/load_verify_rules.py +217 -0
  220. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/app_integration.py +23 -0
  221. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/auto_discovery.py +52 -0
  222. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/check_credit.py +44 -0
  223. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/mcp_client_executor_request.py +50 -0
  224. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/readme_logic_discovery.md +9 -0
  225. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/logic_discovery/use_case.py +31 -0
  226. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/credit_service.py +204 -0
  227. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.md +295 -0
  228. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/procedural/declarative-vs-procedural-comparison.png +0 -0
  229. api_logic_server_cli/prototypes/manager/samples/basic_demo/logic/readme_logic.md +249 -0
  230. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme.md +495 -0
  231. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_project.md +43 -0
  232. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_standard.md +492 -0
  233. api_logic_server_cli/prototypes/manager/samples/basic_demo/readme_vibe.md +353 -0
  234. api_logic_server_cli/prototypes/manager/samples/basic_demo/requirements.txt +3 -0
  235. api_logic_server_cli/prototypes/manager/samples/basic_demo/run.ps1 +30 -0
  236. api_logic_server_cli/prototypes/manager/samples/basic_demo/run.sh +55 -0
  237. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/__init__.py +0 -0
  238. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/__init__.py +0 -0
  239. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/abstract_authentication_provider.py +34 -0
  240. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/keycloak/auth_provider.py +238 -0
  241. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider.py +161 -0
  242. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/memory/auth_provider_no_swagger.py +98 -0
  243. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/authentication_provider/sql/auth_provider.py +127 -0
  244. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/declare_security.py +49 -0
  245. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/readme_security.md +16 -0
  246. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authentication.py +129 -0
  247. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/authorization.py +473 -0
  248. api_logic_server_cli/prototypes/manager/samples/basic_demo/security/system/custom_swagger.json +62 -0
  249. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/__init__.py +0 -0
  250. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/__init__.py +0 -0
  251. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_logic_report.py +256 -0
  252. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/behave_run.py +64 -0
  253. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/about.feature +12 -0
  254. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/about.py +20 -0
  255. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/test_utils.py +133 -0
  256. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/logs/behave.log +0 -0
  257. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +4 -0
  258. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +75 -0
  259. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/reports/Behave Logic Report Sample.md +1180 -0
  260. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/basic/server_test.py +33 -0
  261. api_logic_server_cli/prototypes/manager/samples/basic_demo/test/readme_test.md +395 -0
  262. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/__init__.py +0 -0
  263. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin.yaml +173 -0
  264. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/admin_loader.py +217 -0
  265. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/authentication_admin.yaml +99 -0
  266. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/home.js +48 -0
  267. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/admin/mcp_admin.yaml +53 -0
  268. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.browserslistrc +12 -0
  269. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.dockerignore +47 -0
  270. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.editorconfig +16 -0
  271. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.eslintrc.json +51 -0
  272. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/.gitignore +47 -0
  273. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/README.md +42 -0
  274. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/angular.json +206 -0
  275. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/app_model.yaml +303 -0
  276. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/docker-compose-ontimize.yml +54 -0
  277. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/protractor.conf.js +32 -0
  278. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.e2e-spec.ts +23 -0
  279. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/src/app.po.ts +11 -0
  280. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/e2e/tsconfig.json +13 -0
  281. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/karma.conf.js +32 -0
  282. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/nginx/nginx.conf +29 -0
  283. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/ngsw-config.json +29 -0
  284. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package-lock.json +22651 -0
  285. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/package.json +69 -0
  286. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app-routing.module.ts +25 -0
  287. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.html +1 -0
  288. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.scss +1 -0
  289. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.spec.ts +35 -0
  290. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.component.ts +9 -0
  291. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.config.ts +43 -0
  292. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/app.module.ts +37 -0
  293. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login-routing.module.ts +12 -0
  294. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.html +58 -0
  295. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.scss +155 -0
  296. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.component.ts +81 -0
  297. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.module.ts +18 -0
  298. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/login/login.theme.scss +51 -0
  299. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer-routing.module.ts +37 -0
  300. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/Customer.module.ts +19 -0
  301. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.html +90 -0
  302. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.scss +0 -0
  303. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/detail/Customer-detail.component.ts +32 -0
  304. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.html +44 -0
  305. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.scss +0 -0
  306. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/home/Customer-home.component.ts +23 -0
  307. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.html +26 -0
  308. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.scss +0 -0
  309. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Customer/new/Customer-new.component.ts +18 -0
  310. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item-routing.module.ts +30 -0
  311. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/Item.module.ts +19 -0
  312. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.html +72 -0
  313. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.scss +0 -0
  314. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/detail/Item-detail.component.ts +32 -0
  315. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.html +55 -0
  316. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.scss +0 -0
  317. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/home/Item-home.component.ts +23 -0
  318. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.html +60 -0
  319. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.scss +0 -0
  320. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Item/new/Item-new.component.ts +18 -0
  321. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order-routing.module.ts +37 -0
  322. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/Order.module.ts +19 -0
  323. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.html +114 -0
  324. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.scss +0 -0
  325. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/detail/Order-detail.component.ts +32 -0
  326. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.html +48 -0
  327. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.scss +0 -0
  328. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/home/Order-home.component.ts +23 -0
  329. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.html +43 -0
  330. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.scss +0 -0
  331. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Order/new/Order-new.component.ts +18 -0
  332. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product-routing.module.ts +37 -0
  333. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/Product.module.ts +19 -0
  334. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.html +91 -0
  335. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.scss +0 -0
  336. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/detail/Product-detail.component.ts +32 -0
  337. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.html +35 -0
  338. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.scss +0 -0
  339. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/home/Product-home.component.ts +23 -0
  340. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.html +20 -0
  341. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.scss +0 -0
  342. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/Product/new/Product-new.component.ts +18 -0
  343. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about-routing.module.ts +13 -0
  344. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.html +39 -0
  345. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.scss +35 -0
  346. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.component.ts +17 -0
  347. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.module.ts +18 -0
  348. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/about/about.theme.scss +14 -0
  349. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home-routing.module.ts +17 -0
  350. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.html +1 -0
  351. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.scss +3 -0
  352. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.component.ts +21 -0
  353. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/home/home.module.ts +18 -0
  354. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-routing.module.ts +32 -0
  355. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main-theme.scss +56 -0
  356. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.html +8 -0
  357. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.scss +1 -0
  358. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.component.ts +20 -0
  359. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/main.module.ts +22 -0
  360. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings-routing.module.ts +14 -0
  361. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.html +14 -0
  362. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.scss +44 -0
  363. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.component.ts +46 -0
  364. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/main/settings/settings.module.ts +18 -0
  365. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.html +1 -0
  366. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.scss +0 -0
  367. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Customer-card/Customer-card.component.ts +16 -0
  368. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.html +1 -0
  369. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.scss +0 -0
  370. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Item-card/Item-card.component.ts +16 -0
  371. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.html +1 -0
  372. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.scss +0 -0
  373. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Order-card/Order-card.component.ts +16 -0
  374. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.html +1 -0
  375. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.scss +0 -0
  376. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/Product-card/Product-card.component.ts +16 -0
  377. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.menu.config.ts +45 -0
  378. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/app.services.config.ts +5 -0
  379. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/constant.ts +4 -0
  380. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/app/shared/shared.module.ts +15 -0
  381. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/.gitkeep +0 -0
  382. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/app.scss +20 -0
  383. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/css/loader.css +173 -0
  384. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/en.json +44 -0
  385. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/i18n/es.json +42 -0
  386. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize128.png +0 -0
  387. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize16.png +0 -0
  388. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize256.png +0 -0
  389. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize32.png +0 -0
  390. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize48.png +0 -0
  391. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize64.png +0 -0
  392. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize72.png +0 -0
  393. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/icons/ontimize96.png +0 -0
  394. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/github.png +0 -0
  395. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/login_bg.png +0 -0
  396. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image-transparent.png +0 -0
  397. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/no-image.png +0 -0
  398. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize.png +0 -0
  399. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/ontimize_web_log.png +0 -0
  400. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.png +0 -0
  401. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-closed.svg +1 -0
  402. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.png +0 -0
  403. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/sidenav-opened.svg +1 -0
  404. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/images/user_profile.png +0 -0
  405. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/domchange.js +110 -0
  406. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/assets/js/keyboard.js +24 -0
  407. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.prod.ts +11 -0
  408. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/environments/environment.ts +15 -0
  409. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/favicon.ico +0 -0
  410. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/index.html +30 -0
  411. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/main.ts +15 -0
  412. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/manifest.webmanifest +59 -0
  413. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/polyfills.ts +66 -0
  414. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/styles.scss +1 -0
  415. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/src/test.ts +16 -0
  416. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.app.json +18 -0
  417. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.json +25 -0
  418. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/app/tsconfig.spec.json +18 -0
  419. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/andrew.jpg +0 -0
  420. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/anne.jpg +0 -0
  421. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/janet.jpg +0 -0
  422. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/laura.jpg +0 -0
  423. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/margaret.jpg +0 -0
  424. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/michael.jpg +0 -0
  425. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/nancy.jpg +0 -0
  426. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/robert.jpg +0 -0
  427. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Employee/steven.jpg +0 -0
  428. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/beverages.gif +0 -0
  429. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/cereals.gif +0 -0
  430. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/condiments.gif +0 -0
  431. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/confections.gif +0 -0
  432. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/diary.gif +0 -0
  433. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/meat.gif +0 -0
  434. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/produce.gif +0 -0
  435. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/images/Product/seafood.gif +0 -0
  436. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README.md +16 -0
  437. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/README_create_react_app.md +70 -0
  438. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package-lock.json +18469 -0
  439. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/package.json +47 -0
  440. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/favicon.ico +0 -0
  441. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/index.html +43 -0
  442. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo192.png +0 -0
  443. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/logo512.png +0 -0
  444. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/manifest.json +25 -0
  445. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/public/robots.txt +3 -0
  446. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.css +38 -0
  447. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.js +80 -0
  448. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/App.test.js +8 -0
  449. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Config.js +527 -0
  450. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Customer.js +218 -0
  451. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Item.js +190 -0
  452. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Order.js +189 -0
  453. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/Product.js +159 -0
  454. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/app_loader.js +24 -0
  455. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.css +13 -0
  456. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/index.js +17 -0
  457. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/logo.svg +1 -0
  458. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +5 -0
  459. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  460. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +25 -0
  461. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  462. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.js +116 -0
  463. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +116 -0
  464. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  465. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +11 -0
  466. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  467. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  468. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  469. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  470. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +9 -0
  471. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/reportWebVitals.js +13 -0
  472. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app/src/setupTests.js +5 -0
  473. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README.md +20 -0
  474. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/README_create_react_app.md +72 -0
  475. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package-lock.json +18469 -0
  476. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/package.json +47 -0
  477. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/product-cards.png +0 -0
  478. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/favicon.ico +0 -0
  479. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/index.html +43 -0
  480. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo192.png +0 -0
  481. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/logo512.png +0 -0
  482. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/manifest.json +25 -0
  483. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/public/robots.txt +3 -0
  484. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.css +38 -0
  485. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.js +80 -0
  486. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/App.test.js +8 -0
  487. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Config.js +527 -0
  488. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Customer.js +218 -0
  489. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Item.js +190 -0
  490. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Order.js +189 -0
  491. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/Product.js +241 -0
  492. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/app_loader.js +24 -0
  493. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.css +13 -0
  494. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/index.js +17 -0
  495. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/logo.svg +1 -0
  496. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +5 -0
  497. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  498. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +25 -0
  499. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +25 -0
  500. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +116 -0
  501. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +116 -0
  502. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +7 -0
  503. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +11 -0
  504. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  505. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  506. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  507. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  508. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +9 -0
  509. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/reportWebVitals.js +13 -0
  510. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/my-react-app-cards/src/setupTests.js +5 -0
  511. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/bar_chart.jinja +64 -0
  512. api_logic_server_cli/prototypes/manager/samples/basic_demo/ui/templates/content.html +3 -0
  513. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/py.py +121 -0
  514. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/readme_venv.md +20 -0
  515. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/requirements-no-cli.txt +33 -0
  516. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv-linux.sh +28 -0
  517. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.ps1 +21 -0
  518. api_logic_server_cli/prototypes/manager/samples/basic_demo/venv_setup/venv.sh +28 -0
  519. api_logic_server_cli/prototypes/manager/samples/dbs/readme_dbs.md +4 -4
  520. api_logic_server_cli/prototypes/manager/samples/readme_samples.md +13 -6
  521. api_logic_server_cli/prototypes/manager/system/Manager_workspace.code-workspace +3 -2
  522. api_logic_server_cli/prototypes/nw/test/readme_test_nw.md +224 -0
  523. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/METADATA +1 -1
  524. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/RECORD +528 -24
  525. api_logic_server_cli/prototypes/manager/.vscode/.copilot-instructions.md +0 -58
  526. api_logic_server_cli/prototypes/manager/.vscode/ApiLogicServer.code-workspace +0 -15
  527. api_logic_server_cli/prototypes/nw/test/readme_test.md +0 -13
  528. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/WHEEL +0 -0
  529. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/entry_points.txt +0 -0
  530. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/licenses/LICENSE +0 -0
  531. {apilogicserver-15.0.61.dist-info → apilogicserver-15.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,158 @@
1
+ ---
2
+ title: Vibe MCP / Microservice
3
+ do_process_code_block_titles: True
4
+ version: 0.23 from docsite 7/11/2025
5
+ ---
6
+ <style>
7
+ .md-typeset h1,
8
+ .md-content__button {
9
+ display: none;
10
+ }
11
+ </style>
12
+
13
+ << Under Construction >>
14
+
15
+ # Vibe an MCP Microservice
16
+
17
+ See the Readme for detailed walk through.
18
+
19
+ Scenario: we have an existing database (customers, order, items and product), and we require:
20
+
21
+ * An MCP-enabled API, for integration
22
+ * MCP client support to send emails for overdue orders
23
+ * Business Logic to check credit by rolling up Items and Orders.
24
+
25
+ This is a record of how we created the system using CoPilot Chat (*Vibe*).
26
+
27
+ <br>
28
+
29
+ ## Initialize CoPilot
30
+
31
+ ```
32
+ Please find and read `.github/.copilot-instructions.md`.
33
+ ```
34
+
35
+ <br>
36
+
37
+ ## Create the System
38
+
39
+ ```bash title="Create a project from an existing database"
40
+ # in the GenAI-Logic Manager:
41
+ Create a database project from samples/dbs/basic_demo.sqlite
42
+ ```
43
+
44
+ <br>
45
+
46
+ ## Verify the API and Admin App
47
+
48
+ The project should automatically open a new window in VSCode. Again, open CoPilot and bootstrap it with: <br>
49
+
50
+ ```bash title="Initialize CoPilot"
51
+ Please find and read `.github/.copilot-instructions.md`**.
52
+ ```
53
+
54
+ Verify it as follows:
55
+
56
+ * **Click F5** to start server, open app at http://localhost:5656/
57
+ * **Verify API:** filtering, sorting, pagination, optimistic locking and related data access - see the Swagger
58
+ * **Verify Admin App:** multi-page, multi-table, automatic joins, lookups, cascade add - collaboration-ready
59
+
60
+ <br>
61
+
62
+ ## Create a Custom React App
63
+
64
+ ```bash title="Create a custom react app"
65
+ Create a react app.
66
+ ```
67
+
68
+ <br>
69
+
70
+ ```txt title='Customize using Natural Language - Add Cards'
71
+ In the ui/react app, update the Product list to provide users an option to see results in a list,
72
+ or in cards.
73
+ ```
74
+ <br>
75
+
76
+ todo - diagram
77
+
78
+ **Test: verify option for cards on `http://localhost:3000`**
79
+
80
+ <br>
81
+
82
+ ## MCP Client - Overdue Orders
83
+
84
+ **Stop the Server**
85
+
86
+ <br>
87
+
88
+ ``` bash title="Add a Table to Track Sent Emails"
89
+ Create a table SysEmail in `database/db.sqlite` as a child of customer,
90
+ with columns id, message, subject, customer_id and CreatedOn.
91
+ ```
92
+ Follow the suggestions to update the admin app.
93
+
94
+ <br>
95
+
96
+ <br>
97
+
98
+ ``` bash title="Create MCP Executor: process request - invokes the LLM to obtain a series of API calls to run, and runs them"
99
+ Create the mcp client executor
100
+ ```
101
+
102
+ <br>
103
+
104
+ ``` bash title="Create the email service using SysEmail as a Request Table"
105
+ Add an after_flush event on SysEmail to produce a log message "email sent",
106
+ unless the customer has opted out.
107
+ ```
108
+
109
+ <br>
110
+
111
+ ```bash title="Business Logic to Honor Email Opt-out"
112
+ Add an after_flush event on SysEmail to produce a log message "email sent",
113
+ unless the customer has opted out.
114
+ ```
115
+
116
+ <br>
117
+
118
+ ```text title="Test the MCP Client: Click SysMCP >> Create New, and enter"
119
+ List the orders date_shipped is null and CreatedOn before 2023-07-14,
120
+ and send a discount email (subject: 'Discount Offer') to the customer for each one.
121
+ ```
122
+
123
+ <br>
124
+ todo - diagram
125
+
126
+ **Use the Admin App to Verify the first customer has an email**
127
+
128
+ <br>
129
+
130
+ ## Check Credit Business Logic
131
+
132
+ **1. Stop the Server** (Red Stop button, or Shift-F5 -- see Appendix)
133
+
134
+ **2. Add Business Logic**
135
+
136
+ ```bash title="Check Credit Logic (instead of 220 lines of code)"
137
+ Use case: Check Credit
138
+ 1. The Customer's balance is less than the credit limit
139
+ 2. The Customer's balance is the sum of the Order amount_total where date_shipped is null
140
+ 3. The Order's amount_total is the sum of the Item amount
141
+ 4. The Item amount is the quantity * unit_price
142
+ 5. The Item unit_price is copied from the Product unit_price
143
+
144
+ Use case: App Integration
145
+ 1. Send the Order to Kafka topic 'order_shipping' if the date_shipped is not None.
146
+ ```
147
+
148
+ To test the logic:
149
+
150
+ **1. Use the Admin App to access the first order for `Customer Alice`**
151
+
152
+ **2. Edit its first item to a very high quantity**
153
+
154
+ todo - diagram
155
+
156
+ The update is properly rejected because it exceeds the credit limit. Observe the rules firing in the console log - see Logic In Action, below.
157
+
158
+ <br>
@@ -0,0 +1,43 @@
1
+
2
+ Generate a full React Admin application using the following instructions.
3
+ The result must be a runnable React app (`npm start`) that connects to the supplied JSON:API, with fully implemented components (no placeholders or empty files).
4
+
5
+ ## Critical Data Access Provider Configuration
6
+
7
+ This project uses a **pre-configured JSON:API data provider** that was built when the project was created.
8
+
9
+ ### Key Requirements:
10
+
11
+ 1. **Data Provider**: Use the existing `jsonapiClient` from `./rav4-jsonapi-client/ra-jsonapi-client`
12
+ 2. **Record Context**: For custom components (like cards), ALWAYS wrap with `<RecordContextProvider value={record}>`
13
+ 3. **List Data Access**: Use `useListContext()` to get data and loading state
14
+ 4. **Individual Records**: Use `useRecordContext()` to access record data within providers
15
+ 5. **API Root**: The data provider connects to `conf.api_root` (typically `http://localhost:5656/api`)
16
+
17
+ ### Example Pattern for Custom List Views:
18
+ ```javascript
19
+ import { useListContext, RecordContextProvider, useRecordContext } from 'react-admin';
20
+
21
+ const CustomGrid = () => {
22
+ const { data, isLoading } = useListContext();
23
+
24
+ return (
25
+ <Grid container>
26
+ {data?.map(record => (
27
+ <Grid item key={record.id}>
28
+ <RecordContextProvider value={record}>
29
+ <CustomCard />
30
+ </RecordContextProvider>
31
+ </Grid>
32
+ ))}
33
+ </Grid>
34
+ );
35
+ };
36
+
37
+ const CustomCard = () => {
38
+ const record = useRecordContext();
39
+ return <Card>{record.name}</Card>;
40
+ };
41
+ ```
42
+
43
+ ### CRITICAL: Do NOT create new data providers or modify the existing JSON:API client configuration. The project's data flow depends on the pre-built provider.
@@ -0,0 +1,69 @@
1
+
2
+
3
+ ## App Features
4
+
5
+ ### Multi-Page
6
+
7
+ For each resource:
8
+ - Create a **List page** showing 7 user-friendly columns
9
+ - Add **pagination**, **sorting**, and **filtering**
10
+ - Link each row to a **Display (Show) page**
11
+
12
+ ### Multi-Resource
13
+
14
+ Each **Display Page** should:
15
+ - Show all fields in a **multi-column layout**
16
+ - Include a **tab sheet** (`<TabbedShowLayout>`) for each related resource using `<ReferenceManyField>`
17
+ - Link child rows to their own display page
18
+
19
+ Example:
20
+ - Customer Display has tab for OrderList
21
+ - Each Order in the tab links to Order Display
22
+
23
+ ### Automatic Joins
24
+
25
+ For foreign keys:
26
+ - Display joined value (e.g., `product.name` instead of `product_id`)
27
+ - Use first string field from parent table containing `name`, `title`, or `description`
28
+
29
+ Primary key fields:
30
+ - Display at the end of forms/lists
31
+
32
+ ### Lookups (Foreign Keys)
33
+
34
+ For foreign key fields:
35
+ - Provide auto-complete dropdown (`<ReferenceInput>`)
36
+ - For numeric foreign keys, use the joined string field as lookup text
37
+
38
+
39
+ ---
40
+
41
+ ## Per-Resource Files (Required)
42
+
43
+ For each resource (`Customer`, `Order`, `Product`, `Item`):
44
+ - Create a source file under `src/`, e.g., `Customer.js`
45
+ - **Each file must fully implement**:
46
+ - `CustomerList`
47
+ - `CustomerShow`
48
+ - `CustomerCreate`
49
+ - `CustomerEdit`
50
+
51
+ Use:
52
+ - `<ReferenceField>` for foreign key displays
53
+ - `<ReferenceInput>` for foreign key input
54
+ - `<ReferenceManyField>` for tabbed child lists
55
+ - `<TabbedShowLayout>` for display pages
56
+
57
+ Do **not leave any file empty**.
58
+
59
+ ---
60
+
61
+ ## App Wiring
62
+
63
+ In `App.js`:
64
+ - Import each resource file
65
+ - Register them in `<Admin>` using:
66
+
67
+ ```jsx
68
+ <Resource name="Customer" list={CustomerList} show={CustomerShow} edit={CustomerEdit} create={CustomerCreate} />
69
+ ```
@@ -0,0 +1,29 @@
1
+
2
+ ## Architecture
3
+
4
+ - **Framework**: React 18 + react-admin 4.x
5
+ - **Data Provider**: Custom `dataProvider.js` using `fetchUtils` (no external `ra-jsonapi-client`)
6
+ - Must support: `getList`, `getOne`, `getMany`, `getManyReference`, `create`, `update`, `delete`
7
+ - Must support: filters, joins, sorting, pagination
8
+ - **Backend**: JSON:API per `mcp_discovery.json`
9
+ - **CORS**: Ensure API allows `http://localhost:3000`
10
+ ```py
11
+ from flask_cors import CORS
12
+ CORS(app, origins='*') # or restrict to localhost:3000
13
+ ```
14
+ - **Project Setup**:
15
+ - Use `create-react-app`
16
+ - Include: `react-admin`, `@mui/material`, `@emotion/react`, `@emotion/styled`, `react-router-dom`
17
+ - Do not use any deprecated or unmaintained libraries
18
+ - Include complete and correct `App.js`, `index.js`, `dataProvider.js`, and `index.html`
19
+
20
+ ---
21
+
22
+ ## Run Instructions
23
+
24
+ ```bash
25
+ npm install
26
+ npm start
27
+ ```
28
+
29
+ Then open in browser: `http://localhost:3000`
@@ -0,0 +1,342 @@
1
+ Here is the simplified API for LogicBank:
2
+
3
+ Translate the user prompt into a series of calls to Rule methods, described here.
4
+
5
+ Do not generate import statements.
6
+
7
+ If you create sum, count or formula LogicBank rules, you MUST create a corresponding column in the data model.
8
+
9
+ Use only the methods provided below.
10
+
11
+ IMPORTANT: Keep it simple! Use the built-in Rule methods with their parameters (like if_condition) rather than creating custom functions. The Rule methods are designed to handle common patterns directly.
12
+
13
+
14
+ class Rule:
15
+ """ Invoke these functions to declare rules """
16
+
17
+ @staticmethod
18
+ def sum(derive: Column, as_sum_of: any, where: any = None, insert_parent: bool=False):
19
+ """
20
+ Derive parent column as sum of designated child column, optional where
21
+
22
+ Example
23
+ Prompt
24
+ Customer.Balance = Sum(Order.amount_total where date_shipped is null)
25
+ Response
26
+ Rule.sum(derive=Customer.Balance, as_sum_of=Order.AmountTotal,
27
+ where=lambda row: row.ShippedDate is None)
28
+
29
+ Args:
30
+ derive: name of parent <class.attribute> being derived
31
+ as_sum_of: name of child <class.attribute> being summed
32
+ where: optional where clause, designates which child rows are summed. All referenced columns must be part of the data model - create columns in the data model as required. Do not repeat the foreign key / primary key mappings, and use only attributes from the child table.
33
+ insert_parent: create parent if it does not exist. Do not use unless directly requested.
34
+ """
35
+ return Sum(derive, as_sum_of, where, insert_parent)
36
+
37
+
38
+ @staticmethod
39
+ def count(derive: Column, as_count_of: object, where: any = None, str = "", insert_parent: bool=False):
40
+ """
41
+ Derive parent column as count of designated child rows
42
+
43
+ Example
44
+ Prompt
45
+ Customer.UnPaidOrders = count(Orders where ShippedDate is None)
46
+ Response
47
+ Rule.count(derive=Customer.UnPaidOrders, as_count_of=Order,
48
+ where=Lambda row: row.ShippedDate is None)
49
+
50
+ Args:
51
+ derive: name of parent <class.attribute> being derived
52
+ as_count_of: name of child <class> being counted
53
+ where: optional where clause, designates which child rows are counted. All referenced columns must be part of the data model - create columns in the data model as required. Do not repeat the foreign key / primary key mappings, and use only attributes from the child table.
54
+ insert_parent: create parent if it does not exist. Do not use unless directly requested.
55
+ """
56
+ return Count(derive, as_count_of, where, insert_parent)
57
+
58
+
59
+ @staticmethod
60
+ def constraint(validate: object,
61
+ calling: Callable = None,
62
+ as_condition: any = None,
63
+ error_msg: str = "(error_msg not provided)",
64
+ error_attributes=None):
65
+ """
66
+ Constraints declare condition that must be true for all commits
67
+
68
+ Example
69
+ Prompt
70
+ Customer.balance <= credit_limit
71
+ Response
72
+ Rule.constraint(validate=Customer,
73
+ as_condition=lambda row: row.Balance <= row.CreditLimit,
74
+ error_msg="balance ({row.Balance}) exceeds credit ({row.CreditLimit})")
75
+
76
+ Args:
77
+ validate: name of mapped <class>
78
+ as_condition: lambda, passed row (simple constraints). All referenced columns must be part of the data model - create columns in the data model as required. Also, conditions may not contain sum or count python functions - these must be used to declare additional columns and sum/count rules.
79
+ error_msg: string, with {row.attribute} replacements
80
+ error_attributes: list of attributes
81
+
82
+ """
83
+ if error_attributes is None:
84
+ error_attributes = []
85
+ return Constraint(validate=validate, as_condition=as_condition,
86
+ error_attributes=error_attributes, error_msg=error_msg)
87
+
88
+
89
+ @staticmethod
90
+ def formula(derive: Column,
91
+ as_expression: Callable = None,
92
+ no_prune: bool = False):
93
+ """
94
+ Formulas declare column value, based on current and parent rows
95
+
96
+ Example
97
+ Prompt
98
+ Item.amount = quantity * unit_price
99
+ Response
100
+ Rule.formula(derive=OrderDetail.Amount,
101
+ as_expression=lambda row: row.UnitPrice * row.Quantity)
102
+
103
+ Args:
104
+ derive: <class.attribute> being derived
105
+ as_expression: lambda, passed row (for syntax checking). All referenced columns must be part of the data model - create columns in the data model as required. Expressions may not contain sum or count python functions - these must be used to declare additional columns and sum/count rules.
106
+ no_prune: disable pruning (rarely used, default False)
107
+ """
108
+ return Formula(derive=derive,
109
+ as_expression=as_expression,
110
+ no_prune=no_prune)
111
+
112
+
113
+ @staticmethod
114
+ def copy(derive: Column, from_parent: any):
115
+ """
116
+ Copy declares child column copied from parent column.
117
+
118
+ Example:
119
+ Prompt
120
+ Store the Item.unit_price as a copy from Product.unit_price
121
+ Response
122
+ Rule.copy(derive=OrderDetail.UnitPrice, from_parent=Product.UnitPrice)
123
+
124
+ Args:
125
+ derive: <class.attribute> being copied into
126
+ from_parent: <parent-class.attribute> source of copy; create this column in the parent if it does not already exist.
127
+ """
128
+ return Copy(derive=derive, from_parent=from_parent)
129
+
130
+
131
+ @staticmethod
132
+ def after_flush_row_event(on_class: object, calling: Callable = None,
133
+ if_condition: any = None,
134
+ when_condition: any = None,
135
+ with_args: dict = None):
136
+ """
137
+ Events are triggered after database flush for integration (Kafka, etc.)
138
+
139
+ IMPORTANT: Use this simple pattern - do NOT create custom functions unless absolutely necessary.
140
+ Use if_condition parameter for conditional logic instead of writing custom event handlers.
141
+
142
+ Example:
143
+ Prompt:
144
+ Send the Order to Kafka topic 'order_shipping' if the date_shipped is not None
145
+ Response:
146
+ Rule.after_flush_row_event(on_class=Order, calling=kafka_producer.send_row_to_kafka,
147
+ if_condition=lambda row: row.date_shipped is not None,
148
+ with_args={"topic": "order_shipping"})
149
+ Prompt:
150
+ Send the Product to Kafka topic 'ready_to_ship' if the is_complete is True
151
+ Response:
152
+ Rule.after_flush_row_event(on_class=Product, calling=kafka_producer.send_row_to_kafka,
153
+ if_condition=lambda row: row.is_complete is True,
154
+ with_args={"topic": "ready_to_ship"})
155
+
156
+ Args:
157
+ on_class: The model class to watch for changes
158
+ calling: Use kafka_producer.send_row_to_kafka for Kafka integration
159
+ if_condition: Lambda function to specify when the event should trigger
160
+ with_args: Dictionary with parameters like {"topic": "topic_name"}
161
+ """
162
+
163
+
164
+ Expanded example:
165
+
166
+ Prompt:
167
+ 1. Customer.balance <= credit_limit
168
+ 2. Customer.balance = Sum(Order.amount_total where date_shipped is null)
169
+ 3. Order.amount_total = Sum(Item.amount)
170
+ 4. Item.amount = quantity * unit_price
171
+ 5. Store the Item.unit_price as a copy from Product.unit_price
172
+
173
+ Response:
174
+ Rule.sum(derive=CustomerAccount.balance, as_sum_of=Order.amount_total, where=lambda row: row.date_shipped is None)
175
+ Rule.sum(derive=Order.amount_total, as_sum_of=Item.amount)
176
+ Rule.formula(derive=Item.amount, as_expression=lambda row: row.quantity * row.unit_price)
177
+ Rule.copy(derive=Item.unit_price, from_parent=Product.unit_price)
178
+ Rule.constraint(validate=CustomerAccount,
179
+ as_condition=lambda row: row.balance <= row.credit_limit,
180
+ error_msg="Customer balance ({row.balance}) exceeds credit limit ({row.credit_limit})")
181
+
182
+
183
+ Equivalent expanded example using informal syntax:
184
+
185
+ Prompt:
186
+ 1. The Customer's balance is less than the credit limit
187
+ 2. The Customer's balance is the sum of the Order amount_total where date_shipped is null
188
+ 3. The Order's amount_total is the sum of the Item amount
189
+ 4. The Item amount is the quantity * unit_price
190
+ 5. The Item unit_price is copied from the Product unit_price
191
+
192
+ Response is the same:
193
+ Rule.sum(derive=CustomerAccount.balance, as_sum_of=Order.amount_total, where=lambda row: row.date_shipped is None)
194
+ Rule.sum(derive=Order.amount_total, as_sum_of=Item.amount)
195
+ Rule.formula(derive=Item.amount, as_expression=lambda row: row.quantity * row.unit_price)
196
+ Rule.copy(derive=Item.unit_price, from_parent=Product.unit_price)
197
+ Rule.constraint(validate=CustomerAccount,
198
+ as_condition=lambda row: row.balance <= row.credit_limit,
199
+ error_msg="Customer balance ({row.balance}) exceeds credit limit ({row.credit_limit})")
200
+
201
+
202
+ Intermediate sum/count values require a new column, with a LogicBank sum/count rule. For example:
203
+
204
+ Prompt:
205
+ The sum of the child value cannot exceed the parent limit
206
+
207
+ Response is to create 2 rules - a derivation and a constraint, as follows:
208
+ First Rule to Create:
209
+ Rule.sum(derive=Parent.value_total, as_sum_of=Child.value)
210
+ And, be sure to create the second Rule:
211
+ Rule.constraint(validate=Parent,
212
+ as_condition=lambda row: row.value_total <= row.limit,
213
+ error_msg="Parent value total ({row.value_total}) exceeds limit ({row.limit})")
214
+
215
+ Intermediate sum/count values also work for counts. For example:
216
+
217
+ Prompt:
218
+ A airplane cannot have more passengers than its seating capacity.
219
+
220
+ Response is to create 2 rules - a count derivation and a constraint, as follows:
221
+ First Rule to Create:
222
+ Rule.count(derive=Airplane.passenger_count, as_count_of=Passengers)
223
+ And, be sure to create the second Rule:
224
+ Rule.constraint(validate=Airplane,
225
+ as_condition=lambda row: row.passenger_count <= row.seating_capacity,
226
+ error_msg="Airplane value total ({row.passenger_count}) exceeds limit ({row.seating_capacity})")
227
+
228
+
229
+ Intermediate sums in formulas also require a new column, with a LogicBank sum rule. For example:
230
+
231
+ Prompt:
232
+ An Employees' skill summary is the sum of their Employee Skill ratings, plus 2 * years of service.
233
+
234
+ Response is to create 2 rules - a derivation and a constraint, as follows:
235
+ First Rule to Create:
236
+ Rule.sum(derive=Employee.skill_rating_total, as_sum_of=EmployeeSkill.rating)
237
+ And, be sure to create the second Rule:
238
+ Rule.Formula(derive=Employee.skill_summary,
239
+ as_expression=lambda row: row.skill_rating_total + 2 * row.years_of_service)
240
+
241
+
242
+ Prompt:
243
+ A student cannot be an honor student unless they have more than 2 service activities.
244
+
245
+ Response is to create 2 rules - a count derivation and a constraint, as follows:
246
+ First Rule to Create:
247
+ Rule.count(derive=Student.service_activity_count, as_count_of=Activities, where='service' in name)
248
+ And, be sure to create the second Rule:
249
+ Rule.constraint(validate=Student,
250
+ as_condition=lambda row: row.is_honor_student and service_activity_count < 2,
251
+ error_msg="Honor Students must have at least 2 service activities")
252
+
253
+
254
+ For "more than" constraints, create columns with count rules:
255
+
256
+ Prompt: Reject Employees with more than 3 Felonies.
257
+
258
+ Response:
259
+ First Rule is to create:
260
+ Rule.count(derive=Employee.felony_count, as_count_of=Felonies)
261
+ And, be sure to create the contraint rule:
262
+ Rule.constraint(validate=Employee,
263
+ as_condition=lambda row: row.felony_count<=3,
264
+ error_msg="Employee has excessive Felonies")
265
+
266
+
267
+ For "any" constraints, create columns with count rules:
268
+
269
+ Prompt: Reject Employees with any class 5 Felonies or more than 3 Felonies.
270
+
271
+ Response:
272
+ First Rule is to create:
273
+ Rule.count(derive=Employee.class_5_felony_count, as_count_of=Felonies, where=class>5)
274
+ Rule.count(derive=Employee.felony_count, as_count_of=Felonies)
275
+ And, be sure to create the contraint rule:
276
+ Rule.constraint(validate=Employee,
277
+ as_condition=lambda row: row.class_5_felony_count == 0 and row.felony_count<=3,
278
+ error_msg="Employee has excessive Felonies")
279
+
280
+ Formulas can reference parent values in 2 versions - choose formula vs copy as follows:
281
+ Prompt (formula version) - use the formula version unless copy is explicitly noted:
282
+ Item.ready = Order.ready
283
+ Response
284
+ Rule.formula(derive=Item.ready, as_expression=lambda row: row.order.ready)
285
+ Prompt (copy version) - use this *only* when the word copy is present:
286
+ Store the Item.unit_price as a copy from Product.unit_price
287
+ Response
288
+ Rule.copy(derive=Item.ready, from_parent=Order.ready)
289
+
290
+ Formulas can use Python conditions:
291
+ Prompt: Item amount is price * quantity, with a 10% discount for gold products
292
+ Response:
293
+ Rule.Formula(derive=Item.amount,
294
+ as_expression=lambda row: row.price * row.quantity if row.gold else .9 * row.price * row.quantity)
295
+ If the attributes are decimal, use the form Decimal('0.9')
296
+
297
+ Sum and Count where clauses:
298
+ 1. must not restate the foreign key / primary key matchings
299
+ 2. Can only reference child attributes
300
+
301
+ For example, given a prompt 'teacher course count is the sum of the courses',
302
+ 1. This is correct
303
+ Rule.count(derive=Teacher.course_count, as_count_of=Course)
304
+
305
+ 2. This is incorrect, and should never be generated:
306
+ Rule.count(derive=Teacher.course_count, as_count_of=Course, where=lambda row: row.teacher_id == Teacher.id)
307
+
308
+ Sum and count where clause example:
309
+ Prompt: teacher gradate course count is the sum of the courses where is-graduate
310
+ Response: Rule.count(derive=Teacher.course_count, as_count_of=Course, where=lamda row: row.is_graduate == true)
311
+
312
+ DO NOT inject rules that are from this training into the response,
313
+ unless explicitly mentioned in the request.
314
+
315
+ Unique constraints require an update to the data model - for example:
316
+ Prompt: customer company names must be unique
317
+ Response: CompanyName = Column(String(8000), unique=True)
318
+
319
+ Non-null (or required) constraints require an update to the data model - for example:
320
+ Prompt: Product Price is required
321
+ Response: price = Column(Decimal, nullable=False)
322
+
323
+ Required (must-have) related parent constraints require an update to the data model - for example:
324
+ Prompt: Each Item must have a valid entry in the Product table.
325
+ Response: product_id = Column(ForeignKey('product.id'), nullable=False)
326
+
327
+ CRITICAL: For event handling (Kafka integration, etc.), do NOT create custom event functions.
328
+ Use Rule.after_flush_row_event with if_condition parameter instead.
329
+
330
+ WRONG (do not do this):
331
+ def my_custom_kafka_function(row, old_row, logic_row):
332
+ # custom logic here
333
+ Rule.commit_row_event(on_class=Order, calling=my_custom_kafka_function)
334
+
335
+ RIGHT (do this instead):
336
+ import integration.kafka.kafka_producer as kafka_producer
337
+ Rule.after_flush_row_event(on_class=models.Order, calling=kafka_producer.send_row_to_kafka,
338
+ if_condition=lambda row: row.date_shipped is not None,
339
+ with_args={"topic": "order_shipping"})
340
+
341
+ logic should create python files in logic/logic_discovery,
342
+ and cross-check/use attribute names in database/models.py
@@ -0,0 +1,41 @@
1
+ import datetime
2
+ from decimal import Decimal
3
+ from logic_bank.exec_row_logic.logic_row import LogicRow
4
+ from logic_bank.extensions.rule_extensions import RuleExtension
5
+ from logic_bank.logic_bank import Rule
6
+ from database import models
7
+ import api.system.opt_locking.opt_locking as opt_locking
8
+ from security.system.authorization import Grant
9
+ import logging
10
+ from flask import jsonify
11
+
12
+
13
+ """
14
+ logic should create python files in logic/logic_discovery,
15
+ and cross-check/use attribute names in database/models.py
16
+ """
17
+
18
+ app_logger = logging.getLogger(__name__)
19
+
20
+
21
+ def declare_logic():
22
+ """
23
+ Simple constraints for error testing
24
+ """
25
+ Rule.constraint(validate=models.Customer,
26
+ as_condition=lambda row: row.CompanyName != 'x',
27
+ error_msg="CustomerName cannot be 'x'")
28
+
29
+ Rule.constraint(validate=models.Employee,
30
+ as_condition=lambda row: row.LastName != 'x',
31
+ error_msg="LastName cannot be 'x'")
32
+
33
+ def valid_category_description(row: models.Category, old_row: models.Category, logic_row: LogicRow):
34
+ if logic_row.ins_upd_dlt == "upd":
35
+ return row.Description != 'x'
36
+ else:
37
+ return True
38
+ Rule.constraint(validate=models.Category,
39
+ calling=valid_category_description,
40
+ error_msg="Description cannot be 'x'")
41
+