ApiLogicServer 16.0.2__py3-none-any.whl → 16.0.4__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.
@@ -12,10 +12,11 @@ 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__ = "16.00.02" # last public release: 15.04.01
15
+ __version__ = "16.00.04" # last public release: 16.00.03
16
16
  recent_changes = \
17
17
  f'\n\nRecent Changes:\n' +\
18
- "\t11/22/2025 - 16.00.02: Probabalistic logic (w/ fallback, cand*) - see basic_demo/readme_ai_mcp.md \n"\
18
+ "\t12/11/2025 - 16.00.04: bug fix [106] - SqlServer autoinsert \n"\
19
+ "\t11/25/2025 - 16.00.03: Probabalistic logic (w/ fallback, cand*) - see basic_demo/readme_ai_mcp.md \n"\
19
20
  "\t11/12/2025 - 15.04.03: Copilot rules on updates, tighter basic_demo startup, allow for demo_ai_mcp/then tutorial \n"\
20
21
  "\t11/08/2025 - 15.04.00: Nat lang Copilot data access, fix Manager/Copilot startup, finding venv in project \n"\
21
22
  "\t10/29/2025 - 15.03.00: Stable Tutor 3.3 (working, vibe transtion) \n"\
@@ -1,3 +1,3 @@
1
- last_created_date: November 08, 2025 08:44:56
2
- last_created_project_name: ../../../servers/basic_demo
3
- last_created_version: 15.04.00
1
+ last_created_date: December 10, 2025 19:14:55
2
+ last_created_project_name: ../../../servers/postgres-nw
3
+ last_created_version: 16.00.04
@@ -1,66 +1,133 @@
1
- ---
2
- title: Copilot Instructions for GenAI-Logic Projects
3
- Description: Project-level instructions for working with generated projects
4
- Source: ApiLogicServer-src/prototypes/base/.github/.copilot-instructions.md
5
- Propagation: CLI create command → created projects (non-basic_demo)
6
- Instrucions: Changes must be merged from api_logic_server_cli/prototypes/basic_demo/.github - see instructions there
7
- Usage: AI assistants read this when user opens any created project
8
- version: 3.0
9
- changelog:
10
- - 3.0 (Nov 17, 2025) - Major streamlining: removed duplicate sections, consolidated MCP content, simplified workflows
11
- - 2.9 (Nov 17, 2025) - MANDATORY training file reading workflow (STOP command)
12
- - 2.8 (Nov 16, 2025) - Probabilistic Logic support
1
+ <!--
2
+ ═══════════════════════════════════════════════════════════════════════════════
3
+ 🚨 MANDATORY: READ THIS FIRST - NO EXCEPTIONS 🚨
4
+ ═══════════════════════════════════════════════════════════════════════════════
5
+
6
+ ⚠️ IF USER SAYS: "load .github/.copilot-instructions.md" OR ANY ACTIVATION PHRASE
7
+ ⚠️ YOU MUST EXECUTE THIS EXACT SEQUENCE - NO DEVIATIONS:
8
+
9
+ 1. Read .github/.copilot-instructions.md COMPLETELY (silently - internalize all instructions)
10
+ 2. Read .github/welcome.md (silently - do not mention this action)
11
+ 3. Display ONLY the content from welcome.md
12
+ 4. DO NOT say "I've loaded the instructions"
13
+ 5. DO NOT display this .copilot-instructions.md file
14
+ 6. DO NOT explain what you're doing
15
+
16
+ THIS IS NOT A SUGGESTION - THIS IS A MANDATORY COMMAND
17
+
18
+ ═══════════════════════════════════════════════════════════════════════════════
19
+ -->
13
20
  ---
14
21
 
15
- # GitHub Copilot Instructions for GenAI-Logic (aka API Logic Server) Projects
22
+ ## 🚨 CRITICAL: User Activation Protocol
23
+
24
+ **ACTIVATION TRIGGERS:**
25
+ - "load .github/.copilot-instructions.md"
26
+ - "load copilot instructions"
27
+ - "help me get started"
28
+ - "activate copilot"
29
+ - Any similar startup phrase
30
+
31
+ **MANDATORY RESPONSE SEQUENCE:**
32
+
33
+ ```
34
+ STEP 1: Read .github/.copilot-instructions.md COMPLETELY (silently - internalize all instructions)
35
+ STEP 2: Read .github/welcome.md (silently)
36
+ STEP 3: Display welcome.md content ONLY
37
+ STEP 4: STOP - do nothing else
38
+ ```
16
39
 
17
40
  ---
