ApiLogicServer 15.0.27__py3-none-any.whl → 15.0.32__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 (159) hide show
  1. api_logic_server_cli/add_cust/add_cust.py +4 -4
  2. api_logic_server_cli/api_logic_server.py +20 -5
  3. api_logic_server_cli/api_logic_server_info.yaml +3 -3
  4. api_logic_server_cli/cli.py +62 -11
  5. api_logic_server_cli/cli_args_base.py +1 -1
  6. api_logic_server_cli/create_from_model/__pycache__/dbml.cpython-312.pyc +0 -0
  7. api_logic_server_cli/create_from_model/dbml.py +1 -1
  8. api_logic_server_cli/create_from_model/ont_create.py +6 -1
  9. api_logic_server_cli/database/mcp.sqlite +0 -0
  10. api_logic_server_cli/fragments/mcp_admin.yml +11 -0
  11. api_logic_server_cli/genai/genai_admin_app.py +76 -23
  12. api_logic_server_cli/genai/genai_mcp.py +43 -0
  13. api_logic_server_cli/genai/genai_svcs.py +16 -15
  14. api_logic_server_cli/logging.yml +16 -1
  15. api_logic_server_cli/manager.py +26 -2
  16. api_logic_server_cli/prototypes/base/config/default.env +3 -0
  17. api_logic_server_cli/prototypes/base/devops/docker-compose-dev-azure/azure-deploy.sh +3 -3
  18. api_logic_server_cli/prototypes/base/devops/docker-compose-dev-local/docker-compose.sh +1 -1
  19. api_logic_server_cli/prototypes/base/ui/admin/admin_loader.py +2 -0
  20. api_logic_server_cli/prototypes/basic_demo/README.md +1 -1
  21. api_logic_server_cli/prototypes/basic_demo/customizations/database/db.sqlite +0 -0
  22. api_logic_server_cli/prototypes/basic_demo/customizations/database/models.py +0 -16
  23. api_logic_server_cli/prototypes/basic_demo/customizations/ui/admin/admin.yaml +0 -11
  24. api_logic_server_cli/prototypes/basic_demo/iteration/database/db.sqlite +0 -0
  25. api_logic_server_cli/prototypes/basic_demo/iteration/ui/admin/admin.yaml +4 -4
  26. api_logic_server_cli/prototypes/manager/README.md +1 -1
  27. api_logic_server_cli/prototypes/manager/samples/dbs/readme_samples.md +3 -0
  28. api_logic_server_cli/prototypes/manager/samples/readme_samples.md +3 -0
  29. api_logic_server_cli/prototypes/manager/system/app_model_editor/devops/docker-compose-dev-azure/azure-deploy.sh +1 -1
  30. api_logic_server_cli/prototypes/manager/system/app_model_editor/devops/docker-compose-dev-local-nginx/docker-compose.sh +1 -1
  31. api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/devops/docker-compose-dev-azure/azure-deploy.sh +1 -1
  32. api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/devops/docker-compose-dev-local/docker-compose.sh +1 -1
  33. api_logic_server_cli/prototypes/nw/ui/.DS_Store +0 -0
  34. api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/.DS_Store +0 -0
  35. api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/README.md +0 -2
  36. api_logic_server_cli/prototypes/nw/ui/reference_react_app/compile-errors.txt +324 -0
  37. api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/package-lock.json +24 -0
  38. api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/package.json +3 -0
  39. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/App.js +147 -0
  40. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Category.js +141 -0
  41. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Config.js +527 -0
  42. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Customer.js +193 -0
  43. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/CustomerDemographic.js +119 -0
  44. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Department.js +144 -0
  45. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Employee.js +213 -0
  46. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/EmployeeAudit.js +223 -0
  47. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/EmployeeTerritory.js +94 -0
  48. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Location.js +170 -0
  49. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Order.js +179 -0
  50. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/OrderDetail.js +201 -0
  51. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Product.js +226 -0
  52. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Region.js +104 -0
  53. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Shipper.js +120 -0
  54. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Supplier.js +143 -0
  55. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Territory.js +145 -0
  56. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/Union.js +119 -0
  57. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/app_loader.js +24 -0
  58. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +5 -0
  59. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +4 -0
  60. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +25 -0
  61. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +25 -0
  62. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +116 -0
  63. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +116 -0
  64. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +7 -0
  65. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +11 -0
  66. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +577 -0
  67. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +577 -0
  68. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +124 -0
  69. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +124 -0
  70. api_logic_server_cli/prototypes/nw/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +9 -0
  71. api_logic_server_cli/prototypes/nw_no_cust/Tutorial.md +2 -2
  72. api_logic_server_cli/prototypes/sqlite/devops/docker-compose-dev-azure/azure-deploy.sh +1 -1
  73. api_logic_server_cli/{prototypes/basic_demo/customizations/logic/logic_discovery → templates}/mcp_client_executor_request.py +4 -2
  74. {apilogicserver-15.0.27.dist-info → apilogicserver-15.0.32.dist-info}/METADATA +1 -1
  75. {apilogicserver-15.0.27.dist-info → apilogicserver-15.0.32.dist-info}/RECORD +137 -120
  76. apilogicserver-15.0.32.dist-info/entry_points.txt +7 -0
  77. api_logic_server_cli/genai/genai_admin_app copy.py +0 -150
  78. api_logic_server_cli/prototypes/manager/system/genai/app_templates/app_learning/Admin-App-Resource-Learning-Prompt copy.md +0 -203
  79. api_logic_server_cli/prototypes/manager/system/genai/app_templates/app_learning/notes.md +0 -7
  80. api_logic_server_cli/prototypes/manager/system/genai/app_templates/app_learning/z-unused-Admin-App-Learning-Prompt.md +0 -179
  81. api_logic_server_cli/prototypes/nw/ui/react_admin/src/App.js +0 -58
  82. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Category.js +0 -82
  83. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Customer.js +0 -211
  84. api_logic_server_cli/prototypes/nw/ui/react_admin/src/CustomerDemographic.js +0 -57
  85. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Department.js +0 -98
  86. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Employee.js +0 -100
  87. api_logic_server_cli/prototypes/nw/ui/react_admin/src/EmployeeAudit.js +0 -106
  88. api_logic_server_cli/prototypes/nw/ui/react_admin/src/EmployeeTerritory.js +0 -98
  89. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Location.js +0 -87
  90. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Order.js +0 -98
  91. api_logic_server_cli/prototypes/nw/ui/react_admin/src/OrderDetail.js +0 -112
  92. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Product.js +0 -103
  93. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Region.js +0 -65
  94. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Shipper.js +0 -67
  95. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Supplier.js +0 -87
  96. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Territory.js +0 -90
  97. api_logic_server_cli/prototypes/nw/ui/react_admin/src/Union.js +0 -61
  98. apilogicserver-15.0.27.dist-info/entry_points.txt +0 -3
  99. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/.DS_Store +0 -0
  100. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/README.md +0 -0
  101. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/README_create_react_app.md +0 -0
  102. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/package-lock.json +0 -0
  103. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/package.json +0 -0
  104. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/favicon.ico +0 -0
  105. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/index.html +0 -0
  106. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/logo192.png +0 -0
  107. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/logo512.png +0 -0
  108. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/manifest.json +0 -0
  109. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/public/robots.txt +0 -0
  110. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/App.css +0 -0
  111. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/App.js +0 -0
  112. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/App.test.js +0 -0
  113. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Config-reference.js +0 -0
  114. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Config.js +0 -0
  115. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Customer-reference.js +0 -0
  116. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Customer.js +0 -0
  117. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Item.js +0 -0
  118. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Order.js +0 -0
  119. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/Product.js +0 -0
  120. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/SysEmail.js +0 -0
  121. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/SysMcp.js +0 -0
  122. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/app_loader.js +0 -0
  123. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/index.css +0 -0
  124. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/index.js +0 -0
  125. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/logo.svg +0 -0
  126. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/.eslintrc +0 -0
  127. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
  128. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/default-settings.js +0 -0
  129. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/default-settings.ts +0 -0
  130. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/errors.js +0 -0
  131. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/errors.ts +0 -0
  132. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/index.test.tsx +0 -0
  133. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/index.tsx +0 -0
  134. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
  135. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
  136. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/resourceLookup.js +0 -0
  137. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
  138. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/rav4-jsonapi-client/styles.module.css +0 -0
  139. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/reportWebVitals.js +0 -0
  140. /api_logic_server_cli/prototypes/basic_demo/customizations/ui/{basic_demo_app → reference_react_app}/src/setupTests.js +0 -0
  141. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/README_create_react_app.md +0 -0
  142. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/favicon.ico +0 -0
  143. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/index.html +0 -0
  144. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/logo192.png +0 -0
  145. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/logo512.png +0 -0
  146. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/manifest.json +0 -0
  147. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/public/robots.txt +0 -0
  148. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/App.css +0 -0
  149. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/App.test.js +0 -0
  150. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/SampleDBVersion.js +0 -0
  151. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/dataProvider.js +0 -0
  152. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/index.css +0 -0
  153. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/index.js +0 -0
  154. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/logo.svg +0 -0
  155. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/reportWebVitals.js +0 -0
  156. /api_logic_server_cli/prototypes/nw/ui/{react_admin → reference_react_app}/src/setupTests.js +0 -0
  157. {apilogicserver-15.0.27.dist-info → apilogicserver-15.0.32.dist-info}/WHEEL +0 -0
  158. {apilogicserver-15.0.27.dist-info → apilogicserver-15.0.32.dist-info}/licenses/LICENSE +0 -0
  159. {apilogicserver-15.0.27.dist-info → apilogicserver-15.0.32.dist-info}/top_level.txt +0 -0