18
41
 
19
- ## ⚠️ INSTRUCTION FOR AI ASSISTANTS
42
+ ## 🎯 CRITICAL: Guided Tour Activation Protocol
43
+
44
+ **ACTIVATION TRIGGERS:**
45
+ - "guide me through"
46
+ - "guide me"
47
+ - "take the tour"
48
+ - "walk me through"
49
+ - "show me around"
50
+ - Any similar tour/walkthrough request
20
51
 
21
- **Interaction Tone:** I (Copilot) speak as "I" when helping you. This creates a friendly, collaborative partnership where I assist with your development work.
52
+ **MANDATORY RESPONSE SEQUENCE:**
22
53
 
23
- **User activation phrases:**
24
- - "Please load .github/.copilot-instructions.md"
25
- - "Load copilot instructions"
26
- - "What can I do here?"
27
- - "Help me get started"
28
- - OR when user first opens this project workspace and greets you
54
+ ```
55
+ STEP 1: Read tutor.md COMPLETELY (silently)
56
+ STEP 2: Follow tutor.md instructions EXACTLY
57
+ STEP 3: Act as TOUR GUIDE (not passive assistant)
58
+ STEP 4: Create manage_todo_list for tour sections
59
+ STEP 5: Start with tutor.md Introduction section
60
+ ```
29
61
 
30
- **When you see these phrases (or when reading these instructions), IMMEDIATELY:**
62
+ **✅ CORRECT EXECUTION:**
63
+ ```
64
+ User: "guide me"
31
65
 
32
- **Present the Welcome section below** - NO preamble, NO summary, NO meta-commentary
66
+ AI: [reads tutor.md completely - NO OUTPUT]
67
+ AI: [creates todo list from tutor sections]
68
+ AI: [follows tutor.md Introduction section exactly]
69
+ AI: "I'll guide you through basic_demo - a 20-minute hands-on exploration..."
70
+ ```
33
71
 
34
- **CRITICAL - Do NOT:**
35
- - Say "I've loaded the instructions"
36
- - Say "I've read the file"
37
- - Summarize or describe what's in this file
38
- - Add any commentary about reading instructions
72
+ **❌ FORBIDDEN BEHAVIORS:**
73
+ ```
74
+ User: "guide me"
75
+
76
+ AI: Starts giving general guidance without reading tutor.md
77
+ ❌ AI: Runs commands without following tutor choreography
78
+ ❌ AI: Acts as passive assistant waiting for user direction
79
+ ❌ AI: Skips sections or reorders steps
80
+ ❌ AI: Offers option menus instead of directing the tour
81
+ ❌ AI: Assumes server state or skips stop/start sequences
82
+ ```
39
83
 
40
- **CRITICAL - DO:**
41
- - Present the Welcome content directly (exactly) as your response
42
- - Start with: "Welcome! This is your GenAI-Logic project."
43
- - Act like you're naturally greeting the user
44
- - Include the "guide me through" call-to-action
84
+ **RATIONALE:**
85
+ - tutor.md contains weeks of refined choreography
86
+ - Every command, stop, start is precisely sequenced
87
+ - Deviations break the learning experience
88
+ - You are the DIRECTOR in tour mode, not a passive responder
89
+ - The tour has been engineered for AI reliability through multiple iterations
45
90
 
46
- ---
91
+ **✅ CORRECT EXECUTION:**
92
+ ```
93
+ User: "load .github/.copilot-instructions.md"
94
+
95
+ AI: [reads .copilot-instructions.md COMPLETELY - NO OUTPUT - internalizes all instructions]
96
+ AI: [reads welcome.md silently - NO OUTPUT]
97
+ AI: [displays ONLY this]:
47
98
 
48
99
  ## Welcome
49
100
 
50
- **Welcome! This is your GenAI-Logic project.**
101
+ **Welcome! This is your basic_demo project.**
102
+
103
+ This is a complete, working microservice auto-generated from a database schema...
104
+ [... rest of welcome.md content ...]
105
+ ```
106
+
107
+ **❌ FORBIDDEN BEHAVIORS:**
108
+ ```
109
+ User: "load .github/.copilot-instructions.md"
51
110
 
52
- This is a complete, working microservice auto-generated from your database schema.
111
+ AI: "I've loaded the instructions file..."
112
+ ❌ AI: "Here are the contents of .copilot-instructions.md:"
113
+ ❌ AI: [displays .copilot-instructions.md]
114
+ ❌ AI: "I'll read the file for you..."
115
+ ❌ AI: Any meta-commentary about loading or reading files
116
+ ```
53
117
 
54
- **What's already built:**
55
- - **Admin Web Application** - Live at `http://localhost:5656`
56
- - **REST API Endpoints** - All database tables exposed at `/api/*` (discoverable by MCP clients)
57
- - **Database Models** - Complete SQLAlchemy ORM in `database/models.py`
58
- - **Authentication System** - JWT-based auth framework
59
- - **Business Logic Engine** - Declarative rules system
118
+ **RATIONALE:**
119
+ - Users want to see the **welcome message**, not technical instructions
120
+ - This file (.copilot-instructions.md) is for AI context, not user display
121
+ - Separation of concerns: welcome.md = user-facing, copilot-instructions.md = AI-facing
122
+ - No meta-cognitive confusion about "instructions" vs "content"
60
123
 
61
124
  ---
62
125
 
63
- ## Here are some things I can help you with
126
+ ## Capabilities Reference
127
+
128
+ When user asks "what can I do here", list these capabilities:
129
+
130
+ ### Here Are Some Things I Can Help You With
64
131
 
65
132
  1. **Add business logic** - Describe requirements in natural language, I'll generate declarative rules (deterministic + AI-driven)
66
133
  2. **Customize the API** - Add custom endpoints for your specific needs
@@ -76,38 +143,22 @@ This is a complete, working microservice auto-generated from your database schem
76
143
 
77
144
  ---
78
145
 
79
- Want to get started? Press **F5** to start the server with debugger support, then open `http://localhost:5656`. (There are also run configurations for running tests and other tasks.) Or just ask me what you'd like to work on.
80
-
81
146
  ---
82
-
83
- ## 🔑 Key Technical Points
84
- ```
85
-
86
- **DO NOT create your own summary. DO NOT rephrase. Copy the text above exactly.**
87
-
88
- The technical reference sections below are for later consultation when working on specific tasks.
89
-
90
- ---
91
-
92
- ## Welcome (Reference Copy)
93
-
94
- | # | Service | Description |
95
- |---|---------|-------------|
96
- | 1️⃣ | **Add business logic** | Describe your requirements in natural language, I'll generate declarative rules |
97
- | 2️⃣ | **Customize the API** | Add custom endpoints for your specific needs |
98
- | 3️⃣ | **Create custom UIs** | Build React apps with `genai-logic genai-add-app --vibe` |
99
- | 4️⃣ | **Add security** | Set up role-based access control with `genai-logic add-auth` |
100
- | 5️⃣ | **Test your logic** | Create Behave tests with requirements traceability |
101
- | 6️⃣ | **Configure Admin UI** | Customize the auto-generated admin interface |
102
- | 7️⃣ | **Add MCP integration** | Enable Model Context Protocol for external AI access |
103
- | 8️⃣ | **Create B2B APIs** | Complex integration endpoints with partner systems |
104
- | 9️⃣ | **Add events** | Integrate with Kafka, webhooks, or other event systems |
105
- | 🔟 | **Customize models** | Add tables, attributes, or derived fields |
106
- | 1️⃣1️⃣ | **Discovery systems** | Auto-load logic and APIs from discovery folders |
107
-
147
+ title: Copilot Instructions for basic_demo GenAI-Logic Project
148
+ Description: Project-level instructions for working with generated projects
149
+ Source: ApiLogicServer-src/prototypes/base/.github/.copilot-instructions.md
150
+ Propagation: CLI create command → created projects (non-basic_demo)
151
+ Instrucions: Changes must be merged from api_logic_server_cli/prototypes/basic_demo/.github - see instructions there
152
+ Usage: AI assistants read this when user opens any created project
153
+ version: 3.1
154
+ changelog:
155
+ - 3.1 (Nov 20, 2025) - Improved activation instructions with visual markers and examples
156
+ - 3.0 (Nov 17, 2025) - Major streamlining: removed duplicate sections, consolidated MCP content, simplified workflows
157
+ - 2.9 (Nov 17, 2025) - MANDATORY training file reading workflow (STOP command)
158
+ - 2.8 (Nov 16, 2025) - Probabilistic Logic support
108
159
  ---
109
160
 
110
- Want to get started? Press **F5** to start the server with debugger support, then open `http://localhost:5656`. (There are also run configurations for running tests and other tasks.) Or just ask me what you'd like to work on.
161
+ # GitHub Copilot Instructions for GenAI-Logic (aka API Logic Server) Projects
111
162
 
112
163
  ---
113
164
 