@@ -158,7 +158,7 @@ def add_basic_demo_customizations(project: Project, do_show_messages: bool = Tru
158
158
  # log.info(".. curl -X 'POST' 'http://localhost:5656/api/SysMcp/' -H 'accept: application/vnd.api+json' -H 'Content-Type: application/json' -d '{ \"data\": { \"attributes\": {\"request\": \"List the orders date_shipped is null and CreatedOn before 2023-07-14, and send a discount email (subject: '\\''Discount Offer'\\'') to the customer for each one.\"}, \"type\": \"SysMcp\"}}'")
159
159
  log.info('')
160
160
  log.info(f'Next Steps: activate security')
161
- log.info(f'..ApiLogicServer add-auth --db_url=auth')
161
+ log.info(f'..genai-logic add-auth --db_url=auth')
162
162
  if project.is_tutorial == False:
163
163
  log.info(".. complete\n")
164
164
 
@@ -178,7 +178,7 @@ def add_basic_demo_iteration(project: Project, do_show_messages: bool = True, do
178
178
  create_utils.recursive_overwrite(nw_path, project.project_directory) # ~/dev/ApiLogicServer/ApiLogicServer-dev/servers/basic_demo
179
179
  if do_show_messages:
180
180
  log.info("\nNext Step:")
181
- log.info(f'..ApiLogicServer rebuild-from-database --db_url=sqlite:///database/db.sqlite')
181
+ log.info(f'..genai-logic rebuild-from-database --db_url=sqlite:///database/db.sqlite')
182
182
  log.info(".. complete\n")
183
183
 
184
184
 
@@ -210,7 +210,7 @@ def add_sample_ai_customizations(project: Project, do_show_messages: bool = True
210
210
  log.info(f'..logic/declare_logic.py')
211
211
  log.info(f'..security/declare_security.py\n')
212
212
  log.info(f'Next Steps: activate security')
213
- log.info(f'..ApiLogicServer add-auth --db_url=auth')
213
+ log.info(f'..genai-logic add-auth --db_url=auth')
214
214
  if project.is_tutorial == False:
215
215
  log.info(".. complete\n")
216
216
 
@@ -230,7 +230,7 @@ def add_sample_ai_iteration(project: Project, do_show_messages: bool = True, do_
230
230
  create_utils.recursive_overwrite(nw_path, project.project_directory) # '/Users/val/dev/ApiLogicServer/ApiLogicServer-dev/org_git/tutorial/1. Instant_Creation'
231
231
  if do_show_messages:
232
232
  log.info("\nNext Step:")
233
- log.info(f'..ApiLogicServer rebuild-from-database --project_name=./ --db_url=sqlite:///database/db.sqlite')
233
+ log.info(f'..genai-logic rebuild-from-database --project_name=./ --db_url=sqlite:///database/db.sqlite')
234
234
  log.info(".. complete\n")
235
235
 
236
236
 
@@ -12,10 +12,10 @@ ApiLogicServer CLI: given a database url, create [and run] customizable ApiLogic
12
12
  Called from api_logic_server_cli.py, by instantiating the ProjectRun object.
13
13
  '''
14
14
 
15
- __version__ = "15.00.27" # last public release: 15.00.25 (15.00.12)
15
+ __version__ = "15.00.32" # last public release: 15.00.25 (15.00.12)
16
16
  recent_changes = \
17
17
  f'\n\nRecent Changes:\n' +\
18
- "\t06/26/2024 - 15.00.27: Tech Preview: als genai-app w/ sra provider+model+grid_cascadeAdd, imports, bug [96] \n"\
18
+ "\t06/29/2024 - 15.00.32: Tech Preview: genai-logic genai-add-app --vibe, bug [96] \n"\
19
19
  "\t06/10/2024 - 15.00.12: MCP Security, win fixes for readme, graphics quotes \n"\
20
20
  "\t06/08/2024 - 15.00.10: MCP, optional shortening of stacktrace lines, bugfix[92] \n"\
21
21
  "\t05/16/2024 - 14.05.00: safrs 3.1.7, running mcp preview \n"\
@@ -946,9 +946,16 @@ class ProjectRun(Project):
946
946
  defaultInterpreterPath = self.api_logic_server_dir_path.parent.parent.parent.joinpath('clean/ApiLogicServer/venv/bin/python')
947
947
  self.default_interpreter_path = defaultInterpreterPath
948
948
  """ used to compute manager_path """
949
- self.manager_path = self.default_interpreter_path.parent.parent.parent
950
- log.debug(f'.. ..Manager path: {self.manager_path}') # eg ApiLogicServer/ApiLogicServer-dev/clean/ApiLogicServer
951
- log.debug(f'.. ..Interp path: manager_path / venv/bin/python')
949
+ self.venv_path = Path(sys.prefix) if is_docker() == False else Path('/home/api_logic_server/api_logic_server_cli')
950
+ self.manager_path = self.venv_path.parent
951
+ check_system_genai = self.manager_path.joinpath('system/genai/temp')
952
+ if not check_system_genai.exists():
953
+ self.manager_path = (self.venv_path / '../api_logic_server_cli/prototypes/manager').resolve()
954
+ log.debug(f'.. ..Manager path from dev env - customizations not active') # eg ...ApiLogicServer-src/api_logic_server_cli/prototypes/manager
955
+ log.debug(f'.. ..Manager path: {self.manager_path}')
956
+ # log.debug(f'.. ..Interp path: {self.manager_path / 'venv/bin/python'}')
957
+ if sys.prefix == sys.base_prefix:
958
+ log.warning(f'.. ..Warning - venv not being used: {self.venv_path}')
952
959
 
953
960
  self.api_logic_server_home = self.api_logic_server_dir_path.parent
954
961
 
@@ -1591,6 +1598,14 @@ from database import <project.bind_key>_models
1591
1598
  log.debug("1. Not Deleting Existing Project")
1592
1599
  log.debug("2. Using Existing Project")
1593
1600
  if self.command == "add_db":
1601
+ check_bind_key_exists = 'DATABASE_URI_' + self.bind_key.upper()
1602
+ config_path = self.project_directory_path / 'config/config.py'
1603
+ bind_key_exists = create_utils.does_file_contain(in_file=config_path,
1604
+ search_for=check_bind_key_exists)
1605
+ if bind_key_exists and self.bind_key != 'authentication':
1606
+ log.error(f'\nLooks like database already added')
1607
+ log.error(f'..`{check_bind_key_exists}` found in `config/config.py`\n\n')
1608
+ sys.exit(1)
1594
1609
  self.abs_db_url = self.update_config_and_copy_sqlite_db(
1595
1610
  f".. ..Adding Database [{self.bind_key}] to existing project")
1596
1611
  else: # normal path - clone, [overlay nw]
@@ -1,3 +1,3 @@
1
- last_created_date: June 26, 2025 08:44:28
2
- last_created_project_name: ../../../servers/mycircles
3
- last_created_version: 15.00.26
1
+ last_created_date: June 29, 2025 14:48:38
2
+ last_created_project_name: /Users/val/dev/ApiLogicServer/ApiLogicServer-dev/servers/NW_NoCust
3
+ last_created_version: 15.00.31
@@ -12,6 +12,8 @@ To add a new arg:
12
12
  * update Project.run()
13
13
 
14
14
  Main code is api_logic_server.py (PR)
15
+
16
+ To expand commands: ctx.forward(existing_command))
15
17
  '''
16
18
 
17
19
  from contextlib import closing
@@ -447,7 +449,7 @@ def curl_test(ctx, message):
447
449
  help="App directory name")
448
450
  @click.option('--admin-app', 'admin_app',
449
451
  default='admin',
450
- help="Input admin app")
452
+ help="Input admin app (schema)")
451
453
  @click.pass_context
452
454
  def app_create(ctx, project_name, app, admin_app):
453
455
  """
@@ -778,13 +780,16 @@ def genai_graphics(ctx, using, genai_version: str, replace_with: str):
778
780
  pass
779
781
  log.info("")
780
782
 
781
-
782
-
783
-
784
- @main.command("genai-app", cls=HideDunderCommand)
783
+ @main.command("genai-add-app", cls=HideDunderCommand)
785
784
  @click.option('--app-name', 'app_name',
786
- default='react_admin',
785
+ default='react_app',
787
786
  help="Name of generated app in ui/")
787
+ @click.option('--vibe/--no-vibe',
788
+ default=True, is_flag=True,
789
+ help="Show vibe docs")
790
+ @click.option('--retries',
791
+ default=1,
792
+ help="lint retries - 1 means none (see setup)")
788
793
  @click.option('--schema',
789
794
  default='admin.yaml',
790
795
  help="Model file in ui/admin/")
@@ -792,9 +797,9 @@ def genai_graphics(ctx, using, genai_version: str, replace_with: str):
792
797
  default='gpt-4o',
793
798
  help="Eg, gpt-3.5-turbo, gpt-4o")
794
799
  @click.pass_context
795
- def genai_admin_app(ctx, app_name: str, schema: str, genai_version: str):
800
+ def genai_add_app(ctx, app_name: str, vibe: click.BOOL, retries: int, schema: str, genai_version: str):
796
801
  """
797
- Adds a customizable react app to project
802
+ Creates a customizable react app in ui/, ready for vibe
798
803
  """
799
804
  global command
800
805
  project_dir = resolve_blank_project_name('')
@@ -817,11 +822,57 @@ def genai_admin_app(ctx, app_name: str, schema: str, genai_version: str):
817
822
  log.info(f'... Typical usage - cd into project, use --project_name=. \n')
818
823
  exit (1)
819
824
  from api_logic_server_cli.genai.genai_admin_app import GenAIAdminApp
820
- genai_admin = GenAIAdminApp(project=project, app_name=app_name, schema=schema, genai_version=genai_version)
825
+ genai_admin = GenAIAdminApp(project=project, app_name=app_name, vibe=vibe, schema=schema, retries=retries, genai_version=genai_version)
826
+ pass
827
+ log.info("")
828
+
829
+
830
+ @main.command("genai-add-mcp-client", cls=HideDunderCommand)
831
+ @click.option('--admin-app', is_flag=True,
832
+ default=True,
833
+ help="Update Admin App")
834
+ @click.pass_context
835
+ def genai_add_mcp_client(ctx, admin_app: click.BOOL):
836
+ """
837
+ Adds mcp-client to project: db, logic, admin app
838
+ """
839
+ global command
840
+
841
+ project_name = resolve_blank_project_name('')
842
+ log.info("")
843
+
844
+ mcp_db_path = get_api_logic_server_path().joinpath("database/mcp.sqlite")
845
+ assert mcp_db_path.exists(), "Unable to find api_logic_server_cli/database/mcp.sqlite"
846
+ mcp_uri = fr"sqlite:////{str(mcp_db_path)}"
847
+ project = PR.ProjectRun(command="add_db",
848
+ project_name=project_name,
849
+ api_name='api',
850
+ db_url=mcp_uri,
851
+ bind_key='mcp',
852
+ bind_key_url_separator=default_bind_key_url_separator
853
+ )
854
+ print("MCP DB Added")
855
+
856
+ project.project_directory, project.api_name, project.merge_into_prototype = \
857
+ create_utils.get_project_directory_and_api_name(project)
858
+ project.project_directory_actual = os.path.abspath(os.getcwd()) # make path absolute, not relative (no /../)
859
+ project.project_directory_path = Path(project.project_directory_actual)
860
+ models_py_path = project.project_directory_path.joinpath('database/models.py')
861
+ project.abs_db_url, project.nw_db_status, project.model_file_name = \
862
+ create_utils.get_abs_db_url("0. Using Sample DB", project, is_auth=True)
863
+
864
+ if not models_py_path.exists():
865
+ log.info(f'... Error - does not appear to be a project: {str(project.project_directory_path)}')
866
+ log.info(f'... Typical usage - cd into project, use --project_name=. \n')
867
+ exit (1)
868
+ from api_logic_server_cli.genai.genai_mcp import GenMCP
869
+ genai_mcp = GenMCP(project=project, admin_app=admin_app, api_logic_server_path=get_api_logic_server_path())
821
870
  pass
871
+
822
872
  log.info("")
823
873
 
824
874
 
875
+
825
876
  @main.command("genai-create", cls=HideDunderCommand)
826
877
  @click.option('--project-name', 'project_name',
827
878
  default=f'{last_created_project_name}',
@@ -1386,7 +1437,7 @@ def rebuild_from_database(ctx, project_name: str, db_url: str, api_name: str, no
1386
1437
  \b
1387
1438
  ex
1388
1439
  \b
1389
- ApiLogicServer rebuild-from-database --project_name=~/dev/servers/ApiLogicProject --db_url=nw
1440
+ genai-logic rebuild-from-database --project_name=~/dev/servers/ApiLogicProject --db_url=nw
1390
1441
 
1391
1442
  """
1392
1443
  db_types = ""
@@ -2053,7 +2104,7 @@ def check_ports():
2053
2104
 
2054
2105
 
2055
2106
  def start(): # target of setup.py
2056
- sys.stdout.write("\nWelcome to API Logic Server " + PR.__version__ + "\n\n")
2107
+ sys.stdout.write("\nWelcome to Genai-Logic " + PR.__version__ + "\n\n")
2057
2108
  hostname, local_ip = check_ports() # = socket.gethostname()
2058
2109
  # sys.stdout.write(" SQLAlchemy Database URI help: https://docs.sqlalchemy.org/en/14/core/engines.html\n")
2059
2110
  main(obj={})
@@ -1,5 +1,5 @@
1
1
  from enum import Enum
2
-
2
+ from pathlib import Path
3
3
 
4
4
  class ExtendedEnum(Enum):
5
5
  """
@@ -210,7 +210,7 @@ class DBMLCreator(object):
210
210
  # copy mcp learning from manager (to enable user to extend)
211
211
  docs_path = Path(self.mod_gen.project_directory).joinpath('docs')
212
212
  docs_path.mkdir(parents=True, exist_ok=True)
213
- mcp_learning_src = genai_svcs.get_manager_path(use_env=True).joinpath('system/genai/mcp_learning')
213
+ mcp_learning_src = genai_svcs.get_manager_path(project=self.mod_gen.project).joinpath('system/genai/mcp_learning')
214
214
  mcp_learning_dst = Path(self.mod_gen.project_directory).joinpath('docs/mcp_learning')
215
215
  if mcp_learning_dst.exists():
216
216
  shutil.rmtree(mcp_learning_dst)
@@ -120,6 +120,11 @@ class OntCreator(object):
120
120
  if each_resource["hidden"] == True:
121
121
  continue
122
122
  each_entity = self.create_model_entity(each_resource, resources=resources)
123
+ is_missing = not each_resource_name in resources
124
+ if is_missing: # might occur with add-db
125
+ log.warning(f"\n⚠️ Warning - ont_create() finds admin.yaml resource '{each_resource_name}' - not present in database model")
126
+ log.warning(f"..Can occur when using multiple databases - update your ontimize app as required")
127
+ continue
123
128
  app_model_out.entities[each_resource_name] = each_entity
124
129
 
125
130
  app_model_out.entities[each_resource_name].columns = []
@@ -249,7 +254,7 @@ class OntCreator(object):
249
254
  if compute_type:
250
255
  is_missing = not each_resource_name in resources
251
256
  if is_missing: # might occur with add-db, using wrong model
252
- sys.exit(f"Sys Err - ont_create missing resource: {each_resource_name}\n\n")
257
+ sys.exit(f"Sys Err - ont_create missing resource: {each_resource_name}\n\n")
253
258
  else:
254
259
  resource = resources[each_resource_name]
255
260
  resource_attributes = resource.attributes
Binary file
@@ -0,0 +1,11 @@
1
+ mcp-SysMcp:
2
+ attributes:
3
+ - name: request
4
+ type: textarea
5
+ - label: ' id*'
6
+ name: id
7
+ search: true
8
+ sort: true
9
+ show_when: isInserting == false
10
+ type: SysMcp
11
+ user_key: id
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
  import importlib
7
7
  from api_logic_server_cli.genai.genai_utils import call_chatgpt
8
8
  import requests
9
- import os, time
9
+ import os, time, sys
10
10
  import datetime
11
11
  import create_from_model.api_logic_server_utils as utils
12
12
  import time
@@ -27,6 +27,7 @@ import json
27
27
  from pathlib import Path
28
28
  from openai import OpenAI
29
29
  import yaml
30
+ import subprocess
30
31
  import api_logic_server_cli.genai.genai_svcs as genai_svcs
31
32
 
32
33
  log = logging.getLogger(__name__)
@@ -38,12 +39,20 @@ class JSResponseFormat(BaseModel): # must match system/genai/prompt_inserts/res
38
39
 
39
40
  class GenAIAdminApp:
40
41
 
41
- def __init__(self, project: Project, app_name: str, schema: str, genai_version: str):
42
+ def __init__(self, project: Project, app_name: str, vibe: bool, schema: str, genai_version: str, retries: int):
42
43
  self.start_time = time.time()
43
44
 
45
+ self.project = project
44
46
  self.api_version = genai_version
47
+ self.retries = retries
48
+
45
49
  self.project_root = project.project_directory_path
46
- self.app_templates_path = genai_svcs.get_manager_path(use_env=True).joinpath('system/genai/app_templates')
50
+ self.app_templates_path = genai_svcs.get_manager_path(project=project).joinpath('system/genai/app_templates')
51
+
52
+ log.info(f'\ngenai_app here..')
53
+ log.info(f'..model: {schema}')
54
+ log.info(f'..diagnostics: docs/admin_app')
55
+ log.info(f'..templates: {str(self.app_templates_path)}')
47
56
 
48
57
  self.dbml_path = self.project_root / "docs/db.dbml"
49
58
  self.discovery_path = self.project_root / "docs/mcp_learning/mcp_discovery.json"
@@ -51,13 +60,18 @@ class GenAIAdminApp:
51
60
  self.admin_yaml_path = self.project_root / f"ui/admin/{schema}"
52
61
  self.admin_config_prompt_path = self.app_templates_path / f"app_learning/Admin-config-prompt.md"
53
62
  self.admin_json_api_model_prompt_path = self.app_templates_path / f"app_learning/Admin-json-api-model-prompt.md"
54
- assert self.admin_config_prompt_path.exists(), "sys err - self.admin_config_prompt_path"
55
- assert self.admin_json_api_model_prompt_path.exists(), "sys err - self.admin_json_api_model_prompt_path"
63
+ if not self.admin_config_prompt_path.exists():
64
+ log.error('\nUnable to find Manager for app_learning/Admin-config-prompt.md')
65
+ log.error('..Please set env variable APILOGICSERVER_HOME to manager root\n')
66
+ sys.exit(1)
67
+ if not self.admin_json_api_model_prompt_path.exists():
68
+ log.error('\nUnable to find Manager for app_learning/Admin-json-api-model-prompt.md')
69
+ log.error('..Please set env variable APILOGICSERVER_HOME to manager root\n')
70
+ sys.exit(1)
56
71
 
57
72
  self.ui_project_path = self.project_root / f"ui/{app_name}"
58
73
  self.ui_src_path = self.ui_project_path / "src"
59
74
 
60
- self.app_templates_path = genai_svcs.get_manager_path(use_env=True).joinpath('system/genai/app_templates')
61
75
  self.react_admin_template_path = self.app_templates_path / 'react-admin-template'
62
76
  self.prompts_path = self.app_templates_path / "app_learning"
63
77
  # self.admin_app_learning = utils.read_file(self.prompts_path / "Admin-App-Learning-Prompt.md")
@@ -87,13 +101,15 @@ class GenAIAdminApp:
87
101
  self.b_generate_app_js()
88
102
  # comes from copytree, above -- self.c_generate_data_provider()
89
103
 
90
- log.info(f" Completed in [{str(int(time.time() - self.start_time))} secs] \n\n")
104
+ log.info(f"..✅ Completed in [{str(int(time.time() - self.start_time))} secs]")
91
105
 
92
- log.info(f"✅ Next Steps:\n")
106
+ log.info(f"\n✅ Next Steps:\n")
93
107
  log.info('Start the API Logic Project: F5')
94
108
  log.info(f'> cd ui/{app_name}')
95
109
  log.info('> npm install')
96
- log.info('> npm start')
110
+ log.info('> npm start\n')
111
+ if vibe:
112
+ log.info('\n💡 Suggestion: Customize with Vibe: https://apilogicserver.github.io/Docs/Admin-Vibe/#vibe-customization')
97
113
 
98
114
  def read_standard_imports(self) -> List[str]:
99
115
  '''grr
@@ -122,7 +138,6 @@ class GenAIAdminApp:
122
138
  def fix_resource(genai_app: GenAIAdminApp, raw_source: str) -> str:
123
139
  ''' Remove occasional begin/end code markers <br>
124
140
  And horrific override of ChatGPT refusal to generate imports AS DIRECTED!<br>
125
- ToDo: lint, and repeat generation if errors detected
126
141
  '''
127
142
 
128
143
  source_lines = raw_source.splitlines()
@@ -135,13 +150,38 @@ class GenAIAdminApp:
135
150
  continue
136
151
  else:
137
152
  break
138
- if do_mandatory_imports := True and not imports_done and '= (props) =>' in each_line:
153
+ if do_mandatory_imports := True and not imports_done and 'props' in each_line:
139
154
  result_lines = list(genai_app.standard_imports)
140
155
  imports_done = True
141
156
  result_lines.append(each_line)
157
+ parse_result = True
142
158
  # return source_lines as a string
143
159
  return "\n".join(result_lines)
144
160
 
161
+ def js_lint_source_code(target_file: Path):
162
+ # js lint target_file: npx eslint target_file.js
163
+ # needs: eslint
164
+ # needs: npm install eslint-plugin-jsdoc
165
+ # works manually: npx eslint /Users/val/dev/ApiLogicServer/ApiLogicServer-dev/servers/basic_demo/ui/basic_demo_app/src/Customer.js -c .eslintrc.js
166
+ # failing: Value for 'config' of type 'path::String' required.\nYou're using eslint.config.js
167
+ config = self.project.api_logic_server_dir_path / 'tools/.eslintrc.js'
168
+ assert config.exists()
169
+ try:
170
+ result = subprocess.run(
171
+ ["npx", "eslint", str(target_file), '-c ' + str(config)[1:]],
172
+ capture_output=True,
173
+ text=True
174
+ )
175
+ if result.returncode == 0:
176
+ source_code_fixed = True
177
+ else:
178
+ log.warning(f"ESLint issues in {target_file}:\n{result.stdout}\n{result.stderr}")
179
+ source_code_fixed = False
180
+ except Exception as e:
181
+ log.warning(f"Could not lint {target_file}: {e}")
182
+ # If linting fails, assume code is okay to proceed
183
+ source_code_fixed = True
184
+ return source_code_fixed
145
185
 
146
186
  for each_resource_name, each_resource in self.resources.items():
147
187
  learning = self.admin_app_resource_learning
@@ -149,20 +189,33 @@ class GenAIAdminApp:
149
189
  messages = [
150
190
  {"role": "user", "content": "You are a helpful expert in react and JavaScript"},
151
191
  {"role": "user", "content": learning},
152
- # {"role": "user", "content": example_image_content},
153
- # {"role": "user", "content": f'Schema:\n{self.schema_yaml}'},
154
192
  {"role": "user", "content": f'Schema:\n{self.schema}'},
155
193
  {"role": "user", "content": f'Generate the full javascript source code for the `{each_resource_name}.js` React Admin file, formatted as a JSResponseFormat'}]
156
194
  save_response = self.project_root / f"docs/admin_app/{each_resource_name}"
157
- output = genai_svcs.call_chatgpt(messages = messages,
158
- api_version=self.api_version,
159
- using=save_response,
160
- response_as=JSResponseFormat)
161
- response_dict = json.loads(output)
162
- target_file = self.ui_src_path / f"{each_resource_name}.js"
163
- source_code = fix_resource(self, response_dict['code'])
164
- utils.write_file(target_file, source_code)
165
- log.info(f"\n✅ Wrote: {target_file}")
195
+ retry_number = 0
196
+
197
+ max_retries = 2
198
+ while retry_number <= self.retries: # loop until lint succeeds, max retry_number times
199
+ retry_number += 1
200
+ output = genai_svcs.call_chatgpt(
201
+ messages=messages,
202
+ api_version=self.api_version,
203
+ using=save_response,
204
+ response_as=JSResponseFormat
205
+ )
206
+ response_dict = json.loads(output)
207
+ target_file = self.ui_src_path / f"{each_resource_name}.js"
208
+ source_code = fix_resource(self, response_dict['code'])
209
+ utils.write_file(target_file, source_code)
210
+ source_code_fixed = True
211
+ if self.retries > 1: # 1 retry (current , per setup issues) means no lint
212
+ source_code_fixed = js_lint_source_code(target_file=target_file)
213
+ if source_code_fixed:
214
+ break
215
+ if source_code_fixed:
216
+ log.info(f"..✅ Wrote: {each_resource_name}.js")
217
+ else:
218
+ log.warning(f"..❌ {self.retries} retries did not fix: {each_resource_name}.js")
166
219
 
167
220
 
168
221
  def b_generate_app_js(self):
@@ -201,5 +254,5 @@ class GenAIAdminApp:
201
254
  source_code = fix_app(source_code)
202
255
  utils.write_file(target_file, source_code)
203
256
 
204
- log.info(f" Wrote: {target_file}\n")
257
+ log.info(f"..✅ Wrote: App.js")
205
258
 
@@ -0,0 +1,43 @@
1
+ import shutil
2
+ from typing import Dict, List
3
+ from api_logic_server_cli.cli_args_project import Project
4
+ import logging
5
+ from pathlib import Path
6
+ import importlib
7
+ import requests
8
+ import os, time
9
+ import datetime
10
+ import json
11
+ from typing import List, Dict
12
+ from pydantic import BaseModel
13
+ import create_from_model.api_logic_server_utils as create_utils
14
+ import json
15
+
16
+ log = logging.getLogger(__name__)
17
+
18
+
19
+ class JSResponseFormat(BaseModel): # must match system/genai/prompt_inserts/response_format.prompt
20
+ code : str # generated javascript code (only)
21
+
22
+
23
+ class GenMCP:
24
+
25
+ def __init__(self, project: Project, admin_app: bool, api_logic_server_path: Path):
26
+ self.start_time = time.time()
27
+
28
+ self.project_root = project.project_directory_path
29
+
30
+ log.info(f'\ngenai_mcp here..')
31
+
32
+ shutil.copyfile(api_logic_server_path / 'templates/mcp_client_executor_request.py',
33
+ project.project_directory_path / 'logic/logic_discovery/mcp_client_executor_request.py')
34
+
35
+ if admin_app:
36
+ lines = create_utils.read_file(path = api_logic_server_path / 'fragments/mcp_admin.yml')
37
+ admin_yaml_path = project.project_directory_path / 'ui/admin/admin.yaml'
38
+ create_utils.insert_lines_at(lines = lines,
39
+ at = 'settings:',
40
+ file_name = admin_yaml_path)
41
+ pass
42
+ pass
43
+
@@ -81,7 +81,7 @@ try: # this is just for WebGenAI
81
81
 
82
82
  # Add the file handler to the logger
83
83
  log.addHandler(file_handler)
84
- log.setLevel(logging.DEBUG)
84
+ # log.setLevel(logging.DEBUG)
85
85
 
86
86
  except Exception as exc:
87
87
  pass # this is just for WebGenAI, ok to ignore error
@@ -932,7 +932,7 @@ def call_chatgpt(messages: List[Dict[str, str]], api_version: str, using: str, r
932
932
  messages_for_print = string_to_lines(messages_for_print) # Removed to avoid altering messages
933
933
  with open(request_path, "w") as request_file: # save for debug
934
934
  json.dump(messages_for_print, request_file, indent=4)
935
- log.info(f'.. saved request: {using}/request.json')
935
+ log.debug(f'.. saved request: {using}/request.json')
936
936
  client = get_ai_client()
937
937
  # response_format = "json_object" if wg_response else {"type": "text"}
938
938
  completion = client.beta.chat.completions.parse(
@@ -941,7 +941,7 @@ def call_chatgpt(messages: List[Dict[str, str]], api_version: str, using: str, r
941
941
  # temperature=self.project.genai_temperature, values .1 and .7 made students / charges fail
942
942
  model=model # for own model, use "ft:gpt-4o-2024-08-06:personal:logicbank:ARY904vS"
943
943
  )
944
- log.info(f'ChatGPT ({str(int(time.time() - start_time))} secs) - response at: system/genai/temp/chatgpt_original.response')
944
+ log.debug(f'OpenAI ({str(int(time.time() - start_time))} secs) - response at: system/genai/temp/chatgpt_original.response')
945
945
 
946
946
  data = completion.choices[0].message.content
947
947
 
@@ -966,7 +966,7 @@ def call_chatgpt(messages: List[Dict[str, str]], api_version: str, using: str, r
966
966
  log.error(f"\n\nError: ChatGPT call failed\n- please see https://apilogicserver.github.io/Docs/WebGenAI-CLI/#configuratio\n{inst}\n\n")
967
967
  sys.exit(1)
968
968
 
969
- def get_manager_path(use_env: bool = False) -> Path:
969
+ def get_manager_path(project: object = None) -> Path:
970
970
  """ Checks cwd, parent, and grandparent for system/genai
971
971
 
972
972
  * Possibly could add cli arg later
@@ -978,46 +978,47 @@ def get_manager_path(use_env: bool = False) -> Path:
978
978
  Path: Manager path (contains system/genai)
979
979
  """
980
980
 
981
- if use_env and os.getenv("APILOGICSERVER_HOME") is not None:
982
- result_path = Path(os.getenv("APILOGICSERVER_HOME")).joinpath('api_logic_server_cli/prototypes/manager')
981
+ if project is not None:
982
+ result_path = project.manager_path
983
+ check_system_genai = result_path.joinpath('system/genai/temp')
984
+ if check_system_genai.exists():
985
+ return result_path
983
986
  return result_path
984
987
 
985
988
  result_path = Path(os.getcwd()) # normal case - project at manager root
986
- check_system_genai = result_path.joinpath('system/genai')
989
+ check_system_genai = result_path.joinpath('system/genai/temp')
987
990
  if check_system_genai.exists():
988
991
  return result_path
989
992
 
990
993
  result_path = result_path.parent # try pwd parent
991
- check_system_genai = result_path.joinpath('system/genai')
994
+ check_system_genai = result_path.joinpath('system/genai/temp')
992
995
  if check_system_genai.exists():
993
996
  return result_path
994
997
 
995
998
  result_path = result_path.parent # try pwd grandparent
996
- check_system_genai = result_path.joinpath('system/genai')
999
+ check_system_genai = result_path.joinpath('system/genai/temp')
997
1000
  if check_system_genai.exists():
998
1001
  return result_path
999
1002
 
1000
1003
  result_path = result_path.parent
1001
- check_system_genai = result_path.joinpath('system/genai')
1004
+ check_system_genai = result_path.joinpath('system/genai/temp')
1002
1005
  if check_system_genai.exists():
1003
1006
  return result_path
1004
1007
 
1005
1008
  result_path = result_path.parent
1006
- check_system_genai = result_path.joinpath('system/genai')
1009
+ check_system_genai = result_path.joinpath('system/genai/temp')
1007
1010
  if check_system_genai.exists():
1008
1011
  return result_path
1009
1012
 
1010
1013
  result_path = result_path.parent
1011
- check_system_genai = result_path.joinpath('system/genai')
1014
+ check_system_genai = result_path.joinpath('system/genai/temp')
1012
1015
  if check_system_genai.exists():
1013
1016
  return result_path
1014
1017
 
1015
1018
  result_path = result_path.parent # try ancestors - this is for import testing
1016
- check_system_genai = result_path.joinpath('system/genai')
1019
+ check_system_genai = result_path.joinpath('system/genai/temp')
1017
1020
 
1018
1021
  if not check_system_genai.exists():
1019
- if use_env:
1020
- result_path = Path(create_utils.get_api_logic_server_dir()).joinpath('prototypes/manager')
1021
1022
  check_system_genai.exists(), f"Manager Directory not found and APILOGICSERVER_HOME not set: {check_system_genai}"
1022
1023
  return result_path
1023
1024
 
@@ -72,8 +72,23 @@ loggers:
72
72
  handlers: [console]
73
73
  propagate: no
74
74
 
75
+ api_logic_server_cli.genai.genai_svcs:
76
+ level: INFO
77
+ handlers: [console]
78
+ propagate: no
79
+
80
+ openai:
81
+ level: WARNING
82
+ handlers: [console]
83
+ propagate: no
84
+
85
+ httpx:
86
+ level: WARNING
87
+ handlers: [console]
88
+ propagate: no
89
+
75
90
  api_logic_server_cli.genai.genai_admin_app:
76
- level: DEBUG
91
+ level: INFO
77
92
  handlers: [console]
78
93
  propagate: no
79
94