@@ -271,6 +322,7 @@ The engine provides automatic:
271
322
  - **Cascading updates** - when Order.customer_id changes, adjusts BOTH old and new Customer.balance
272
323
  - **Transitive dependencies** - Item.quantity change cascades through Item.amount → Order.amount_total → Customer.balance
273
324
  - **Optimized execution** - uses deltas, not re-aggregation; automatic pruning
325
+
274
326
  **Why the Rules Engine is a Correctness Guarantee:**
275
327
 
276
328
  The "2 critical bugs" that even AI-generated procedural code missed:
@@ -0,0 +1,22 @@
1
+ ---
2
+ use: welcome for GenAI-Logic Projects
3
+ ---
4
+
5
+ ## Welcome to the `basic_demo` project
6
+
7
+ This is a complete, working microservice auto-generated from a database schema - **uncustomized**, so you can see what to expect when you create projects from your own databases.
8
+
9
+ Created from database schema introspection:
10
+ - **Admin Web Application** - Live at `http://localhost:5656`
11
+ - **REST API Endpoints** - All database tables exposed at MCP discoverable `/api/*`
12
+ - **Database Models** - Complete SQLAlchemy ORM in `database/models.py`
13
+ - **Authentication System** - JWT-based auth framework
14
+ - **Business Logic Engine** - Declarative rules system
15
+
16
+ ---
17
+
18
+ To start your application, ***Press F5***
19
+
20
+ ---
21
+
22
+ Ask ***'show me what you can help me with'*** for a list of services I can provide.
@@ -9,7 +9,7 @@
9
9
 
10
10
  We asked **GitHub Copilot** to generate business logic code from natural language requirements.
11
11
 
12
- It generated **220 lines of procedural code**.
12
+ It generated **220 lines of procedural code** (to see it, [click here](https://github.com/ApiLogicServer/ApiLogicServer-src/blob/main/api_logic_server_cli/prototypes/basic_demo/logic/procedural/credit_service.py)).
13
13
 
14
14
  We asked: **"What if the order's customer_id changes?"**
15
15
  Copilot found a critical bug and fixed it.
@@ -34,6 +34,7 @@ genai-logic create --db_url=sqlite:///samples/dbs/todos.sqlite --project_name=to
34
34
  genai-logic create --db_url=sqlite:////Users/val/dev/ApiLogicServer/ApiLogicServer-dev/clean/ApiLogicServer/samples/dbs/todos.sqlite --project_name=todo
35
35
 
36
36
  # from localhost to mysql container
37
+ genai-logic create --db_url=mysql+pymysql://root:p@localhost:3306/Northwind --project_name=mysql-northwind
37
38
  genai-logic create --db_url=mysql+pymysql://root:p@localhost:3306/classicmodels --project_name=docker_classicmodels
38
39
  genai-logic create --db_url=mysql+pymysql://root:p@localhost:3306/Chinook --project_name=docker_chinook
39
40
 
@@ -1204,6 +1204,7 @@ else:
1204
1204
  column.index = True
1205
1205
  kwarg.append('index')
1206
1206
 
1207
+ autoincrement = False
1207
1208
  if Computed and isinstance(column.server_default, Computed):
1208
1209
  expression = self._get_compiled_expression(column.server_default.sqltext)
1209
1210
 
@@ -1214,17 +1215,24 @@ else:
1214
1215
  server_default = 'Computed({!r}{})'.format(expression, persist_arg)
1215
1216
 
1216
1217
  elif column.server_default:
1218
+ # tests:
1219
+ # SQL Server Types [TVF]. server_default is Identity(start=1, increment=1) sqlalchemy.sql.schema.Identity
1220
+ # 6 - Create Postgres (servers) server_default is DefaultClause: sqlalchemy.sql.schema.DefaultClause
1221
+ # dev must pip install psycopg==3.2.13, pip install psycopg-binary==3.2.13
1217
1222
  # The quote escaping does not cover pathological cases but should mostly work FIXME SqlSvr no .arg
1218
1223
  # not used for postgres/mysql; for sqlite, text is '0'
1219
- if not hasattr( column.server_default, 'arg' ):
1220
- server_default = 'server_default=text("{0}")'.format('0')
1221
- else:
1224
+ if hasattr( column.server_default, 'arg' ):
1225
+ pass # employee_id = Column(Integer, server_default=text("nextval('employees_employee_id_seq'::regclass)"), primary_key=True)
1222
1226
  default_expr = self._get_compiled_expression(column.server_default.arg)
1223
1227
  if '\n' in default_expr:
1224
1228
  server_default = 'server_default=text("""\\\n{0}""")'.format(default_expr)
1225
1229
  else:
1226
1230
  default_expr = default_expr.replace('"', '\\"')
1227
1231
  server_default = 'server_default=text("{0}")'.format(default_expr)
1232
+ elif isinstance(column.server_default, sqlalchemy.sql.schema.Identity): # sqlsvr is different
1233
+ autoincrement = True # EmployeeId = Column(Integer, primary_key=True, autoincrement=True)
1234
+ else:
1235
+ server_default = 'server_default=text("{0}")'.format('0')
1228
1236
 
1229
1237
  comment = getattr(column, 'comment', None)
1230
1238
  if (column.name + "") == "xx_id":
@@ -1233,20 +1241,29 @@ else:
1233
1241
  log.debug(f"render_column show name is true: {column.table.name}.{column.name}") # researching why
1234
1242
  if column.name == "credit_limit" and column.table.name == "customers":
1235
1243
  debug_stop = "render column breakpoint"
1244
+ if column.name == "photo" and column.table.name == "employees":
1245
+ debug_stop = "render column breakpoint"
1236
1246
  rendered_col_type = self.render_column_type(column.type) if render_coltype else ""
1237
1247
  rendered_name = repr(column.name) if do_show_name else ""
1248
+ """
1249
+ The {0} gets replaced by whatever is passed to .format().
1250
+ In this case, it's the result of ', '.join(...)
1251
+ which joins together all the column attributes (name, type, constraints, defaults, etc.) with commas.
1252
+ eg. Column(Integer, primary_key=True), Column(String(8000))
1253
+ """
1238
1254
  render_result = 'Column({0})'.format(', '.join(
1239
1255
  ([repr(column.name)] if do_show_name else []) +
1240
1256
  ([self.render_column_type(column.type)] if render_coltype else []) +
1241
1257
  [self.render_constraint(x) for x in dedicated_fks] +
1242
1258
  [repr(x) for x in column.constraints] +
1243
1259
  ([server_default] if server_default else []) +
1260
+ (['autoincrement=True'] if autoincrement else []) +
1244
1261
  ['{0}={1}'.format(k, repr(getattr(column, k))) for k in kwarg] +
1245
1262
  (['comment={!r}'.format(comment)] if comment and not self.nocomments else []) +
1246
1263
  (['quote = True'] if self.model_creation_services.project.quote else [])
1247
1264
  ))
1248
1265
 
1249
- """
1266
+ """ old version without quote = True
1250
1267
  return 'Column({0})'.format(', '.join(
1251
1268
  ([repr(column.name)] if show_name else []) +
1252
1269
  ([self.render_column_type(column.type)] if render_coltype else []) +
@@ -132,7 +132,7 @@ def fix_generated(code, args):
132
132
  code = code.replace(bad_import,"# " + bad_import)
133
133
  code = code.replace(line1, line1 + bad_import + "\n")
134
134
  # code = code.replace("Column(Image)","Column(Text)") FAILS - incompatible type
135
- if "postgres" in args.url:
135
+ if fix_postgress_largebinary := False and "postgres" in args.url:
136
136
  code = code.replace("Column(LargeBinary)","Column(Text)")
137
137
 
138
138
  # Column(IMAGE)
@@ -217,6 +217,7 @@ def create_models_memstring(args) -> str:
217
217
  # For Python 3.13+, force PostgreSQL URLs to use psycopg3 dialect
218
218
  engine_url = args.url
219
219
  if sys.version_info >= (3, 13) and engine_url.startswith('postgresql://'):
220
+ # dev must pip install psycopg==3.2.13, pip install psycopg-binary==3.2.13
220
221
  engine_url = engine_url.replace('postgresql://', 'postgresql+psycopg://', 1)
221
222
 
222
223
  engine = create_engine(engine_url) # type _engine.Engine
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ApiLogicServer
3
- Version: 16.0.2
3
+ Version: 16.0.4
4
4
  Author-email: Val Huber <apilogicserver@gmail.com>
5
5
  License-Expression: BSD-3-Clause
6
6
  Project-URL: Homepage, https://www.genai-logic.com
@@ -1,6 +1,6 @@
1
1
  api_logic_server_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- api_logic_server_cli/api_logic_server.py,sha256=1f9EE8Q7qgEXx1rsGggnC_5rfOfIijIhHuS42jHPONM,105173
3
- api_logic_server_cli/api_logic_server_info.yaml,sha256=wzqFVXFXtbCPMFWmDG5k_cP4efr7YAhyhWIlYdpKGRc,132
2
+ api_logic_server_cli/api_logic_server.py,sha256=hlvAAyelcfiex9Fvro7xXSLQY-HXoAWz8TRV-W8Mb6g,105245
3
+ api_logic_server_cli/api_logic_server_info.yaml,sha256=99QQaYQFR0kerupFvyUdYGahGyE8Q_DffKa6ESNOUF4,133
4
4
  api_logic_server_cli/cli.py,sha256=xAqTOhq-OnXU2HEQgzsGC9yKrGcAgKUt_8b9U2bV5No,87831
5
5
  api_logic_server_cli/cli_args_base.py,sha256=7cVM6BeizwttYAwUu1FUyuLuvWufvgt0TFeA8FI6tu0,3304
6
6
  api_logic_server_cli/cli_args_project.py,sha256=I5no_fGRV_ZsK3SuttVDAaQYI4Q5zCjx6LojGkM024w,4645
@@ -423,7 +423,8 @@ api_logic_server_cli/prototypes/base/.devcontainer-option/For_VSCode.dockerfile,
423
423
  api_logic_server_cli/prototypes/base/.devcontainer-option/devcontainer.json,sha256=tk-mGd4XdmbpKUqUeGmcPMzX3RDc6am9-de8c-rFmSo,2361
424
424
  api_logic_server_cli/prototypes/base/.devcontainer-option/readme.md,sha256=-sSneMDne1fqEoox2hXUGmoO8ewgi34y7lJwGTidSpY,104
425
425
  api_logic_server_cli/prototypes/base/.devcontainer-option/setup.sh,sha256=pOvGjZ7jgRQzFkD93mNICmcC2y66Dexrq4bCnSSVwtU,310
426
- api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md,sha256=3toZhOMxjmjr5jvGfSpqDU4kQGRMWAAg1UQIU0SZCvA,50293
426
+ api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md,sha256=vKiqqf79mvrow0frrIJYxtg1-PRvpH6VjJaLWUUFn60,51519
427
+ api_logic_server_cli/prototypes/base/.github/welcome.md,sha256=eQMgc33vtKZNRYkO-CAl-c7bUMfAlbtBw2Dk2pNQWaQ,777
427
428
  api_logic_server_cli/prototypes/base/.idea/runConfigurations/ApiLogicServer.xml,sha256=eFzhe9NH-VNjcPWbPsRQy5o-MugJR9IWklA1Fo8wtYg,1127
428
429
  api_logic_server_cli/prototypes/base/.idea/runConfigurations/Report_Behave_Logic.xml,sha256=I3jlEf-TPzc-1NY843v6AcQIQ8QJD3z9KvxTYSZWMtY,1306
429
430
  api_logic_server_cli/prototypes/base/.idea/runConfigurations/Run_Behave.xml,sha256=CTzF0P4w7o4FzOi-eSpru0HczSEGtJsKqkQ7VWRyxPc,1196
@@ -628,7 +629,6 @@ api_logic_server_cli/prototypes/base/venv_setup/venv.sh,sha256=aWX9fa8fe6aO9ifBI
628
629
  api_logic_server_cli/prototypes/basic_demo/_config.yml,sha256=KIUQQpjgj7hP_Z2Fksq90E52UnbKnyom-v9L_eIfqZo,170
629
630
  api_logic_server_cli/prototypes/basic_demo/readme.md,sha256=Ii0WojbHMHpg6bgMlg9WyadzXVZePM2Nk89kmKHuGTM,18722
630
631
  api_logic_server_cli/prototypes/basic_demo/tutor.md,sha256=nlIkqcqkVXBDe3Rktcr4puZxrrTFDl1s_Id8nA5GwA4,45516
631
- api_logic_server_cli/prototypes/basic_demo/.github/.copilot-instructions.md,sha256=F87jmsFW7M88z8Dwcy418p3SFfbU9xbmEuzqu3Wwso0,51234
632
632
  api_logic_server_cli/prototypes/basic_demo/.github/welcome.md,sha256=c-lwKq6JDiLwMzqoRnn3bPX0GTYop9lt4mBAkfYbq6w,1553
633
633
  api_logic_server_cli/prototypes/basic_demo/_layouts/redirect.html,sha256=-0kMPGYI88fb787IzYmdi7ySZUhgpUlP0vodrg8-NRM,457
634
634
  api_logic_server_cli/prototypes/basic_demo/customizations/api/api_discovery/openapi.py,sha256=kLQ7Fn1J7tzuNJHBXF2AiwtzvQ-0JxJ6z-MfFryAtLk,3887
@@ -698,7 +698,7 @@ api_logic_server_cli/prototypes/basic_demo/iteration/logic/declare_logic.py,sha2
698
698
  api_logic_server_cli/prototypes/basic_demo/iteration/ui/admin/admin.yaml,sha256=uqxqYNMbKm4aCaTOy5CnlAtYccYM32-oQLVi5K6tfNI,3554
699
699
  api_logic_server_cli/prototypes/basic_demo/logic/declarative-vs-procedural-comparison.html,sha256=GUzgmnWdT709M5mPJGyfF1ARzzz3y5guASDBWeG43PU,3915
700
700
  api_logic_server_cli/prototypes/basic_demo/logic/procedural/credit_service.py,sha256=n_7YzxxssaxfuB8-nu_jPrQ-H6leAqKjJQRfOKcQwR4,7525
701
- api_logic_server_cli/prototypes/basic_demo/logic/procedural/declarative-vs-procedural-comparison.md,sha256=RAW9EKd1ngY9Lw6rXbimFFSgBwtzMm9o3-_t4_rNdJ0,15844
701
+ api_logic_server_cli/prototypes/basic_demo/logic/procedural/declarative-vs-procedural-comparison.md,sha256=rCCDEbtbpnsGUfCFarhblNlcVWc8uZQf27nkYmXka88,16012
702
702
  api_logic_server_cli/prototypes/basic_demo/logic/procedural/declarative-vs-procedural-comparison.png,sha256=JYukeefOas_GGBVvRGdHGAtD124H6EILQsEtjFxPrPE,842498
703
703
  api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/README.md,sha256=h7ePuwOqn3jv7YkjM4ruaP5rpYBmr_4Q3NChhb8pVJ4,452
704
704
  api_logic_server_cli/prototypes/basic_demo/ui/my-react-app/README_create_react_app.md,sha256=cOr7x6X9RmqjITtafhsqQTg8vl1Ob8X0WC78WL21CdE,3359
@@ -817,7 +817,7 @@ api_logic_server_cli/prototypes/manager/.github/sync-to-dev-src.sh,sha256=hZbc5f
817
817
  api_logic_server_cli/prototypes/manager/.github/welcome.md,sha256=9Wtufrx0wRf_5jgne8K9T6Sntm2yhyR3bnFKL_ch_0M,1841
818
818
  api_logic_server_cli/prototypes/manager/.vscode/launch.json,sha256=B9NaDoTvJsXg1qeEuhG3RdRk4M2RpnpHBW6b8oXrBn4,33551
819
819
  api_logic_server_cli/prototypes/manager/.vscode/settings.json,sha256=Ceq5Z34iC6hXNoPLahFHKAn39wjdh2VZqshkWAOXu9g,660
820
- api_logic_server_cli/prototypes/manager/samples/readme_samples.md,sha256=qSX2SpJnqK9PTu1quEw3GHJvQLNfCaJ-Fr3ljn6_MpE,3632
820
+ api_logic_server_cli/prototypes/manager/samples/readme_samples.md,sha256=Y8T9C4uaLOOfrTpJjqm1x9St1hqDTqttchjZbns2BnY,3739
821
821
  api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/.env,sha256=VCYAc9rxtOuDpv4Og6QwVV8bhzipEGu4sf--kI4Lq5k,355
822
822
  api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/.gitignore,sha256=PAO98cVvjgAL_mvXCMS_Vfk7bT2Vd1-j9a8_nB2qxqs,190
823
823
  api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/_config.yml,sha256=KIUQQpjgj7hP_Z2Fksq90E52UnbKnyom-v9L_eIfqZo,170
@@ -2827,7 +2827,7 @@ api_logic_server_cli/sqlacodegen_wrapper/Readme.md,sha256=pcBng3xB7DHqcLSY9NgVlt
2827
2827
  api_logic_server_cli/sqlacodegen_wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2828
2828
  api_logic_server_cli/sqlacodegen_wrapper/console_log.txt,sha256=RvaA45ZgMc5won9JzwK9BMK0LKfkiARNS0EW31vjTeM,53944
2829
2829
  api_logic_server_cli/sqlacodegen_wrapper/requirements.txt,sha256=13u62njPM4Emzdxow4V8xxYVjBQoO3aSAtNt0Z_V3aE,54
2830
- api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen_wrapper.py,sha256=bJ4UXu4Qpf9Yo8Qa3K-V78cdcOQNUZKl38jkSkrEopU,22460
2830
+ api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen_wrapper.py,sha256=hScDU6cKyp2SLDaH_Ag3KMvJ5hL1kcYkzKZ8bzlNSiM,22582
2831
2831
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/.travis.yml,sha256=mz8WDjTN-Rj9quyH-OZfTRcrACRZ98Dk0V_Z1v8udGY,1850
2832
2832
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/CHANGES.rst,sha256=lpwnI9rMfFx-TbbTa83B0qmracfKFSKnJMDVBR150fk,2593
2833
2833
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/README.rst,sha256=i5RCj2RqmvoDWv4tczRiJ3a5ONugmW69-kjbTzGc7JA,3865
@@ -2837,7 +2837,7 @@ api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/setup.cfg,sha256=BmOXcaPR0F
2837
2837
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/setup.py,sha256=ekn0wq_leWEKgpvijFLI881EVokkaZZhfmZYSQIZquo,196
2838
2838
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/tox.ini,sha256=mVlmM_uI-7K4pLs-jBfu8ZOQpHwQj8fh7LogvwjXJyE,440
2839
2839
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2840
- api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/codegen.py,sha256=3AwjNnHNuBG8sdvIM5Utwss_KbzUnmxoLUc0ydxbOeE,77820
2840
+ api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/codegen.py,sha256=gwfwhLfWuZqaWf81ALVnTtDPyzWlbyZuzktXnXeoZs8,79110
2841
2841
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/main.py,sha256=BX0gX5e9n5MSzE2tr3O3yRmWuv55mjDI3Z2JSACrUd4,3840
2842
2842
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/als_safrs_310/delete_log.txt,sha256=gMkXWPBkd-jEb-P7UA8WkCnV8tAccBL-IhT41Jz5TRw,16390
2843
2843
  api_logic_server_cli/sqlacodegen_wrapper/sqlacodegen/sqlacodegen/als_safrs_310/notes.txt,sha256=6KP8dOvdWsIGrpRmaueXbo_ZpD-6Edz-pOfTE80cScA,3991
@@ -2872,9 +2872,9 @@ api_logic_server_cli/tools/mini_skel/database/system/SAFRSBaseX.py,sha256=p8C7AF
2872
2872
  api_logic_server_cli/tools/mini_skel/database/system/TestDataBase.py,sha256=U02SYqThsbY5g3DX7XGaiMxjZBuOpzvtPS6RfI1WQFg,371
2873
2873
  api_logic_server_cli/tools/mini_skel/logic/declare_logic.py,sha256=fTrlHyqMeZsw_TyEXFa1VlYBL7fzjZab5ONSXO7aApo,175
2874
2874
  api_logic_server_cli/tools/mini_skel/logic/load_verify_rules.py,sha256=Rr5bySJpYCZmNPF2h-phcPJ53nAOPcT_ohZpCD93-a0,7530
2875
- apilogicserver-16.0.2.dist-info/licenses/LICENSE,sha256=67BS7VC-Z8GpaR3wijngQJkHWV04qJrwQArVgn9ldoI,1485
2876
- apilogicserver-16.0.2.dist-info/METADATA,sha256=Tir3NY5PD7F8wydkj02FC3bT9opFGavrtba7-RfcEfg,26461
2877
- apilogicserver-16.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2878
- apilogicserver-16.0.2.dist-info/entry_points.txt,sha256=W9EVNvf09h8n6rJChmVj2gzxVQ6BXXZa2x3wri0lFGc,259
2879
- apilogicserver-16.0.2.dist-info/top_level.txt,sha256=-r0AT_GEApleihg-jIh0OMvzzc0BO1RuhhOpE91H5qI,21
2880
- apilogicserver-16.0.2.dist-info/RECORD,,
2875
+ apilogicserver-16.0.4.dist-info/licenses/LICENSE,sha256=67BS7VC-Z8GpaR3wijngQJkHWV04qJrwQArVgn9ldoI,1485
2876
+ apilogicserver-16.0.4.dist-info/METADATA,sha256=l9CLF7s6YwmjIj_UjYcDuZYPYjweLlKKh_ctNYExhR0,26461
2877
+ apilogicserver-16.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2878
+ apilogicserver-16.0.4.dist-info/entry_points.txt,sha256=W9EVNvf09h8n6rJChmVj2gzxVQ6BXXZa2x3wri0lFGc,259
2879
+ apilogicserver-16.0.4.dist-info/top_level.txt,sha256=-r0AT_GEApleihg-jIh0OMvzzc0BO1RuhhOpE91H5qI,21
2880
+ apilogicserver-16.0.4.dist-info/RECORD,,