genexus-mcp 3.14.0 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -1
- package/docs/llm_cli_mcp_playbook.md +9 -8
- package/package.json +1 -1
- package/publish/GxMcp.Gateway.deps.json +2 -2
- package/publish/GxMcp.Gateway.dll +0 -0
- package/publish/GxMcp.Gateway.exe +0 -0
- package/publish/config.json +10 -10
- package/publish/gx-engine.exe +0 -0
- package/publish/gxmcp-manifest.json +12 -12
- package/publish/gxmcp-sbom.json +5 -5
- package/publish/gxwire.exe +0 -0
- package/publish/nexus-ide.vsix +0 -0
- package/publish/tool_definitions.json +6 -6
- package/publish/worker/GxMcp.Worker.exe +0 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/genexus-mcp)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://safeskill.dev/scan/lennix1337-genexus18mcp)
|
|
7
|
-
[](https://github.com/hashgraph-online/awesome-ai-plugins)
|
|
8
8
|
|
|
9
9
|
> **¿Hablás español?** → [Guía de inicio en español](docs/GETTING_STARTED.es.md)
|
|
10
10
|
> **Fala português?** → [Guia de início em português](docs/GETTING_STARTED.pt-br.md)
|
|
@@ -115,6 +115,109 @@ does not claim the same feature parity as the native SDK contract for GeneXus
|
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
+
## Experimental `gx-engine` (Rust SDK Replacement Project)
|
|
119
|
+
|
|
120
|
+
`src/gx-engine` is an experimental, independent Rust compiler and runtime designed to progressively replace the proprietary GeneXus SDK with an open, high-performance native toolchain ([Plan 129](plans/129-independent-rust-toolchain.md)).
|
|
121
|
+
|
|
122
|
+
### 🎮 Decompilation / Parity Progress
|
|
123
|
+
|
|
124
|
+
Similar to video game decompilation projects, progress is measured capability-by-capability against verified differential runs of the official GeneXus SDK in clean Knowledge Bases.
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
Overall SDK Replacement: [🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜] 50.0% weighted (69.6% total areas touched: 39/56)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
| Subsystem | Progress | Status | Covered / Total |
|
|
131
|
+
| :--- | :---: | :---: | :---: |
|
|
132
|
+
| **Language & Runtime Core** (Math, Decimals, Text, Dates, Calendar) | `[🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩] 100.0%` | Native Parity | 8 / 8 areas |
|
|
133
|
+
| **Control Flow & Procedure Pipeline** (`If`, `Iif`, `For`, `For In`, `Exit`, `Case`, `Sub`/`Do`, `Call`/`.UDP`, `IsEmpty`/`SetEmpty`/`Nullvalue`) | `[🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩] 100.0%` | Native Parity | 6 / 6 areas |
|
|
134
|
+
| **Structured Data & Collections** (SDT, `Add`, `Remove`, `Clear`, `IndexOf`, `Item`, `ToJson`, `FromJson`, `ToXml`, `FromXml`) | `[🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩] 100.0%` | Native Parity | 5 / 5 areas |
|
|
135
|
+
| **Portable KB Catalog & XML Projection** (Procedures, SDT, Domain, Attribute, Transaction, Rules in `ExportFile` XML and portable catalog) | `[🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩] 100.0%` | Native Parity | 6 / 6 areas |
|
|
136
|
+
| **Specifier & SQL Navigation** (Physical Tables, DDL, Navigation, `For Each`) | `[🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜] 75.0%` | Navigation & Query Plan | 6 / 8 areas |
|
|
137
|
+
| **Native KB Database Storage** (`.gxi`, `GXLOCK`, `DATA*`) | `[⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 0.0%` | Unsupported (SDK-only) | 0 / 5 areas |
|
|
138
|
+
| **Full GeneXus Surface** (UI, Events, Generators) | `[⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 0.0%` | Unsupported | 0 / 18 areas |
|
|
139
|
+
|
|
140
|
+
#### Gateway Capability Registry Gates
|
|
141
|
+
|
|
142
|
+
The MCP Gateway exposes a strict capability gate (`EngineCapabilityRegistry`) where operations are classified by measured parity before any traffic can be routed:
|
|
143
|
+
|
|
144
|
+
| Capability | Status | Evidence & Performance |
|
|
145
|
+
| :--- | :---: | :--- |
|
|
146
|
+
| `str_format` | 🟩 **Parity** | `Str()` numeric picture rules: 36,246 native rows verified, 0 diffs. Measured ~121 ns/row vs ~280 ns/row SDK (~2.3x faster). |
|
|
147
|
+
| `numeric_render` | 🟩 **Parity** | `&var.ToString()` / `Print()`: 120 native boundary cases verified (precision 1..18, scale corners, padding). |
|
|
148
|
+
| `date_display` | 🟩 **Parity** | Date/DateTime rendering: 18 native boundary cases verified (`MM/dd/yy`, 12h AM/PM, empty sentinels). |
|
|
149
|
+
| `text_functions` | 🟩 **Parity** | `Substr`/`Upper`/`Lower`/`StrReplace`: 63 native KBTeste cases verified (1-based, expand-casing, exact replace). |
|
|
150
|
+
| `text_extended_functions` | 🟩 **Parity** | `LTrim`/`RTrim`/`PadL`/`PadR`/`Space`/`Concat`/`StartsWith`/`EndsWith`/`Contains`/`StrSearch`: 95 native `StringUtil` oracle rows verified (exact ASCII space trim, left/right pad truncation, single-sided concat trim, ordinal comparisons, 1-based index clamping). |
|
|
151
|
+
| `numeric_math_functions` | 🟩 **Parity** | `Int`/`Round`/`Trunc`/`Val`/`Left`/`Right`/`Asc`/`Chr`/`NotNumeric`/`LTrimStr`: 107 native `NumberUtil` and `StringUtil` oracle rows verified (`Math.Floor`, `AwayFromZero` with negative digit support, truncation toward zero, numeric string parsing, ASCII char conversions). |
|
|
152
|
+
| `collection_operations` | 🟩 **Parity** | `Add`/`Remove`/`Clear`/`IndexOf`, `For In` iteration and `Exit`: 24 native `GxSimpleCollection` and `GXBaseCollection` oracle rows verified (1-based indexing, insertion, out-of-bounds silent removal, element aliasing in loops, loop exit). |
|
|
153
|
+
| `calendar_operations` | 🟩 **Parity** | `Day`/`Month`/`Year`/`Hour`/`Minute`/`Sec`/`Dow`, `AddYr`/`AddMth`/`DAdd`/`TAdd`, `DDiff`/`TDiff`, `Age`, `EndOfMonth`, `ResetTime`, and `.ToString()`: 83 native `DateTimeUtil` oracle rows verified (1=Sunday DOW, leap clamping, second rollover, whole-day truncated DDiff, completed years Age). |
|
|
154
|
+
| `subroutine_control_flow` | 🟩 **Parity** | `Sub 'Name' ... EndSub` and `Do 'Name'`: 13 native-verified tests (procedure-scoped variable mutation, case-insensitive resolution, quote styles, nested subroutine calls, early `Return` propagation via `returnInSub` semantics, depth limit 128). |
|
|
155
|
+
| `conditional_and_state_operations` | 🟩 **Parity** | `Iif(cond, trueExpr, falseExpr)` short-circuit conditional, universal `.IsEmpty()`/`IsEmpty()` and `.SetEmpty()` across all types, `Nullvalue(&var)`, `.UDP(...)` calls, and `Format`/`NewLine`/`Replicate`/`CharAt`/`StrSearchRev`/`.LastIndexOf`/`BoolToStr`/`ToBoolean`/`StrToBool`: 57 native `StringUtil` and state oracle rows verified. |
|
|
156
|
+
| `sdt_and_collection_json` | 🟩 **Parity** | `&sdt.ToJson()`, `&sdt.FromJson()`, `&col.ToJson()`, `&col.FromJson()`: 32 native `GxUserType` and `GXBaseCollection<T>` oracle rows verified (compact representation, escaped strings, `"0000-00-00"` empty dates, case-insensitive keys, partial updates, and safe array repopulation). |
|
|
157
|
+
| `sdt_and_collection_xml` | 🟩 **Parity** | `&sdt.ToXml([root])`, `&sdt.FromXml(xml, [root])`, `&col.ToXml([root])`, `&col.FromXml(xml, [root])`: 40 native `GxUserType` and `GXBaseCollection<T>` XML oracle rows verified (indentation, self-closing tags `<Tag />`, XML entity escaping, ISO `yyyy-MM-ddT00:00:00` date/time, booleans, case-insensitive element parsing, empty reset, and fail-closed error returns). |
|
|
158
|
+
| `domain_attribute_projection` | 🟩 **Parity** | Domain (`00972a17-9975-449e-aab1-d26165d51393`) and Attribute (`adbb33c9-0906-4971-833c-998de27e0676`) projection and `BasedOn` resolution in portable catalog and SDK `ExportFile` XML: 10 native-verified integration tests (procedure variables, chained domains, SDT items, cycle detection, domain-cannot-be-based-on-attribute enforcement, and end-to-end `xml-run`). |
|
|
159
|
+
| `transaction_structure_projection` | 🟩 **Parity** | Transaction (`1db606f2-af09-4cf9-a3b5-b481519d28f6`) structure, keys, and multi-level hierarchy projection in portable catalog and `ExportFile` XML: 10 native-verified integration tests (nested levels, root and child primary key enforcement, attribute references, recursion depth limit 16, Business Component `RecordType` schema lowering, procedure interoperability). |
|
|
160
|
+
| `rules_and_parm_parity` | 🟩 **Parity** | GeneXus Rules part (`9b0a32a3-de6d-4be1-a4dd-1b85d3741534`) parser and AST with Parm interface parity in portable catalog and SDK `ExportFile` XML: 10 native-verified integration tests (`Parm`, `Error`, `Msg`, `Default`, `NoAccept`, `Accept`, `Order`, `Prompt`, `Serial`, `Hidden`, single/multi-line comments, strings with semicolons/escaped quotes, fail-closed diagnostics, procedure-scope enforcement, catalog and XML exchange integration). |
|
|
161
|
+
| `transaction_control` | 🟩 **Parity** | Database transaction control procedural statements (`Commit` and `Rollback`, bare keywords or call syntax `Commit()`, `Rollback()` with optional semicolons): 7 native-verified integration tests (conditionals, loops, subroutines, while loops, format_version 1 fail-closed rejection, compiled executable execution, and ExportFile XML exchange). |
|
|
162
|
+
| `physical_table_ddl` | 🟩 **Parity** | Physical Table schema normalization and multi-dialect SQL DDL generation (`CREATE TABLE`, primary keys, parent-child and cross-transaction foreign keys, indexes, ANSI/SQL Server/PostgreSQL/Oracle data types): 9 native-verified integration tests without database writes. |
|
|
163
|
+
| `sql_navigation` | 🟩 **Parity** | Specifier, base table inference, For Each navigation, extended table joins, and multi-dialect SQL query planning (ANSI, SQL Server, PostgreSQL, Oracle): 10 native-verified integration tests, 13 frontend tests, fail-closed diagnostics (`spc0004`, `spc0005`), and zero SQL writes. |
|
|
164
|
+
| `numeric_core`, `text_core`, `calendar_values`, `records_collections`, `procedure_pipeline`, `xml_projection`, `kb_catalog` | 🟨 **Partial** | Independently implemented in portable compiler and tested with synthetic or bounded fixtures; pending full parity claims. |
|
|
165
|
+
| `native_kb_read`, `general_gx_surface` | ⬜ **Unsupported** | Not yet implemented in Rust. Always served 100% by the GeneXus SDK / Worker. |
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
### ⚡ Performance Benchmarks (gx-engine vs. GeneXus SDK)
|
|
169
|
+
|
|
170
|
+
Every performance comparison requires **exact output parity** verified before measuring timings (zero mismatches, identical hash/byte output). The initial differential benchmarks measured on local Windows x86_64 hardware:
|
|
171
|
+
|
|
172
|
+
| Benchmark Workload | GeneXus SDK (.NET / MSBuild) | `gx-engine` (Rust) | Speedup / Gain | Verification & Oracle |
|
|
173
|
+
| :--- | :---: | :---: | :---: | :--- |
|
|
174
|
+
| **`Str()` Numeric Picture Formatting** (Microbenchmark) | 274 – 286 ns / row *(1.75 ms / pass)* | **121 – 130 ns / row** *(0.75 ms / pass)* | **~2.25x faster** | 6,152 rows (`str_matrix.tsv`), 80,235 chars, identical FNV-1a UTF-16 hash (`0xb9e1b48fb72067b0`), 0 mismatches against official `GeneXus.Classes.Core` runtime. |
|
|
175
|
+
| **End-to-end Procedure Compilation & Build** | 10,930 ms *(SDK stages)*<br>16,366 ms *(MSBuild total)* | **223 ms** *(Rust parse + emit + rustc link)* | **~49x faster** | Synthetic `RustTimingProbe` in authorized `KBTeste` (`21 * 2 = 42`). Identical exit 0 and stdout `42`. |
|
|
176
|
+
| **Generated Artifact Startup & Execution** | 123.06 ms *(CLR bootstrap + run)* | **5.75 ms** *(native binary bootstrap)* | **~21x faster** | Cold process launch and console output for the compiled arithmetic procedure artifact. |
|
|
177
|
+
|
|
178
|
+
#### 📈 Benchmark Protocol & How to Record Improvements
|
|
179
|
+
|
|
180
|
+
As new capabilities reach parity and additional optimizations land, follow this protocol to update this ledger:
|
|
181
|
+
|
|
182
|
+
1. **Verify Parity First:** No benchmark is valid without zero diffs against the official SDK or recorded native differential fixture:
|
|
183
|
+
```powershell
|
|
184
|
+
python src/gx-engine/scripts/benchmark.py --iterations 100
|
|
185
|
+
```
|
|
186
|
+
2. **Standardized Environment:** Keep compiler flags, hardware specifications, and iterations explicit (see [src/gx-engine/VALIDATION.md](src/gx-engine/VALIDATION.md)).
|
|
187
|
+
3. **Record in Ledger:** Update this table and [plans/129-implementation-progress.md](plans/129-implementation-progress.md) with: workload description, GeneXus SDK baseline, gx-engine timing, observed speedup ratio, and the committed evidence fixture.
|
|
188
|
+
|
|
189
|
+
### Activation Flag & Safety Seam
|
|
190
|
+
|
|
191
|
+
> [!IMPORTANT]
|
|
192
|
+
> **Zero Automatic Routing:** By default, `Engine.Backend` is `"sdk"`. The Gateway serves 100% of tool calls through the official GeneXus SDK. Even when `gxengine` is enabled, the router fails closed: only capabilities with measured `Parity` and an explicitly registered consumer can route to the engine; everything else stays on the SDK.
|
|
193
|
+
|
|
194
|
+
To test or benchmark the engine from a source checkout, configure `config.json`:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"Engine": {
|
|
199
|
+
"Backend": "gxengine",
|
|
200
|
+
"Fallback": "sdk",
|
|
201
|
+
"TimeoutSeconds": 120
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
- **`Engine.Backend`**: `"sdk"` (default) or `"gxengine"` (opt-in).
|
|
207
|
+
- **`Engine.Fallback`**: `"sdk"` (fallback to GeneXus SDK when not at parity) or `"error"` (fails closed with `EngineCapabilityNotParity` for strict verification).
|
|
208
|
+
- **Diagnostics**: `genexus_doctor` inspects the engine via `--version` handshake and reports an `engine` status block with `backend`, `available`, `version`, `capabilities`, and `routedOperations`.
|
|
209
|
+
|
|
210
|
+
To run compiler tests or standalone projects from checkout:
|
|
211
|
+
|
|
212
|
+
```powershell
|
|
213
|
+
cargo test --manifest-path src/gx-engine/Cargo.toml
|
|
214
|
+
cargo run --manifest-path src/gx-engine/Cargo.toml -- check src/gx-engine/fixtures/demo.json
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
See [docs/engine_backend.md](docs/engine_backend.md), the [engine guide](src/gx-engine/README.md), and the [capability matrix](plans/129-sdk-capability-matrix.md) for full architecture and evidence ledgers.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
118
221
|
## Sharing one Worker between MCP clients
|
|
119
222
|
|
|
120
223
|
The Gateway and the GeneXus SDK Worker have different responsibilities. By
|
|
@@ -111,13 +111,13 @@ New neutral configs created by `genexus-mcp init` or client registration use
|
|
|
111
111
|
|
|
112
112
|
| Profile | Tools | Use |
|
|
113
113
|
|---|---:|---|
|
|
114
|
-
| `standard` |
|
|
115
|
-
| `core` |
|
|
116
|
-
| `authoring` |
|
|
117
|
-
| `devops` |
|
|
118
|
-
| `ui` |
|
|
119
|
-
| `db` |
|
|
120
|
-
| `all` |
|
|
114
|
+
| `standard` | 20 | Recommended default for Cursor, Codex, OpenCode, Antigravity, Claude Desktop, and other clients that eagerly load every schema. Includes core read/search/lifecycle, create, structure, variable, properties, and IO tools. |
|
|
115
|
+
| `core` | 15 | Read, search, inspect, edit, and lifecycle essentials. |
|
|
116
|
+
| `authoring` | 35 | Core plus the full object-authoring and refactoring surface. |
|
|
117
|
+
| `devops` | 37 | Core plus build, versioning, deployment, diagnostics, and worker operations. |
|
|
118
|
+
| `ui` | 23 | Core plus layout, form, browser, and WorkWithPlus tools. |
|
|
119
|
+
| `db` | 19 | Core plus database and data-view tools. |
|
|
120
|
+
| `all` | 60 | Every canonical tool; use when an agent needs an unrestricted surface. |
|
|
121
121
|
|
|
122
122
|
Profiles can be combined with `+`, for example `standard+db`. Set
|
|
123
123
|
`Server.ToolProfile` in config or `GXMCP_PROFILE` in the process environment.
|
|
@@ -231,7 +231,8 @@ For a complete incremental build of the selected Knowledge Base, use
|
|
|
231
231
|
`BuildAll` task when available, reports completion evidence, and returns
|
|
232
232
|
`ReorgRequired` instead of applying a schema reorganization implicitly. Use
|
|
233
233
|
`action='build'` for a directed target and `action='rebuild'` for the forced
|
|
234
|
-
Rebuild All contract
|
|
234
|
+
Rebuild All contract; `rebuild` is KB-global like `build_all` and rejects
|
|
235
|
+
`target` with `TargetNotSupported`.
|
|
235
236
|
|
|
236
237
|
## Pagination and Token Budgeting
|
|
237
238
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genexus-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0",
|
|
4
4
|
"mcpName": "io.github.lennix1337/genexus",
|
|
5
5
|
"description": "GeneXus 16, GeneXus 17, GeneXus 18 MCP server with native SDK support; basic legacy compatibility for GeneXus Evolution 3, GeneXus Evolution 2, GeneXus Evolution 1, GeneXus 15, GeneXus 9.0, GeneXus 8.0 via com-gxpublic and dotnet-reflection drivers — read, edit, and analyze Knowledge Base objects directly from Claude, Cursor, and other AI agents over the Model Context Protocol.",
|
|
6
6
|
"keywords": [
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"targets": {
|
|
8
8
|
".NETCoreApp,Version=v10.0": {},
|
|
9
9
|
".NETCoreApp,Version=v10.0/win-x64": {
|
|
10
|
-
"GxMcp.Gateway/3.
|
|
10
|
+
"GxMcp.Gateway/3.16.0": {
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"Newtonsoft.Json": "13.0.3",
|
|
13
13
|
"System.Management": "10.0.5",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
"libraries": {
|
|
69
|
-
"GxMcp.Gateway/3.
|
|
69
|
+
"GxMcp.Gateway/3.16.0": {
|
|
70
70
|
"type": "project",
|
|
71
71
|
"serviceable": false,
|
|
72
72
|
"sha512": ""
|
|
Binary file
|
|
Binary file
|
package/publish/config.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"ConfigSchemaVersion": 2,
|
|
3
|
-
"GeneXus": {
|
|
4
|
-
"WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
|
|
5
|
-
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
|
|
6
|
-
},
|
|
7
2
|
"GatewayMode": "stdio-isolated",
|
|
3
|
+
"Environment": {
|
|
4
|
+
"ResolutionPolicy": "strict"
|
|
5
|
+
},
|
|
6
|
+
"ConfigSchemaVersion": 2,
|
|
8
7
|
"Server": {
|
|
9
|
-
"TerseResponses": true,
|
|
10
8
|
"EmitStructuredContent": false,
|
|
11
|
-
"McpStdio": true,
|
|
12
9
|
"HttpPort": 0,
|
|
10
|
+
"TerseResponses": true,
|
|
13
11
|
"SessionIdleTimeoutMinutes": 10,
|
|
14
|
-
"WorkerIdleTimeoutMinutes": 5
|
|
12
|
+
"WorkerIdleTimeoutMinutes": 5,
|
|
13
|
+
"McpStdio": true
|
|
15
14
|
},
|
|
16
|
-
"
|
|
17
|
-
"
|
|
15
|
+
"GeneXus": {
|
|
16
|
+
"WorkerExecutable": "worker\\\\GxMcp.Worker.exe",
|
|
17
|
+
"InstallationPath": "C:\\Program Files (x86)\\GeneXus\\GeneXus18"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-release-manifest/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.16.0",
|
|
4
|
+
"sourceCommit": "5084cdc8f9d1b4624c208809fb6077c27af65f38",
|
|
5
5
|
"sourceCommitPolicy": "exact-tag",
|
|
6
|
-
"generatedAtUtc": "2026-10-
|
|
6
|
+
"generatedAtUtc": "2026-10-17T13:05:11.7186683Z",
|
|
7
7
|
"runtime": {
|
|
8
8
|
"gateway": "net10.0-windows",
|
|
9
9
|
"worker": "net48-x86",
|
|
@@ -15,33 +15,33 @@
|
|
|
15
15
|
"2026-07-28"
|
|
16
16
|
],
|
|
17
17
|
"schema": "tool_definitions.json",
|
|
18
|
-
"schemaSha256": "
|
|
18
|
+
"schemaSha256": "be4c1f74a47cada8e265bc632a7b87cdd1132020edcb5ea43b5a341829feba7a",
|
|
19
19
|
"provenance": "gxmcp-sbom.json",
|
|
20
20
|
"artifacts": [
|
|
21
21
|
{
|
|
22
22
|
"path": "gxmcp-sbom.json",
|
|
23
23
|
"size": 591,
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "3182ae289ba22a351be87976719de89744ab7953b6f35e31b8fd1c237c09f0fa"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "GxMcp.Gateway.exe",
|
|
28
28
|
"size": 162304,
|
|
29
|
-
"sha256": "
|
|
29
|
+
"sha256": "d8a368d30952ec8b0b69455f7296a11052b2f70f4110b78885532bfd4ace3391"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"path": "nexus-ide.vsix",
|
|
33
|
-
"size":
|
|
34
|
-
"sha256": "
|
|
33
|
+
"size": 1325114,
|
|
34
|
+
"sha256": "24cb9e2cdc533a1595e94a505344141180944bb29aef212b4d12569e4833aeee"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "tool_definitions.json",
|
|
38
|
-
"size":
|
|
39
|
-
"sha256": "
|
|
38
|
+
"size": 155111,
|
|
39
|
+
"sha256": "be4c1f74a47cada8e265bc632a7b87cdd1132020edcb5ea43b5a341829feba7a"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"path": "worker/GxMcp.Worker.exe",
|
|
43
|
-
"size":
|
|
44
|
-
"sha256": "
|
|
43
|
+
"size": 4302848,
|
|
44
|
+
"sha256": "6f33014505f3c3564e6e9fc255bd8f3962f8d774e96e6ddcbe944741f61cc5af"
|
|
45
45
|
}
|
|
46
46
|
]
|
|
47
47
|
}
|
package/publish/gxmcp-sbom.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "gxmcp-provenance/1",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"sourceCommit": "
|
|
3
|
+
"version": "3.16.0",
|
|
4
|
+
"sourceCommit": "5084cdc8f9d1b4624c208809fb6077c27af65f38",
|
|
5
5
|
"sourceCommitPolicy": "exact-tag",
|
|
6
6
|
"components": [
|
|
7
7
|
{
|
|
8
8
|
"name": "genexus-mcp",
|
|
9
9
|
"lockfile": "package-lock.json",
|
|
10
10
|
"size": 38806,
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "53dad4a00a3756eb5e24be271a3e80c5325b387c0c1ec1aba2f197560d6b84b3"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"name": "nexus-ide",
|
|
15
15
|
"lockfile": "src/nexus-ide/package-lock.json",
|
|
16
|
-
"size":
|
|
17
|
-
"sha256": "
|
|
16
|
+
"size": 179505,
|
|
17
|
+
"sha256": "c44b3a41911e1defe5cd0639f3e1dcf164b95e26e906d49d867805dd234604ec"
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
}
|
package/publish/gxwire.exe
CHANGED
|
Binary file
|
package/publish/nexus-ide.vsix
CHANGED
|
Binary file
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
{"name":"genexus_query","description":"Search objects in active KB. Prefixes: name:, type:, usedby:, parent:, parentPath:, description:. name:\"X\" (or bare quoted \"X\") demands exact-name match — use it when you know the object's name. Compact by default. Pass kbs:[...] to run the same read-only search across an explicit set of already-open KBs in one bounded, per-KB-reported call. TIP: For architectural orientation, intent ranking, or call graph impact, call genexus_wire first (sub-10ms, token-budgeted). See genexus://kb/tool-help/genexus_query. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"typeFilter":{"type":"string"},"domainFilter":{"type":"string"},"limit":{"type":"integer"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"sort":{"type":"string","enum":["relevance","lastUpdate"],"description":"relevance (default) or lastUpdate (newest first; bypasses score ranking)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"kb":{"type":"string","description":"KB alias."},"kbs":{"type":"array","items":{"type":"string"},"description":"Federated read-only discovery over an explicit KB set (max 16). Uses only already-open KBs and never opens one (the Worker pool can evict a KB you are working in). Results are grouped per KB with per-KB status and complete flags plus a coverage summary; a not-open/warming/slow/failing KB is reported individually, never as zero matches. Mutually exclusive with kb."},"cursors":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-KB continuation: map each alias in kbs to that KB's nextCursor. An alias outside kbs is rejected, not dropped."},"maxConcurrency":{"type":"integer","description":"Federation only: KBs searched in parallel (default 4, max 8)."},"maxTotalResults":{"type":"integer","description":"Federation only: total results across all KBs (default 500, max 5000). Overflow marks the affected KB incomplete with its nextCursor intact."},"perKbTimeoutMs":{"type":"integer","description":"Federation only: per-KB deadline in ms (default 30000, max 120000)."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true},"exactMatch":{"type":"boolean","description":"Require an exact object-name match."}},"required":["query"],"examples":[{"query":"type:Transaction parent:Customers"},{"query":"\"Customer\"","limit":5},{"query":"name:\"Customer\"","kbs":["KbAlpha","KbBeta"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
8
8
|
{"name":"genexus_list_objects","description":"List objects with pagination. Feed nextOffset until hasMore=false. Every item exposes its persisted GUID and path; verbose=true also exposes the typed EntityKey when available.","inputSchema":{"type":"object","properties":{"filter":{"type":"string","description":"Legacy: name OR description. Prefer nameFilter/descriptionFilter."},"nameFilter":{"type":"string","description":"Substring on name."},"descriptionFilter":{"type":"string","description":"Substring on description."},"pathPrefix":{"type":"string","description":"Folder prefix, e.g. 'Root Module/X/'."},"limit":{"type":"integer"},"offset":{"type":"integer"},"parent":{"type":"string"},"parentPath":{"type":"string"},"typeFilter":{"type":"string"},"verbose":{"type":"boolean","description":"Full item shape."},"sort":{"type":"string","enum":["name","lastUpdate"],"description":"name (default, type-bucketed) or lastUpdate (newest first)."},"since":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate >= since."},"modifiedBefore":{"type":"string","description":"ISO-8601 UTC. Only items with lastUpdate < modifiedBefore."},"cursor":{"type":"string","description":"Opaque token from prior nextCursor. Use with sort=lastUpdate for stable paging."},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N."},"kb":{"type":"string","description":"KB alias."},"axiCompact":{"type":"boolean","description":"Compact projection (default true).","default":true},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"minimal=name+type+lastUpdate; standard=default compact; verbose=all fields. Overrides axiCompact when set."}},"examples":[{"limit":25},{"typeFilter":"Transaction","limit":10}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
9
9
|
{"name":"genexus_read","description":"Read object code and metadata. Omitting 'part' (RECOMMENDED) returns the COMPLETE object in 1 call (rules with parm, source/events, variables, structure, called signatures) tailored to the object type. Resolve modular objects by name/type, persisted GUID, EntityKey, or path. Pass 'part' only for targeted single-part reads. Response carries versionToken for safe writes. A single-part response also carries contentToken: echo it back as ifUnchangedSince to re-read the same representation without retransmitting an unchanged body. TIP: Avoid blind whole-object reads; call genexus_wire action=pack_task or callers/impact first to pinpoint exact targets. See genexus://kb/tool-help/genexus_read.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"targets":{"type":"array","items":{"type":"string"}},"guid":{"type":"string","description":"Persisted object GUID from genexus_list_objects."},"entityKey":{"type":"string","description":"Typed GeneXus EntityKey from genexus_list_objects verbose output."},"path":{"type":"string","description":"Module/folder-qualified object path from genexus_list_objects."},"part":{"type":"string","description":"DataSelector: parameters|conditions|orders|projection|definedBy|baseTransaction|baseTable|joins|structure."},"parts":{"type":"array","items":{"type":"string"},"description":"Selected parts; unavailable DataSelector parts appear in unsupportedParts. Mutually exclusive with part/offset/limit."},"offset":{"type":"integer"},"limit":{"type":"integer"},"refresh":{"type":"boolean","default":false,"description":"Bypass response caches, invalidate the SDK object, then independently reload the same identity. Use after an IDE save. Fails with FreshReadUnavailable if freshness cannot be confirmed. readFreshness reports Worker origin/age; _meta reports Gateway cache hits."},"ifUnchangedSince":{"type":"string","description":"Opaque contentToken from a previous single-part read of the SAME object/part/offset/limit. Provably unchanged -> notModified:true with identity and freshness metadata and no source; otherwise the full body plus a new contentToken and conditional.reason. Single-part reads only (rejected with ConditionalReadUnsupportedForm on targets[]/parts[]/full-object forms). Omit to keep the unconditional behavior."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer"},{"name":"Customer","type":"Procedure","guid":"<guid-from-list>"},{"name":"Customer","path":"Operations/Customer","type":"Procedure"},{"name":"Customer","part":"Source"},{"name":"Customer","part":"Source","refresh":true},{"name":"Customer","part":"Source","limit":0,"ifUnchangedSince":"<contentToken-from-previous-read>"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
10
|
-
{"name":"genexus_edit","description":"Edit object part. name or targets (exclusive). mode: full|patch|ops. dryRun first. async=true returns an operationId for lifecycle polling. Text payloads for Source/Rules/Events/Code must contain real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence with LiteralLineBreaksDetected. For WWP edit host's PatternInstance NOT the parent WebForm (gets overwritten on reapply). Uncertain about a property/method/event? → resources/read uri=genexus://kb/skills/navigation (or gam-integrated-security / sd-panel-mobile / webpanel-events) first.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"parts":{"type":"array","description":"Multi-part edit on a single object. Each item: {part, content, mode?}. Saves the object once atomically. Text content must use real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence.","items":{"type":"object","properties":{"part":{"type":"string"},"content":{"type":"string"},"mode":{"type":"string"}},"required":["part","content"]}},"mode":{"type":"string","enum":["full","patch","ops"]},"content":{"type":"string"},"ops":{"type":"array","description":"GeneXus semantic ops (NOT RFC 6902 JSON-Patch). Each item: {op, args}. Supported ops: set_attribute, add_attribute, remove_attribute (Transaction); add_rule, remove_rule (Transaction/Procedure/WebPanel); set_property (any kind). Use mode=patch for textual find/replace.","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_attribute","add_attribute","remove_attribute","add_rule","remove_rule","set_property"]},"args":{"type":"object","description":"Op-specific args. set_attribute: {name, type?, description?}. add_attribute: {name, type, ...}. add_rule: {rule}. set_property: {name, value}."}},"required":["op"]}},"patch":{"type":"object","additionalProperties":true,"description":"Shorthand for {find,replace}; implies mode=patch when mode is omitted, and is a usage_error with mode=full|ops: find is the exact existing text, replace is inserted literally (no auto-indentation). Optional opt-in protections: scope bounds the search region, indentation validates the replacement's base indent. Both apply ONLY to this shape — never with operation, mode=ops, targets[], parts[], Insert_After or Append.","properties":{"find":{"type":"string","description":"Exact existing text to find. Real line breaks; tabs/spaces must match the part."},"replace":{"type":"string","description":"Replacement text, inserted literally."},"scope":{"type":"object","required":["start"],"description":"Region delimited by complete-line anchors: editable starts after scope.start's last line and ends before scope.end's first line (EOF when end is omitted). Anchors stay outside the region, are compared with only CRLF/LF normalized, and must each be unique. Errors: ScopeStartRequired, ScopeAnchorNotFound, ScopeAnchorAmbiguous, ScopeAnchorNotComparable. The response reports editableStartLine, editableEndLineExclusive and scopeEndsAtEof.","properties":{"start":{"type":"string","description":"Required. Unique complete-line anchor ending immediately before the editable region."},"end":{"type":"string","description":"Optional. Unique complete-line anchor starting immediately after the editable region. Omitted = region runs to EOF."}}},"indentation":{"type":"object","required":["mode"],"description":"Validates the base indentation of the located match against the first line of replace before persisting; tabs and spaces are distinct and nothing is reformatted. With replaceAll=true every match is validated. Errors: IndentationMismatch, IndentationNotComparable.","properties":{"mode":{"type":"string","enum":["validate"],"description":"validate: block the write when the replacement's base indentation differs from the matched line's."}}}}},"scope":{"type":"object","description":"patch.scope may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with ScopeUnsupportedPatchForm and nothing is written."},"indentation":{"type":"object","description":"patch.indentation may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with IndentationUnsupportedPatchForm and nothing is written."},"context":{"type":"string","description":"Exact existing text to find (Replace) or anchor after (Insert_After). Required for both. For text parts, send real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence."},"operation":{"type":"string","enum":["Replace","Insert_After","Append"]},"expectedCount":{"type":"integer"},"replaceAll":{"type":"boolean","description":"patch mode only. Apply to ALL occurrences instead of requiring expectedCount to match exactly."},"dryRun":{"type":"boolean"},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"verifyRollback":{"type":"boolean"},"targets":{"type":"array","description":"Multi-target Source/Rules writes. Each target may include expectedVersion/baseVersion; all versions are checked before the first write.","items":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"content":{"type":"string"},"expectedVersion":{"type":"string"},"baseVersion":{"type":"string"}},"required":["name","content"]}},"type":{"type":"string"},"return_post_state":{"type":"boolean","description":"Omit post_state.diff (default true)."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"verbose":{"type":"boolean","description":"Add ±15-line slices to post_state."},"validate":{"type":"string","enum":["strict","best-effort","only"],"description":"strict (default) aborts on first error and post-write-verifies visual/PatternInstance writes (re-reads + diffs the persisted XML). best-effort applies what compiles and SKIPS the post-write XML re-read/diff (faster on large WebForm/PatternInstance writes; build to confirm). only runs in-memory, no persist."},"validationMode":{"type":"string","enum":["specify"],"description":"Issue #60: run the inline Specify pass (Spec+Gen, no Compile) against the edited object right after the write, returning structured spc*/gen* diagnostics in the same call. Combines with rollbackOnFailure."},"rollbackOnFailure":{"type":"boolean","description":"Explicit rollback only. Full Source verification failure reports AtomicRollbackUnavailable without a restore write until atomic conditional restore is supported. Other paths require a valid snapshot. No rollback when false or omitted."},"requireObjectSave":{"type":"boolean","default":false,"description":"Full Source requires transactional object save. Events patch: dryRun available; real writes blocked by ObjectSaveIsolationUnverified until SDK/pattern save-event isolation is established. No override; baseVersion required."},"forceWrite":{"type":"boolean","default":false,"description":"WebForm only: persist despite SDK WebForm validation errors; response includes validationOverridden=true."},"verifyMode":{"type":"string","enum":["semantic","normalized","exact"],"default":"normalized","description":"Post-save text comparison. Full exact compares public-read text verbatim; patch exact retains logical CRLF/LF equivalence. normalized ignores EOL, BOM, trailing whitespace and blank lines; semantic also tolerates casing/spacing. Fresh reread always required. sdkSaveCompleted/saved report physical save; persistedStateKnown and postSaveVerification report read evidence. Mismatch never retries automatically."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."},"baseVersion":{"type":"string","description":"Optimistic concurrency: pass the versionToken from the genexus_read this edit is based on. If the object changed since (e.g. edited in the IDE), the write is refused with VersionConflict instead of overwriting the newer version. Omit to skip the check."},"expectedVersion":{"type":"string","description":"Alias of baseVersion. The write is refused when the current version no longer matches."},"concurrencyPolicy":{"type":"string","enum":["warn","fail_if_open"],"default":"warn","description":"warn (default) or fail_if_open if open in GeneXus IDE."},"autoDeclareVariables":{"type":"boolean","default":false,"description":"When true, scans updated source for newly referenced &Variable tokens and auto-declares them in VariablesPart."},"kb":{"type":"string","description":"KB alias."},"changeSet":{"type":"object","required":["action","changes"],"properties":{"action":{"type":"string","enum":["preview","validate","apply"]},"changes":{"type":"array","items":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"part":{"type":"string","enum":["Source","Rules","Variables"]},"content":{"type":"string"},"expectedVersion":{"type":"string"}}}},"changeSetId":{"type":"string"},"baseRevision":{"type":"string"}}},"module":{"type":"string","description":"mode=ops: Transaction module for modular objects."}},"examples":[{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new"}},{"name":"Customer","mode":"patch","part":"Rules","patch":{"find":"error(","replace":"msg("},"dryRun":true},{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new","scope":{"start":"// Banco B","end":"// Proximo banco"}}}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
10
|
+
{"name":"genexus_edit","description":"Edit object part. name or targets (exclusive). mode: full|patch|ops. dryRun first. async=true returns an operationId for lifecycle polling. Text payloads for Source/Rules/Events/Code must contain real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence with LiteralLineBreaksDetected. For WWP edit host's PatternInstance NOT the parent WebForm (gets overwritten on reapply). Uncertain about a property/method/event? → resources/read uri=genexus://kb/skills/navigation (or gam-integrated-security / sd-panel-mobile / webpanel-events) first.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"parts":{"type":"array","description":"Multi-part edit on a single object. Each item: {part, content, mode?}. Saves the object once atomically. Text content must use real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence.","items":{"type":"object","properties":{"part":{"type":"string"},"content":{"type":"string"},"mode":{"type":"string"}},"required":["part","content"]}},"mode":{"type":"string","enum":["full","patch","ops"]},"content":{"type":"string"},"ops":{"type":"array","description":"GeneXus semantic ops (NOT RFC 6902 JSON-Patch). Each item: {op, args}. Supported ops: set_attribute, add_attribute, remove_attribute (Transaction); add_rule, remove_rule (Transaction/Procedure/WebPanel); set_property (any kind). Use mode=patch for textual find/replace.","items":{"type":"object","properties":{"op":{"type":"string","enum":["set_attribute","add_attribute","remove_attribute","add_rule","remove_rule","set_property"]},"args":{"type":"object","description":"Op-specific args. set_attribute: {name, type?, description?}. add_attribute: {name, type, ...}. add_rule: {rule}. set_property: {name, value}."}},"required":["op"]}},"patch":{"type":"object","additionalProperties":true,"description":"Shorthand for {find,replace}; implies mode=patch when mode is omitted, and is a usage_error with mode=full|ops: find is the exact existing text, replace is inserted literally (no auto-indentation). Optional opt-in protections: scope bounds the search region, indentation validates the replacement's base indent. Both apply ONLY to this shape — never with operation, mode=ops, targets[], parts[], Insert_After or Append.","properties":{"find":{"type":"string","description":"Exact existing text to find. Real line breaks; tabs/spaces must match the part."},"replace":{"type":"string","description":"Replacement text, inserted literally."},"scope":{"type":"object","required":["start"],"description":"Region delimited by complete-line anchors: editable starts after scope.start's last line and ends before scope.end's first line (EOF when end is omitted). Anchors stay outside the region, are compared with only CRLF/LF normalized, and must each be unique. Errors: ScopeStartRequired, ScopeAnchorNotFound, ScopeAnchorAmbiguous, ScopeAnchorNotComparable. The response reports editableStartLine, editableEndLineExclusive and scopeEndsAtEof.","properties":{"start":{"type":"string","description":"Required. Unique complete-line anchor ending immediately before the editable region."},"end":{"type":"string","description":"Optional. Unique complete-line anchor starting immediately after the editable region. Omitted = region runs to EOF."}}},"indentation":{"type":"object","required":["mode"],"description":"Validates the base indentation of the located match against the first line of replace before persisting; tabs and spaces are distinct and nothing is reformatted. With replaceAll=true every match is validated. Errors: IndentationMismatch, IndentationNotComparable.","properties":{"mode":{"type":"string","enum":["validate"],"description":"validate: block the write when the replacement's base indentation differs from the matched line's."}}}}},"scope":{"type":"object","description":"patch.scope may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with ScopeUnsupportedPatchForm and nothing is written."},"indentation":{"type":"object","description":"patch.indentation may also be passed at the top level. Honored ONLY by the abbreviated patch={find,replace} form; combined with operation, mode=ops, targets[], parts[], Insert_After or Append the call is rejected with IndentationUnsupportedPatchForm and nothing is written."},"context":{"type":"string","description":"Exact existing text to find (Replace) or anchor after (Insert_After). Required for both. For text parts, send real line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before persistence."},"operation":{"type":"string","enum":["Replace","Insert_After","Append"]},"expectedCount":{"type":"integer"},"replaceAll":{"type":"boolean","description":"patch mode only. Apply to ALL occurrences instead of requiring expectedCount to match exactly."},"dryRun":{"type":"boolean"},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"verifyRollback":{"type":"boolean"},"targets":{"type":"array","description":"Multi-target Source/Rules writes. Each target may include expectedVersion/baseVersion; all versions are checked before the first write.","items":{"type":"object","properties":{"name":{"type":"string"},"part":{"type":"string"},"content":{"type":"string"},"expectedVersion":{"type":"string"},"baseVersion":{"type":"string"}},"required":["name","content"]}},"type":{"type":"string"},"return_post_state":{"type":"boolean","description":"Omit post_state.diff (default true)."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"verbose":{"type":"boolean","description":"Add ±15-line slices to post_state."},"validate":{"type":"string","enum":["strict","best-effort","only"],"description":"strict (default) aborts on first error and post-write-verifies visual/PatternInstance writes (re-reads + diffs the persisted XML). best-effort applies what compiles and SKIPS the post-write XML re-read/diff (faster on large WebForm/PatternInstance writes; build to confirm). only runs in-memory, no persist."},"validationMode":{"type":"string","enum":["specify"],"description":"Issue #60: run the inline Specify pass (Spec+Gen, no Compile) against the edited object right after the write, returning structured spc*/gen* diagnostics in the same call. Combines with rollbackOnFailure."},"rollbackOnFailure":{"type":"boolean","description":"Explicit rollback only. Full Source verification failure reports AtomicRollbackUnavailable without a restore write until atomic conditional restore is supported. Other paths require a valid snapshot. No rollback when false or omitted."},"requireObjectSave":{"type":"boolean","default":false,"description":"Full Source requires transactional object save. Events patch requires profile-owned KB/version pins and an audited U16 SDK bundle. dryRun reports persistabilityVerified; failures precede writes. baseVersion or expectedVersion required; conflicting aliases rejected."},"forceWrite":{"type":"boolean","default":false,"description":"WebForm only: persist despite SDK WebForm validation errors; response includes validationOverridden=true."},"verifyMode":{"type":"string","enum":["semantic","normalized","exact"],"description":"Omitted: semantic for Structure, normalized for text parts; set only to override. Full exact compares public-read text verbatim; patch exact retains logical CRLF/LF equivalence. normalized ignores EOL, BOM, trailing whitespace and blank lines; semantic also tolerates casing/spacing and, on Structure, the attribute description the SDK derives from the attribute name. Fresh reread always required. sdkSaveCompleted reports the physical save; in mode=patch saved is the fail-closed claim (true only once the reread confirms the content) and WriteNotPersisted carries mismatchKind normalization|content; persistedStateKnown and postSaveVerification report read evidence. Mismatch never retries automatically."},"visualVerify":{"type":"boolean","default":false,"description":"Post-edit headless screenshot + pixel-diff vs baseline. See tool-help."},"baseVersion":{"type":"string","description":"Optimistic concurrency: pass the versionToken from the genexus_read this edit is based on. If the object changed since (e.g. edited in the IDE), the write is refused with VersionConflict instead of overwriting the newer version. Omit to skip the check."},"expectedVersion":{"type":"string","description":"Concurrency alias of baseVersion; conflicting values are refused before dispatch. The write is refused when the current version no longer matches."},"concurrencyPolicy":{"type":"string","enum":["warn","fail_if_open"],"default":"warn","description":"warn (default) or fail_if_open if open in GeneXus IDE."},"autoDeclareVariables":{"type":"boolean","default":false,"description":"When true, scans updated source for newly referenced &Variable tokens and auto-declares them in VariablesPart."},"kb":{"type":"string","description":"KB alias."},"changeSet":{"type":"object","required":["action","changes"],"properties":{"action":{"type":"string","enum":["preview","validate","apply"]},"changes":{"type":"array","items":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"part":{"type":"string","enum":["Source","Rules","Variables"]},"content":{"type":"string"},"expectedVersion":{"type":"string"}}}},"changeSetId":{"type":"string"},"baseRevision":{"type":"string"}}},"module":{"type":"string","description":"mode=ops: Transaction module for modular objects."}},"examples":[{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new"}},{"name":"Customer","mode":"patch","part":"Rules","patch":{"find":"error(","replace":"msg("},"dryRun":true},{"name":"Customer","mode":"patch","part":"Source","patch":{"find":"old","replace":"new","scope":{"start":"// Banco B","end":"// Proximo banco"}}}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
11
11
|
{"name":"genexus_inspect","description":"Use this for a compact object snapshot: metadata, variables, structure, signature and navigation context. Modular objects accept persisted GUID, EntityKey, or path in addition to name/type. Don't use it when you need full Source or exact part bytes; use genexus_read for that. runtimeIds needs a prior build.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"guid":{"type":"string","description":"Persisted object GUID from genexus_list_objects."},"entityKey":{"type":"string","description":"Typed GeneXus EntityKey from genexus_list_objects verbose output."},"path":{"type":"string","description":"Module/folder-qualified object path from genexus_list_objects."},"include":{"type":"array","items":{"type":"string","enum":["metadata","variables","signature","structure","parts","controls","events_repertoire","callers","runtimeIds"]}},"projection":{"type":"string","enum":["minimal","standard","verbose"],"description":"Token budget. minimal=name/type/lastUpdate; standard=default (vars≤40 name+type, source heads 1200c); verbose=full vars + 8000c heads."},"type":{"type":"string"},"kb":{"type":"string","description":"KB alias."},"verbose":{"type":"boolean","description":"Include verbose diagnostic fields."}},"examples":[{"name":"Customer"},{"name":"Customer","type":"Procedure","path":"Operations/Customer"},{"name":"Customer","include":["variables","signature"]}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
12
12
|
{"name":"genexus_analyze","description":"Use this for cross-object semantic analysis. mode=context (alias deep_context) returns 360° task context in 1 call (object + called procedures' parm signatures + referenced tables' schemas/PKs + SDTs + callers). Other modes: impact, callers, hierarchy, navigation, linter, summary, explain. mode=theme_classes lists the KB's theme classes (name + objectGuid) so you can pick a class by name; objectGuid is the class object's GUID and is NOT the value a layout class attribute takes, so never invent that value. mode=explain is compatibility-only: it preserves the legacy response envelope and returns NotImplemented; use mode=summary for a concise overview, mode=context for 360° task context, or genexus_read for source. Requires Ready index for impact/callers.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"mode":{"type":"string","enum":["context","deep_context","linter","navigation","hierarchy","impact","cross_platform_impact","callers","event_flow","data_context","ui_context","pattern_metadata","summary","dependency_heatmap","code_metrics","kb_stats","table_relations","theme_classes","explain"]},"code":{"type":"string","description":"mode=explain: legacy code snippet carried through the compatibility-only envelope; the result is NotImplemented. Use mode=summary, mode=context, or genexus_read for supported analysis."},"cursor":{"type":"string","description":"Continuation cursor from a budgeted page. mode=context: scan.nextCursor. mode=callers: the integer scan.nextCursor (resume offset into the caller list)."},"maxCallers":{"type":"integer","description":"mode=callers: callers to scan in this page (default 50)."},"maxSourceBytes":{"type":"integer","description":"mode=callers: UTF-8 bytes of caller source per page (default 4194304). A caller larger than this is listed in scan.skippedCallers."},"format":{"type":"string","enum":["json","ascii"],"description":"mode=dependency_heatmap: ascii adds rendered bar chart."},"kb":{"type":"string","description":"KB alias."},"maxBytes":{"type":"integer","description":"mode=context: maximum UTF-8 bytes for the returned context bundle (bounded by the server)."},"waitForIndex":{"type":"boolean","description":"mode=impact: block up to 30s for Ready index (default true).","default":true},"dryRun":{"type":"boolean","description":"mode=linter: with fix=true, reject the unsupported combination before any SDK read; with fix=false, lint remains read-only."},"fix":{"type":"boolean","description":"mode=linter: apply automatic fixes to the KB."},"top":{"type":"integer","description":"mode=code_metrics: maximum results (default 25)."},"waitTimeoutMs":{"type":"integer","description":"mode=impact: maximum index wait in milliseconds."}},"required":["mode"],"examples":[{"name":"Customer","mode":"impact"},{"name":"Customer","mode":"summary"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
13
|
-
{"name":"genexus_lifecycle","description":"Build, validate, index, or poll the KB. action=build_all runs the native incremental Build All for the entire selected KB (ForceRebuild=false); it rejects target, refuses silent reorganization, and returns completion evidence. action=rebuild
|
|
13
|
+
{"name":"genexus_lifecycle","description":"Build, validate, index, or poll the KB. action=build_all runs the native incremental Build All for the entire selected KB (ForceRebuild=false); it rejects target, refuses silent reorganization, and returns completion evidence. action=rebuild runs the forced Rebuild All for the entire selected KB (ForceRebuild=true) and also rejects target with TargetNotSupported; use action=build target=<object> for a directed build. action=specify runs Spec+Gen only. action=build with mode=compile_check checks targets plus transitive callers without KB-wide DeveloperMenu regeneration. Long operations are async with operationId. dryRun=true previews without executing. Build results carry generateEvidence and effective_status. See genexus://kb/tool-help/genexus_lifecycle for actions and target formats.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["build","build_all","cancel","specify","rebuild","reorg","reorg_preview","validate","validate-kb","sync","index","status","result","snapshots-list","snapshots-restore","inspect","reconcile"],"description":"Lifecycle action to perform."},"mode":{"type":"string","enum":["compile_check"],"description":"With action=build: compile_check spec+gen+compiles target(s) plus their transitive callers and SKIPS the KB-wide DeveloperMenu regen (the dominant build-all cost). Fast 'did my edit break the build?' check; requires target."},"target":{"type":"string","description":"Object/task ID/op:<id>. compile_check accepts unique name, Type:Name, GUID; no paths. build_all and rebuild reject target."},"job_id":{"type":"string","description":"Gateway operation id or Worker task id for status/result/cancel; the op: prefix is optional."},"jobId":{"type":"string","description":"Legacy alias for job_id."},"code":{"type":"string","description":"validate: in-memory code to check without persisting."},"limit":{"type":"integer","description":"validate-kb: maximum number of objects/conditions to validate."},"snapshotPath":{"type":"string","description":"snapshots-restore: path to pattern snapshot to restore."},"estimated_seconds":{"type":"integer","description":"Build: <20 sync, >=20 async (default 60)."},"wait_seconds":{"type":"integer","description":"Status/build long-poll cap, 0-600s."},"wait_until_done":{"type":"boolean","description":"Build/build_all/rebuild: block in one turn until terminal (up to wait_seconds, default 600)."},"until":{"type":"string","enum":["change","terminal"],"description":"Status wait stop condition: change (default for polling) or terminal (default when wait_until_done=true)."},"wait":{"type":"integer","description":"Status block, 0-600s. With a build taskId (or since): event-driven, returns on change. On index status with no since: blocks until index is Ready."},"since":{"type":"string","description":"Status: prior _meta.snapshot for chained waits."},"freshness":{"type":"string","enum":["current","stale","refreshing"],"description":"Status: freshness target for the wait. With wait and no since, the call blocks until the index status is Ready AND freshness matches, then reports waitSatisfied. Use freshness=current to wait for a warm-start delta refresh to finish (a snapshot restored from the warm cache is Ready but stale, so a status-only wait returns immediately)."},"compact":{"type":"boolean","description":"Status: counts + top-10 errors (default true)."},"force":{"type":"boolean","description":"Index: full SDK rescan (clears snapshot)."},"dryRun":{"type":"boolean","default":false,"description":"build/build_all/rebuild/index: returns the plan without executing."},"environment":{"type":"string","description":"Build: target environment name/folder. Switches active environment before building."},"includeCallees":{"type":"string","enum":["none","direct","transitive"],"description":"Build: expand call graph so callees compile first (default transitive)."},"callers":{"type":"boolean","description":"compile_check: expand transitive callers of the target (default true). Set false for a target-only check when the target is a base transaction/BC with a huge caller closure."},"callerCap":{"type":"integer","description":"compile_check: max callers to pull into the check (default 40). Closure beyond this is truncated and flagged."},"deploy":{"type":"boolean","description":"Build: force the full deploy (Theme/Image/Style/Module copy to web/bin + WebAppConfig) so the built object is runnable, not just compiled. Default false (fast compile-only path). Slower; use when you need to run/preview the object."},"buildPlanCap":{"type":"integer","description":"Build: max nodes before BuildPlanTooLarge (default 200)."},"kb":{"type":"string","description":"KB alias."},"part":{"type":"string","description":"validate: specific object part to check (e.g. Source, Rules)."},"page":{"type":"integer","description":"status/result: 1-based page number for paginated results."},"pageSize":{"type":"integer","description":"status/result: page size for paginated results (default 50)."},"page_size":{"type":"integer","description":"status/result: snake_case alias for pageSize."},"notifyOnFailure":{"type":"string","description":"build: Slack/Discord webhook URL to notify on terminal build failure."},"skipFullDeploy":{"type":"boolean","description":"build: skip full deployment stage to speed up compile pass."},"fastIncremental":{"type":"boolean","description":"build: experimental fast incremental build opt-in."},"operationKey":{"type":"string","description":"inspect/reconcile: original idempotency key; journal lookup is hash-scoped to the resolved KB."},"operationTool":{"type":"string","description":"inspect/reconcile: canonical mutating tool that owns the idempotency key, e.g. genexus_edit."},"confirmed":{"type":"boolean","description":"reconcile: must be true after independently reading the affected target; this never authorizes a retry with the same key."},"verification":{"type":"string","description":"reconcile: short operator/model verification statement. Only a hash is persisted; source and KB content are never journaled."},"observedTargetIds":{"type":"array","items":{"type":"string"},"description":"reconcile: target names observed by an independent read; send one name as a single-item array. Must match the durable target fence."},"observedRevision":{"type":"string","description":"reconcile: revision/version observed by an independent read; must match the durable revision fence."}},"required":["action"],"examples":[{"action":"build"},{"action":"build_all"},{"action":"status","target":"op:abc123"},{"action":"build","mode":"compile_check","target":"MyObject"},{"action":"inspect","operationTool":"genexus_edit","operationKey":"edit_20260905_01"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"outputSchema":{"type":"object","description":"Structured lifecycle result. Action-specific fields remain additive; text content is preserved for legacy clients.","properties":{"status":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"error":{"type":"string"},"operationId":{"type":"string"},"job_id":{"type":"string"},"pollTarget":{"type":"string"},"isError":{"type":"boolean"}},"additionalProperties":true}},
|
|
14
14
|
{"name":"genexus_test","description":"Execute native GeneXus tests (GXtest).","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"kb":{"type":"string","description":"KB alias."}},"required":["name"],"examples":[{"name":"MyTestProc"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},
|
|
15
15
|
{"name":"genexus_sdk_probe","description":"Read the GeneXus SDK surface. mode=surface dumps types/methods/props to docs/sdk-probe/; mode=capabilities returns an in-memory capability matrix with honest signature-probe status.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["surface","capabilities"],"description":"surface (default) writes the diagnostic probe; capabilities is read-only and returns status/evidence."},"outputDir":{"type":"string","description":"Absolute path for mode=surface. Default <repo>/docs/sdk-probe/."},"kb":{"type":"string","description":"KB alias."}},"examples":[{},{"mode":"capabilities"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
16
16
|
{"name":"genexus_worker_reload","description":"Reload worker. mode=soft drains and respawns; mode=hard copies sourceDir during the drain window and respawns. force=true kills and respawns a wedged Worker, but cannot be combined with mode=hard; no Worker is stopped when that combination is rejected. See tool-help.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["soft","hard"]},"force":{"type":"boolean","description":"Bypass drain; gateway kills + respawns. Use with mode=soft when the Worker is wedged; force=true + mode=hard is rejected before stopping anything."},"sourceDir":{"type":"string","description":"Required for mode=hard."},"drainTimeoutMs":{"type":"integer","description":"Soft only; default 30000."},"alias":{"type":"string","description":"KB alias to reload when more than one worker is open."},"kb":{"type":"string","description":"Alias of alias."}},"examples":[{"mode":"soft"},{"mode":"hard","sourceDir":"C:\\Projetos\\Genexus18MCP\\src\\GxMcp.Worker\\bin\\Debug"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}},
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
{"name":"genexus_authoring","description":"Author members of object types the structure DSL doesn't cover. add_external_method / add_external_property add a method (with parameters) or property to an External Object; add_menu_option adds an option to a Menu (target = a KB object to call); add_condition adds a filter expression to a Data Selector. name = the target object.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["add_external_method","add_external_property","add_menu_option","add_condition"],"description":"Authoring operation to add a typed member or condition to a supported object."},"name":{"type":"string","description":"ExternalObject / Menu / DataSelector name."},"payload":{"type":"object","description":"add_external_method:{name,externalName?,returnType?,dryRun?,expectedVersion?,parameters?:[{name,type?,length?,decimals?,inout?,externalName?}]} (in|out|inout). Save verified, repeats unchanged. Other actions: {name,type?}|{description,target?,optionCode?}|{source}."},"kb":{"type":"string","description":"KB alias."}},"required":["action","name"],"examples":[{"action":"add_external_property","name":"MyExternalObject","payload":{"name":"apiKey","type":"Character"}},{"action":"add_menu_option","name":"MainMenu","payload":{"description":"Customers","target":"CustomerWW"}},{"action":"add_condition","name":"ActiveCustomers","payload":{"source":"CustomerActive = True"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
26
26
|
{"name":"genexus_layout","description":"Layout/WebForm: get_tree, set_property, find_controls, inspect_surface, scan_mutators. Properties: genexus_properties; structure: genexus_structure get_visual.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["get_tree","set_property","find_controls","set_properties","inspect_surface","get_preview","scan_mutators","rename_printblock","add_printblock","delete_printblock","add_report_control","move_report_control","remove_report_control","list_controls","design_system"],"description":"Layout/WebForm operation to perform."},"name":{"type":"string","description":"Target object name (WebPanel, Transaction, Procedure)."},"control":{"type":"string","description":"Control name within the layout or WebForm."},"propertyName":{"type":"string","description":"Property name to modify (e.g. Caption, Visible, Enabled, Class)."},"value":{"type":"string","description":"Value to assign to the specified property."},"query":{"type":"string","description":"find_controls: search query matching control names or captions."},"changes":{"type":"array","description":"set_properties: batch array of {control, propertyName, value} objects.","items":{"type":"object","properties":{"control":{"type":"string","description":"Control name."},"propertyName":{"type":"string","description":"Property name."},"value":{"type":"string","description":"Property value."}},"required":["control","propertyName","value"]}},"limit":{"type":"integer","description":"find_controls/list_controls: maximum results to return."},"currentName":{"type":"string","description":"rename_printblock: existing printblock name."},"newName":{"type":"string","description":"rename_printblock: new printblock name."},"printBlockName":{"type":"string","description":"add_printblock/delete_printblock: name of the printblock."},"appendPrintToSource":{"type":"boolean","description":"add_printblock: also insert `print <printBlockName>` into the Procedure Source (default true). Set false to leave Source untouched."},"height":{"type":"integer","description":"add_printblock: height of the new printblock; report controls use the same field for control height."},"kind":{"type":"string","enum":["variable","attribute","label","line","box","image"],"description":"add_report_control: report control kind."},"controlName":{"type":"string","description":"add/move/remove_report_control: stable report control name."},"controlType":{"type":"string","description":"Optional native report control type override."},"binding":{"type":"string","description":"add_report_control: variable (&Name) or attribute binding for variable/attribute controls."},"caption":{"type":"string","description":"add_report_control: label text for label controls."},"left":{"type":"number","description":"Report control X/left coordinate."},"top":{"type":"number","description":"Report control Y/top coordinate."},"x":{"type":"number","description":"Alias for left."},"y":{"type":"number","description":"Alias for top."},"width":{"type":"number","description":"Report control width."},"after":{"type":"string","description":"Place/move after this report control."},"below":{"type":"string","description":"Place/move below this report control."},"font":{"type":"string","description":"Optional report font token."},"fontName":{"type":"string","description":"Optional report font family."},"fontSize":{"type":"string","description":"Optional report font size."},"alignment":{"type":"string","description":"Optional report text alignment."},"picture":{"type":"string","description":"Optional image/report picture token."},"baseVersion":{"type":"string","description":"Version token from get_tree; required for report-control actions, including dryRun."},"dryRun":{"type":"boolean","description":"Preview report-control mutation without saving."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Request rollback on verification failure. Report restore is currently unavailable without atomic ownership proof; returns recovery evidence without a second write."},"kb":{"type":"string","description":"KB alias."}},"required":["action"],"examples":[{"action":"get_tree","name":"WPMain"},{"action":"find_controls","name":"WPMain","query":"Button"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
27
27
|
{"name":"genexus_doc","description":"Use to generate structured docs (wiki, dependency graph, health reports). Don't use for programmatic analysis (see genexus_analyze) or source (see genexus_read).","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["wiki","visualize","health"],"description":"wiki: generate markdown docs; visualize: generate dependency graph; health: produce health report."},"target":{"type":"string","description":"Object or domain name (required for wiki/visualize)."},"kb":{"type":"string","description":"KB alias for health or other worker-backed document actions."}},"required":["action"],"examples":[{"action":"wiki","target":"Customer"},{"action":"health"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
28
|
-
{"name":"genexus_search_source","description":"Regex/semantic search across Procedure/DataProvider/WebPanel/Transaction source. Restrict a scan by object name, persisted GUID, EntityKey, or module/folder-qualified path. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"callee":{"type":"string","description":"Method/function name (qualified or unqualified)."},"argMatches":{"type":"object","description":"Positional arg index to expected literal text."},"pattern":{"type":"string"},"typeFilter":{"type":"string"},"objectName":{"type":"string","description":"Restrict the scan to these exact object name(s), comma-separated. Makes a search inside one known object O(object) not O(KB), and bypasses the type whitelist."},"guid":{"type":"string","description":"Persisted object GUID from genexus_list_objects."},"entityKey":{"type":"string","description":"Typed GeneXus EntityKey from genexus_list_objects verbose output."},"path":{"type":"string","description":"Module/folder-qualified object path from genexus_list_objects."},"startIndex":{"type":"integer","description":"Legacy object-boundary resume. For a page that ended inside an object, prefer the opaque cursor returned in nextCursor."},"cursor":{"type":"string","description":"Opaque continuation token from nextCursor; preferred when a result page ended inside an object. Do not edit."},"timeoutMs":{"type":"integer","description":"Wall-clock budget (default 30000). Raise it to scan more objects per call."},"scope":{"type":"array","items":{"type":"string","enum":["source","rules","conditions","events","webForm","layout"]},"description":"Parts to scan with line-numbered context. Default [source]. webForm/layout scans the WebPanel/Transaction visual XML (control names, captions, classes, bindings)."},"fields":{"type":"array","items":{"type":"string","enum":["source","caption","description","parmNames","webForm"]},"description":"Whole-field metadata match (returns matchedValue, no line context). Default [source]. Prefer scope=[webForm] for line-context WebForm hits; use fields=[webForm] only for a coarse contains-match."},"maxResults":{"type":"integer"},"caseSensitive":{"type":"boolean"},"includeComments":{"type":"boolean"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N distinct objects in response."},"kb":{"type":"string","description":"KB alias."}},"additionalProperties":false,"examples":[{"pattern":"ControlType=\"Radio\""},{"pattern":"for each","typeFilter":"Procedure","maxResults":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
28
|
+
{"name":"genexus_search_source","description":"Regex/semantic search across Procedure/DataProvider/WebPanel/Transaction source. Restrict a scan by object name, persisted GUID, EntityKey, or module/folder-qualified path. Requires the KB index to be Ready — check genexus_lifecycle action=status if results look empty.","inputSchema":{"type":"object","properties":{"callee":{"type":"string","description":"Method/function name (qualified or unqualified)."},"argMatches":{"type":"object","description":"Positional arg index to expected literal text."},"pattern":{"type":"string"},"typeFilter":{"type":"string"},"objectName":{"type":"string","description":"Restrict the scan to these exact object name(s), comma-separated. Makes a search inside one known object O(object) not O(KB), and bypasses the type whitelist."},"guid":{"type":"string","description":"Persisted object GUID from genexus_list_objects."},"entityKey":{"type":"string","description":"Typed GeneXus EntityKey from genexus_list_objects verbose output."},"path":{"type":"string","description":"Module/folder-qualified object path from genexus_list_objects."},"startIndex":{"type":"integer","description":"Legacy object-boundary resume. For a page that ended inside an object, prefer the opaque cursor returned in nextCursor."},"cursor":{"type":"string","description":"Opaque continuation token from nextCursor; preferred when a result page ended inside an object. Do not edit."},"timeoutMs":{"type":"integer","description":"Wall-clock budget (default 30000). Raise it to scan more objects per call."},"scope":{"type":"array","items":{"type":"string","enum":["source","rules","conditions","events","webForm","layout"]},"description":"Parts to scan with line-numbered context. Default [source]. webForm/layout scans the WebPanel/Transaction visual XML (control names, captions, classes, bindings)."},"fields":{"type":"array","items":{"type":"string","enum":["source","caption","description","parmNames","webForm","formula"]},"description":"Whole-field metadata match (returns matchedValue, no line context). Default [source]. Prefer scope=[webForm] for line-context WebForm hits; use fields=[webForm] only for a coarse contains-match."},"maxResults":{"type":"integer"},"caseSensitive":{"type":"boolean"},"includeComments":{"type":"boolean"},"inline_read_top":{"type":"integer","description":"0-3. Inline reads of top N distinct objects in response."},"kb":{"type":"string","description":"KB alias."}},"additionalProperties":false,"examples":[{"pattern":"ControlType=\"Radio\""},{"pattern":"for each","typeFilter":"Procedure","maxResults":20}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
29
29
|
{"name":"genexus_kb","description":"Manage open KBs, session selection, startup config, Knowledge Base creation, and GeneXus environments. create bootstraps a brand new KB via native MSBuild tasks; list/open/close/select/set_session_default/set_persistent_default/set_default operate on WorkerPool and session context; select sets active KB for current session only without mutating config; set_persistent_default explicitly persists startup default to config.json and returns persistedTo; set_default is a legacy persistent default operation; set_startup/get_startup mirror IDE 'Set As Startup Object'; list_environments lists all configured environments; get_environment reads the active environment; set_environment selects an environment.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list","open","close","select","set_session_default","set_persistent_default","set_default","set_startup","get_startup","list_environments","get_environment","set_environment","create"],"description":"KB pool or startup-selection operation to perform."},"alias":{"type":"string","description":"KB alias. open: auto from path basename if omitted."},"kb":{"type":"string","description":"KB alias for environment actions; required when more than one Worker is open."},"path":{"type":"string","description":"Absolute KB path (required for create and for open if alias not in config)."},"driver":{"type":"string","enum":["native-sdk","dotnet-reflection","com-gxpublic"],"description":"open only: per-KB driver override. Use com-gxpublic for classic GeneXus 8/9 KBs; otherwise omit to resolve the catalog driver."},"installationPath":{"type":"string","description":"open only: per-KB GeneXus installation/provider root. For GX8 this is typically the folder containing gxw32.exe (for example ...\\ARTech\\GeneXus\\gxw80)."},"name":{"type":"string","description":"Object name (required for set_startup) or Knowledge Base name (optional for create, defaults to directory name)."},"environment":{"type":"string","description":"Environment name/folder (required for set_environment), e.g. development."},"persist":{"type":"boolean","description":"Persist KB to config.json for create and legacy set_default (default false for create, default true for set_default)."},"dbServer":{"type":"string","description":"create only: SQL Server instance name (default (LocalDB)\\MSSQLLocalDB)."},"dbName":{"type":"string","description":"create only: target database name (default gx_kb_<name>)."},"dbUser":{"type":"string","description":"create only: database user for SQL authentication (optional)."},"dbPassword":{"type":"string","description":"create only: database password for SQL authentication (optional)."},"template":{"type":"string","description":"create only: generator template path or name, e.g. CSharp/csharp.kbtemplate (optional)."},"sdkPath":{"type":"string","description":"create only: explicit GeneXus SDK installation directory (optional)."},"major":{"type":"string","description":"open/create: target GeneXus major version, e.g. '8', '16', '17', or '18' (optional). For open, use with driver/installationPath to select a legacy SDK per KB."},"openAfterCreate":{"type":"boolean","description":"create only: automatically open the KB and start a Worker instance after creation (default true)."},"dryRun":{"type":"boolean","description":"create only: preview KB creation plan without creating directories or running MSBuild (default false)."}},"required":["action"],"examples":[{"action":"open","path":"C:\\KBs\\MyKb"},{"action":"create","path":"C:\\KBs\\NewKb","major":"18"},{"action":"select","alias":"MyKb"},{"action":"set_persistent_default","alias":"MyKb"},{"action":"list"},{"action":"list_environments"},{"action":"get_environment"},{"action":"set_environment","environment":"development"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
30
30
|
{"name":"genexus_navigation","description":"View navigation report (IDE Right-click → View Navigation). latest=true reads the most recent report from .gx/navigation-cache; latest=false runs fresh and refreshes that per-KB cache.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["view"],"description":"Navigation report operation to execute."},"name":{"type":"string"},"latest":{"type":"boolean","default":false,"description":"Read the most recent cached navigation when true; when false, run fresh and refresh the per-KB navigation cache."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"view","name":"Customer"},{"action":"view","name":"Customer","latest":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
31
31
|
{"name":"genexus_api","description":"Inspect HTTP procedures and native API routes. action=list|describe|routes_inspect|routes_clone|routes_update|snapshot|diff_baseline|export_openapi|import_openapi. API route writes use typed ServiceGroupSource, optimistic versioning, full snapshot, rollback and post-save reread; no lifecycle operation is implicit.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","describe","routes_inspect","routes_clone","routes_update","snapshot","diff_baseline","export_openapi","import_openapi"],"description":"API introspection, route-editing, or baseline operation to perform."},"api":{"type":"string","description":"API name (routes_inspect|routes_clone|routes_update)."},"sourcePrefix":{"type":"string","description":"Source method/path prefix, e.g. inbound."},"targetPrefix":{"type":"string","description":"Target method/path prefix, e.g. reverse."},"routes":{"type":"array","items":{"type":"object","required":["sourceMethod","method","route"],"additionalProperties":false,"properties":{"sourceMethod":{"type":"string"},"method":{"type":"string"},"route":{"type":"string","pattern":"^/"},"verb":{"type":"string"}}}},"expectedVersion":{"type":"string","description":"versionToken returned by the preceding dry run or inspection."},"versionToken":{"type":"string","description":"Backward-compatible alias for expectedVersion; pass the token returned by the preceding dry run or inspection."},"dryRun":{"type":"boolean","default":true,"description":"routes_clone/routes_update: preview first; false writes only with expectedVersion or versionToken."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Restore the complete API snapshot when post-save verification diverges."},"operation":{"type":"string","description":"Operation value carried by the reused request contract, e.g. REVERSE."},"target":{"type":"string","description":"Procedure or API name (action=describe)."},"name":{"type":"string","description":"Baseline name (action=snapshot)."},"baseline":{"type":"string","description":"Baseline name under .gx/api-baselines/ or absolute path (action=diff_baseline)."},"pathPrefix":{"type":"string","description":"Folder prefix filter (action=list/export_openapi)."},"title":{"type":"string","description":"export_openapi: OpenAPI info.title."},"version":{"type":"string","description":"export_openapi: OpenAPI info.version."},"spec":{"type":"string","description":"import_openapi: OpenAPI 3 JSON document."},"content":{"type":"string","description":"Alias of spec for import_openapi."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list"},{"action":"routes_inspect","api":"OrdersApi"},{"action":"routes_clone","api":"OrdersApi","sourcePrefix":"inbound","targetPrefix":"reverse","operation":"REVERSE","dryRun":true,"rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
{"name":"genexus_io","description":"IO umbrella for assets, Object Text exchange, screenshots, OCR. action: asset_find|asset_read|asset_write | read_blob | export_part|import_part (single part) | export_kb_to_text|import_text_to_kb|validate_kb_text_files|delete_kb_objects (official GeneXus for Agents Object Text parity) | export_unified|screenshot_publish|ocr.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["asset_find","asset_read","asset_write","read_blob","export_part","import_part","export_kb_to_text","import_text_to_kb","validate_kb_text_files","validate_text_in_memory","list_text_files","text_mirror_start","text_mirror_stop","text_mirror_status","text_mirror_catchup","text_mirror_set_references","delete_kb_objects","export_unified","screenshot_publish","ocr"],"description":"Asset, single-part, SDK text-tree, batch Object Text, screenshot, or OCR operation."},"path":{"type":"string","description":"asset/screenshot_publish/ocr: file path; Object Text import/validate may use a manifest directory."},"name":{"type":"string","description":"single object name or comma-separated selector; export_unified uses one object."},"targets":{"type":"array","items":{},"description":"Object Text selector array. Items may be names or {name,type} objects. Omit for export_kb_to_text to export the full indexed KB."},"outputPath":{"type":"string","description":"path"},"inputPath":{"type":"string","description":"import_part: source file; import_text_to_kb/validate_kb_text_files: manifest or directory."},"part":{"type":"string","description":"Object Text or part-exchange part name (e.g. Source, Rules, WebForm). For native format, part=all serializes authored textual parts into one sectioned .gx document."},"parts":{"type":"array","items":{"type":"string"},"description":"native export: explicit authored parts to include in one sectioned .gx document; part=all uses the safe default part set."},"format":{"type":"string","enum":["legacy","native"],"description":"Object Text export/import format. legacy preserves .gxtext compatibility; native creates the SDK text tree under src/ and ref/ without GX4A DLLs."},"mode":{"type":"string","enum":["all","newAndModified","newOnly"],"description":"native export mode. all writes every selected object; newAndModified uses the SDK/index version token; newOnly keeps existing files."},"includeDependencies":{"type":"boolean","description":"native export/import: include Calls/Tables dependency closure under ref/."},"includeReferences":{"type":"boolean","description":"Alias of includeDependencies for native src/ref exchange."},"includeVisualParts":{"type":"boolean","description":"native export/import: include WebForm/Layout companions (.web.xml or .report.xml)."},"includeModuleMetadata":{"type":"boolean","default":true,"description":"native export: emit deterministic module.toml metadata for modules represented in src/ref; no package DLL is loaded."},"includeModulePackages":{"type":"boolean","description":"native export: copy matching official .opc reference packages from the selected GeneXus installation into ref/; defaults to includeDependencies and never copies DLLs."},"includeTableProjections":{"type":"boolean","description":"native export: emit official SDK Table structures under src/#tables for selected Transactions; opt-in because tables may be shared/derived."},"includeChildren":{"type":"boolean","default":true,"description":"filesystem parity: recurse into child directories or expand Module/Folder selectors recursively; default true."},"listOnly":{"type":"boolean","description":"filesystem parity: return the resolved plan without reading the SDK, writing files or mutating the KB."},"stopOnError":{"type":"boolean","description":"filesystem parity: stop after the first item-level error and report remaining work for a safe resume."},"skip":{"type":"integer","minimum":0,"description":"filesystem parity: skip this many deterministic planned items before processing; useful for resuming a large batch."},"indentString":{"type":"string","description":"native export: optional prefix applied to non-empty source lines inside the object body; omitted preserves source indentation."},"forceSave":{"type":"boolean","description":"text import: force the official WriteService persistence path even when the content is unchanged."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"native multi-part import: restore parts already written when a later SDK part write fails; reports reconciliationRequired if a prior snapshot cannot be read or restored."},"importMissingReferences":{"type":"boolean","description":"native import: include reference/dependency files when importing a tree."},"ignore":{"type":"array","items":{"type":"string"},"description":"list_text_files/validate_text_in_memory: relative file or directory prefixes to ignore; batch KB actions also accept object selectors."},"intervalMs":{"type":"integer","minimum":250,"description":"text_mirror_start: debounce/poll interval in milliseconds (250-600000)."},"initialSync":{"type":"boolean","description":"text_mirror_start: schedule a full catch-up immediately after start."},"full":{"type":"boolean","description":"text_mirror_catchup: reconcile the complete indexed KB instead of only queued changes."},"enabled":{"type":"boolean","description":"text_mirror_set_references: enable/disable reference export."},"type":{"type":"string","description":"Object type disambiguator/filter."},"module":{"type":"string","description":"Object Text module filter."},"pathPrefix":{"type":"string","description":"Object Text KB object-path prefix filter."},"overwrite":{"type":"boolean","description":"replace file"},"confirm":{"type":"boolean","description":"delete_kb_objects: required for a real delete; dryRun remains non-mutating."},"dryRun":{"type":"boolean","description":"Object Text import/delete preview without persisting changes."},"async":{"type":"boolean","description":"Run a batch Object Text operation as a cancellable background job when supported."},"pattern":{"type":"string","description":"asset_find: glob pattern."},"relativeRoot":{"type":"string","description":"asset_find: root for relative paths."},"limit":{"type":"integer","description":"asset_find/Object Text: max results."},"includeContent":{"type":"boolean","description":"asset_find: inline file content."},"maxBytes":{"type":"integer","description":"inline limit"},"includeBase64":{"type":"boolean","description":"include Base64 response"},"contentBase64":{"type":"string","description":"asset_write: base64-encoded file content."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"export_kb_to_text","outputPath":"C:\\tmp\\customer-text","targets":[{"name":"Customer","type":"Transaction"}]},{"action":"validate_kb_text_files","inputPath":"C:\\tmp\\customer-text"},{"action":"delete_kb_objects","targets":["Procedure:OldProc"],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
46
46
|
{"name":"genexus_variable","description":"Variables CRUD. add accepts varName or variables[] batch; modify changes type atomically, or only the description when typeName is omitted (the type is kept). basedOn binds a Domain; basedOnAttribute (or typeName Attribute:<name>) binds an Attribute by native SDK identity preserving picture/semantics. objectType=BusinessComponent with objectName+module binds a modular BC by EntityKey/GUID and verifies it after save. length/decimals override size; collection=true declares a collection; dimensions=1|2 plus dimensionSizes declares a fixed-size vector/matrix (not a collection); untyped add inherits a same-named attribute with its binding. modify refuses to silently drop an Attribute binding (AttributeBindingWouldBeLost); reads surface basedOn. dryRun validates and previews without mutation; async returns an operationId.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["add","delete","modify"],"description":"Variable-part operation to add, delete, or modify a variable."},"name":{"type":"string"},"varName":{"type":"string","description":"Single-variable form (add/delete/modify). For batch add use variables[] instead."},"variables":{"type":"array","description":"Batch add only: one object per variable — {varName, typeName?, basedOn?, basedOnAttribute?, length?, decimals?, collection?, dimensions?, dimensionSizes?}. Added before a single save.","items":{"type":"object","required":["varName"],"properties":{"varName":{"type":"string"},"typeName":{"type":"string"},"length":{"type":"integer"},"decimals":{"type":"integer"},"collection":{"type":"boolean"},"dimensions":{"type":"integer","minimum":1,"maximum":2,"description":"Fixed-size vector/matrix rank; requires dimensionSizes and conflicts with collection."},"dimensionSizes":{"type":"array","minItems":1,"maxItems":2,"items":{"type":"integer","minimum":1},"description":"Positive sizes in row/column order; length must equal dimensions."},"basedOn":{"type":"string","description":"Domain name; native SDK reference."},"basedOnAttribute":{"type":"string","description":"Attribute name (or Attribute:<name>); preserves picture/semantics."}}}},"typeName":{"type":"string","description":"Primitive (Character/Numeric/VarChar/Date/...), SDT/BC/Domain name, Attribute:<name>, or WebSession. VarChar keeps VARCHAR semantics."},"newTypeName":{"type":"string","description":"modify alias for the replacement type; accepted alongside typeName."},"dataType":{"type":"string","description":"modify alias for the replacement type; accepted alongside typeName."},"description":{"type":"string","description":"modify: new variable Description (empty string clears it). Without typeName the type is kept and only the description changes."},"objectType":{"type":"string","enum":["BusinessComponent"],"description":"add/modify: resolve an object-backed variable natively instead of interpreting typeName as a Domain."},"objectName":{"type":"string","description":"Business Component Transaction name, without module when module is passed separately."},"module":{"type":"string","description":"Module owning objectName. Required to disambiguate modular Business Components."},"expectedVersion":{"type":"string","description":"Optimistic-concurrency token for an object-backed add/modify. Stale state returns VersionConflict before mutation."},"length":{"type":"integer","description":"add/modify optional: overrides the length parsed from typeName."},"decimals":{"type":"integer","description":"add/modify optional: overrides decimals parsed from typeName."},"collection":{"type":"boolean","description":"add/modify optional: declare the variable as a collection."},"dimensions":{"type":"integer","minimum":1,"maximum":2,"description":"add/modify optional: fixed-size vector/matrix rank; requires dimensionSizes and conflicts with collection."},"dimensionSizes":{"type":"array","minItems":1,"maxItems":2,"items":{"type":"integer","minimum":1},"description":"add/modify optional: positive sizes in row/column order; length must equal dimensions."},"basedOn":{"type":"string","description":"Domain name, or Attribute:<name> for an attribute binding (prefer basedOnAttribute)."},"basedOnAttribute":{"type":"string","description":"Attribute name (or Attribute:<name>) to bind; preserves picture/semantics."},"dryRun":{"type":"boolean","default":false,"description":"Validate and return the typed diff without changing any object, Attribute, hash, or version."},"validationMode":{"type":"string","enum":["specify"],"description":"Explicitly run the inline Specify pass after a legacy variable write. Never runs unless requested."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Object-backed variables always snapshot the complete owner and restore it on save/re-read divergence."},"async":{"type":"boolean","description":"Run as a background job. Result returns operationId/job_id for genexus_lifecycle polling."},"estimated_seconds":{"type":"integer","description":"When async=true, expected runtime used for progress/job metadata (default 30)."},"includePersistedText":{"type":"boolean","description":"Full text; default false."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"add","name":"MyPanel","varName":"&Choice","typeName":"Numeric"},{"action":"add","name":"MyProc","varName":"&OrderRecord","objectType":"BusinessComponent","objectName":"OrderRecord","module":"Operations","dryRun":true},{"action":"add","name":"MyProc","variables":[{"varName":"&ApiKey","typeName":"VarChar","length":80},{"varName":"&CmdNro","typeName":"Numeric","length":9}]},{"action":"delete","name":"MyPanel","varName":"&OldVar"}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
47
47
|
{"name":"genexus_telemetry","description":"Observability umbrella. action: executions (recent invocations) | watch_event (ops mentioning an event) | friction_append|friction_tail (.gx/friction.jsonl) | learning_report (aggregate friction) | logs (worker_debug.log tail) | profile_analyze|profile_hotspots|profile_correlate (GeneXus profiler XML).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["executions","watch_event","friction_append","friction_tail","learning_report","logs","profile_analyze","profile_hotspots","profile_correlate"],"description":"Telemetry, profiling, or friction-log operation to perform."},"target":{"type":"string","description":"executions/watch_event: object name to filter."},"event":{"type":"string","description":"watch_event: event name to match in operation payload."},"last":{"type":"integer","description":"executions/watch_event: max results."},"tool":{"type":"string","description":"friction_append: tool name that produced the friction entry."},"message":{"type":"string","description":"friction_append: description of the friction encountered."},"severity":{"type":"string","enum":["info","warn","error","critical"],"description":"friction_append: severity level."},"n":{"type":"integer","description":"friction_tail: number of recent lines to return."},"since":{"type":"string","description":"learning_report/logs: ISO-8601 start time filter."},"until":{"type":"string","description":"learning_report: ISO-8601 end time filter."},"tail":{"type":"integer","description":"logs: number of tail lines from worker_debug.log."},"filterCorrelation":{"type":"string","description":"logs: filter by correlation/operation ID."},"grep":{"type":"string","description":"logs: substring filter on log lines."},"path":{"type":"string","description":"profile_*: path to the GeneXus profiler XML file."},"top":{"type":"integer","description":"profile_hotspots: top-N hottest procedures to return."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"executions"},{"action":"friction_tail","n":20}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
48
|
-
{"name":"genexus_create","description":"Creation. action: object (Transaction/Procedure/WebPanel/SDT/API/Domain/Dashboard/Folder/Module; type='API' scaffolds a REST API object with one HTTP-verb block per object; type='Folder'/'Module' create containers; folder/module places the new object there; SDT and Transaction take optional firstItem/firstItemType; Domain takes dataType+length or enumValues; NOT WWP — use genexus_apply_pattern) | popup (popup WebPanel with Form type='layout' body) | sd_panel_create|sd_panel_inspect|sd_panel_edit | save_as (clone parts) | scaffold|translate|sample (forge) | template (kpi_header|empty_state|confirm_dialog) | object_atomic (issue #62: all-or-nothing create/update of an object with variables[], rules[], parms[], properties{} and source in ONE validated call — pre-validates every field before the first save, composes the SDK write primitives, compensates on failure, dryRun previews, validate=true runs the inline Specify pass, update mode guards concurrent writes via expectedVersion). | curl_procedure imports a REST-consumer Procedure from a curl command through the GeneXus SDK.","inputSchema":{"type":"object","required":[],"properties":{"action":{"type":"string","enum":["object","object_atomic","popup","sd_panel_create","sd_panel_inspect","sd_panel_edit","save_as","scaffold","translate","sample","template","curl_procedure"],"description":"Object-creation or scaffold operation to perform."},"curl":{"type":"string","description":"curl_procedure: the curl command to import as a Procedure."},"type":{"type":"string","description":"Object type to create (Transaction, Procedure, WebPanel, SDT, API, Domain, Dashboard, Folder, Module)."},"objectType":{"type":"string","description":"Legacy alias for type when creating an object."},"name":{"type":"string","description":"Name of the object to create, clone, or update."},"newName":{"type":"string","description":"save_as."},"description":{"type":"string","description":"Human-readable description / title of the object."},"dataType":{"type":"string","description":"object Domain."},"length":{"type":"integer","description":"object Domain."},"decimals":{"type":"integer","description":"object Domain."},"signed":{"type":"boolean","description":"object Domain."},"basedOn":{"type":"string","description":"object Domain."},"enumValues":{"type":"array","items":{"type":"object"},"description":"object Domain enum."},"firstItem":{"type":"string","description":"object SDT/Transaction optional: name of the initial structure item/key attribute to seed (SDK requires >=1). Defaults to <ObjectName>Id for Transaction and Item1 for SDT."},"firstItemType":{"type":"string","description":"object SDT/Transaction optional: type of the seeded first item/key attribute (Character/Numeric/VarChar/…). Defaults to Numeric(4) for Transaction and VarChar for SDT."},"folder":{"type":"string","description":"object: Folder destination (created in Root, then moved+verified)."},"module":{"type":"string","description":"object: Module destination (created in Root, then moved+verified)."},"parentPath":{"type":"string","description":"object: folder/module destination (fallback when folder/module absent)."},"mode":{"type":"string","enum":["create","update","auto"],"description":"object_atomic: create (fail if exists), update (fail if missing), auto (default — create or update by existence)."},"variables":{"type":"array","items":{"type":"object","required":["varName"],"properties":{"varName":{"type":"string"},"typeName":{"type":"string"},"length":{"type":"integer"},"decimals":{"type":"integer"},"collection":{"type":"boolean"},"name":{"type":"string"},"basedOn":{"type":"string"},"basedOnAttribute":{"type":"string"}}},"description":"object_atomic: one object per variable — {varName, typeName?, length?, decimals?, collection?}. Validated before any save; errors are attributed to variables[N]."},"rules":{"type":"array","items":{"type":"string"},"description":"object_atomic: rule lines (e.g. \"Parm(in:&Id);\"). Send actual line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before the first save."},"parms":{"type":"array","items":{"type":"string"},"description":"object_atomic: parameter entries rendered into a Parm rule — bare names (\"&Id\") or prefixed (\"out:&Msg\")."},"source":{"type":"string","description":"object_atomic: Source part text. Send actual line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before the first save."},"properties":{"type":"object","description":"object_atomic: object-level properties applied via the genexus_properties path (propertyName → value)."},"expectedVersion":{"type":"string","description":"object_atomic update: optimistic concurrency token returned as `version` by a prior atomic create/update/read; a mismatch fails with ConcurrentModification instead of overwriting concurrent changes."},"validate":{"type":"boolean","description":"object_atomic: run the inline Specify pass (Spec+Gen) before confirming success. On failure with rollbackOnFailure=true, a freshly-created object is deleted so the operation stays all-or-nothing."},"validationMode":{"type":"string","enum":["specify"],"description":"Issue #60: with action=object, run the inline Specify pass (Spec+Gen, no Compile) after creation, returning structured spc*/gen* diagnostics in the same call. Combines with rollbackOnFailure."},"rollbackOnFailure":{"type":"boolean","description":"Issue #60: with action=object and validationMode=specify, roll back the created object when the specify pass reports errors. A fresh object has no pre-write snapshot, so rollback reports rolledBack=false — delete it via genexus_delete_object if spec fails."},"spec":{"type":"object","description":"popup."},"part":{"type":"string","description":"sd_panel_edit/template."},"content":{"type":"string","description":"sd_panel_edit/scaffold/translate."},"includePatternInstance":{"type":"boolean","description":"save_as."},"overwrite":{"type":"boolean","description":"save_as."},"dryRun":{"type":"boolean","description":"popup/save_as/template/object."},"template":{"type":"string","enum":["kpi_header","empty_state","confirm_dialog"],"description":"template."},"args":{"type":"object","description":"template."},"kb":{"type":"string","description":"KB alias."},"baseVersion":{"type":"string","description":"Optimistic concurrency versionToken for atomic create/update."},"updateExisting":{"type":"boolean","default":false,"description":"object_atomic: allow updating existing object if it already exists."}},"examples":[{"action":"object","name":"NewPanel","type":"WebPanel"},{"action":"object","name":"CustomerApi","type":"API"},{"action":"popup","name":"MyPopup","spec":{"host":"Customer"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
48
|
+
{"name":"genexus_create","description":"Creation. action: object (Transaction/Procedure/WebPanel/SDT/API/Domain/Dashboard/Folder/Module; type='API' scaffolds a REST API object with one HTTP-verb block per object; type='Folder'/'Module' create containers; folder/module places the new object there; SDT and Transaction take optional firstItem/firstItemType; Domain takes dataType+length or enumValues; NOT WWP — use genexus_apply_pattern) | popup (popup WebPanel with Form type='layout' body) | sd_panel_create|sd_panel_inspect|sd_panel_edit | save_as (clone parts) | scaffold|translate|sample (forge) | template (kpi_header|empty_state|confirm_dialog) | object_atomic (issue #62: all-or-nothing create/update of an object with variables[], rules[], parms[], properties{} and source in ONE validated call — pre-validates every field before the first save, composes the SDK write primitives, compensates on failure, dryRun previews, validate=true runs the inline Specify pass, update mode guards concurrent writes via expectedVersion). | curl_procedure imports a REST-consumer Procedure from a curl command through the GeneXus SDK.","inputSchema":{"type":"object","required":[],"properties":{"action":{"type":"string","enum":["object","object_atomic","popup","sd_panel_create","sd_panel_inspect","sd_panel_edit","save_as","scaffold","translate","sample","template","curl_procedure"],"description":"Object-creation or scaffold operation to perform."},"curl":{"type":"string","description":"curl_procedure: the curl command to import as a Procedure."},"type":{"type":"string","description":"Object type to create (Transaction, Procedure, WebPanel, SDT, API, Domain, Dashboard, Folder, Module)."},"objectType":{"type":"string","description":"Legacy alias for type when creating an object."},"name":{"type":"string","description":"Name of the object to create, clone, or update."},"newName":{"type":"string","description":"save_as."},"description":{"type":"string","description":"Human-readable description / title of the object."},"dataType":{"type":"string","description":"object Domain/Attribute: primitive type, inline size allowed (Numeric(12,2)). Attribute: fail-closed."},"length":{"type":"integer","description":"object Domain/Attribute."},"decimals":{"type":"integer","description":"object Domain/Attribute."},"signed":{"type":"boolean","description":"object Domain."},"basedOn":{"type":"string","description":"object Domain/Attribute: existing Domain name."},"enumValues":{"type":"array","items":{"type":"object"},"description":"object Domain enum."},"firstItem":{"type":"string","description":"object SDT/Transaction optional: name of the initial structure item/key attribute to seed (SDK requires >=1). Defaults to <ObjectName>Id for Transaction and Item1 for SDT."},"firstItemType":{"type":"string","description":"object SDT/Transaction optional: type of the seeded first item/key attribute (Character/Numeric/VarChar/…). Defaults to Numeric(4) for Transaction and VarChar for SDT."},"folder":{"type":"string","description":"object: Folder destination (created in Root, then moved+verified)."},"module":{"type":"string","description":"object: Module destination (created in Root, then moved+verified)."},"parentPath":{"type":"string","description":"object: folder/module destination (fallback when folder/module absent)."},"mode":{"type":"string","enum":["create","update","auto"],"description":"object_atomic: create (fail if exists), update (fail if missing), auto (default — create or update by existence)."},"variables":{"type":"array","items":{"type":"object","required":["varName"],"properties":{"varName":{"type":"string"},"typeName":{"type":"string"},"length":{"type":"integer"},"decimals":{"type":"integer"},"collection":{"type":"boolean"},"name":{"type":"string"},"basedOn":{"type":"string"},"basedOnAttribute":{"type":"string"}}},"description":"object_atomic: one object per variable — {varName, typeName?, length?, decimals?, collection?}. Validated before any save; errors are attributed to variables[N]."},"rules":{"type":"array","items":{"type":"string"},"description":"object_atomic: rule lines (e.g. \"Parm(in:&Id);\"). Send actual line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before the first save."},"parms":{"type":"array","items":{"type":"string"},"description":"object_atomic: parameter entries rendered into a Parm rule — bare names (\"&Id\") or prefixed (\"out:&Msg\")."},"source":{"type":"string","description":"object_atomic: Source part text. Send actual line breaks; literal backslash sequences \\r\\n, \\n, or \\r are rejected before the first save."},"properties":{"type":"object","description":"object_atomic: object-level properties applied via the genexus_properties path (propertyName → value)."},"expectedVersion":{"type":"string","description":"object_atomic update: optimistic concurrency token returned as `version` by a prior atomic create/update/read; a mismatch fails with ConcurrentModification instead of overwriting concurrent changes."},"validate":{"type":"boolean","description":"object_atomic: run the inline Specify pass (Spec+Gen) before confirming success. On failure with rollbackOnFailure=true, a freshly-created object is deleted so the operation stays all-or-nothing."},"validationMode":{"type":"string","enum":["specify"],"description":"Issue #60: with action=object, run the inline Specify pass (Spec+Gen, no Compile) after creation, returning structured spc*/gen* diagnostics in the same call. Combines with rollbackOnFailure."},"rollbackOnFailure":{"type":"boolean","description":"Issue #60: with action=object and validationMode=specify, roll back the created object when the specify pass reports errors. A fresh object has no pre-write snapshot, so rollback reports rolledBack=false — delete it via genexus_delete_object if spec fails."},"spec":{"type":"object","description":"popup."},"part":{"type":"string","description":"sd_panel_edit/template."},"content":{"type":"string","description":"sd_panel_edit/scaffold/translate."},"includePatternInstance":{"type":"boolean","description":"save_as."},"overwrite":{"type":"boolean","description":"save_as."},"dryRun":{"type":"boolean","description":"popup/save_as/template/object."},"template":{"type":"string","enum":["kpi_header","empty_state","confirm_dialog"],"description":"template."},"args":{"type":"object","description":"template."},"kb":{"type":"string","description":"KB alias."},"baseVersion":{"type":"string","description":"Optimistic concurrency versionToken for atomic create/update."},"updateExisting":{"type":"boolean","default":false,"description":"object_atomic: allow updating existing object if it already exists."}},"examples":[{"action":"object","name":"NewPanel","type":"WebPanel"},{"action":"object","name":"CustomerApi","type":"API"},{"action":"popup","name":"MyPopup","spec":{"host":"Customer"}}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
49
49
|
{"name":"genexus_memory","description":"Per-KB fact store. action: save (fact required; optional target/type/tags; dedups on identical fact+object, bumping a hit count) | recall (filter by target/type/tags — ANY match; no filter returns all) | list (all, newest first) | forget (tombstone by id) | promote (lift a friction-log message into a memory, tagged 'friction') | consolidate (dreaming — merge redundant/overlapping facts within scope; dryRun=true previews, dryRun=false compacts memory.jsonl). Persisted to .gx/memory/memory.jsonl.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["save","recall","list","forget","promote","consolidate"],"description":"Persistent agent-memory operation to perform."},"fact":{"type":"string","description":"save: the fact to remember."},"target":{"type":"string","description":"object name this memory is about."},"type":{"type":"string","description":"object type this memory is about."},"tags":{"type":"array","items":{"type":"string"},"description":"labels for filtering."},"id":{"type":"string","description":"forget: memory id to tombstone."},"message":{"type":"string","description":"promote: friction text to promote into a memory."},"dryRun":{"type":"boolean","description":"consolidate: true previews proposed merges without writing; false (default) applies and compacts memory.jsonl."},"kb":{"type":"string","description":"KB alias."}},"additionalProperties":false,"examples":[{"action":"save","fact":"Customer.Email must be unique","target":"Customer","type":"Transaction","tags":["validation"]},{"action":"recall","target":"Customer"},{"action":"consolidate","dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},
|
|
50
50
|
{"name":"genexus_transfer","description":"Real XPZ export/import over the SDK's IKnowledgeManagerService — dependency-aware, IDE Export/Import parity (NOT the filesystem copy genexus_io/kb_import do). action=export (targets[]+outputFile; includeDependencies=true exports transitive closure) | inspect (explore an .xpz, read-only) | import (apply into KB; dryRun defaults true=preview via ExploreExport; to actually import pass dryRun=false AND confirm=true; confirm=true alone only previews).","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["export","inspect","import"],"description":"XPZ export, inspection, or import operation to perform."},"targets":{"type":"array","items":{"type":"string"},"description":"export: object names to export."},"outputFile":{"type":"string","description":"export: absolute .xpz output path."},"includeDependencies":{"type":"boolean","description":"export: compute transitive dependency closure (Calls, Tables) and export all referenced objects.","default":false},"file":{"type":"string","description":"inspect/import: absolute .xpz path."},"type":{"type":"string","description":"export: disambiguate object type."},"dryRun":{"type":"boolean","description":"import: true (default) previews and imports NOTHING; pass false (with confirm=true) to actually apply. confirm=true alone does not import."},"confirm":{"type":"boolean","description":"import with dryRun=false: required."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"export","targets":["Customer"],"outputFile":"C:\\tmp\\cust.xpz"},{"action":"export","targets":["Customer"],"outputFile":"C:\\tmp\\cust_full.xpz","includeDependencies":true},{"action":"inspect","file":"C:\\tmp\\cust.xpz"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
51
51
|
{"name":"genexus_deploy","description":"Deploy application over the SDK. action=list_targets (read-only, default) enumerates deployment target types (IDeploymentTargetService); action=deploy (destructive, confirm=true) runs IDeploymentService.Deploy(model).","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["list_targets","deploy"],"description":"Deployment-target or deployment execution operation to perform."},"confirm":{"type":"boolean","description":"deploy: required (builds + ships the app)."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list_targets"},{"action":"deploy","confirm":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
52
52
|
{"name":"genexus_generator_reference","description":"Native typed .NET generator references used by GxExternalReference. list and dry-run actions are read-only. add/remove validate a managed assembly when a path is supplied, require optimistic baseVersion for changes, save only the native GeneratorsPart, reread it, and restore the complete generator-property snapshot on verification failure. No lifecycle action runs implicitly.","inputSchema":{"type":"object","additionalProperties":false,"required":["action","environment","generator"],"properties":{"action":{"type":"string","enum":["list","dry_run_add","add","dry_run_remove","remove"],"description":"Typed .NET generator-reference operation to perform."},"environment":{"type":"string","description":"Active GeneXus Environment name; the tool never switches environments."},"generator":{"type":"string","description":"Generator display name, e.g. Default (.NET)."},"assembly":{"type":"string","description":"Assembly file name for add/remove, e.g. SpreadsheetLibrary.dll."},"assemblyPath":{"type":"string","description":"Absolute path or KB-relative path used to validate a managed assembly. Required for add unless found in a standard model/bin location."},"baseVersion":{"type":"string","description":"Optimistic token returned by list or a dry-run. Required for a real state change."},"dryRun":{"type":"boolean","default":false,"description":"Force add/remove to remain read-only."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"Restore and verify the complete prior generator-property snapshot if save/reread diverges."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"action":"list","environment":".Net Environment","generator":"Default (.NET)"},{"action":"dry_run_add","environment":".Net Environment","generator":"Default (.NET)","assembly":"SpreadsheetLibrary.dll","assemblyPath":"C:\\KBs\\Sample\\CSharpModel\\web\\bin\\SpreadsheetLibrary.dll"},{"action":"add","environment":".Net Environment","generator":"Default (.NET)","assembly":"SpreadsheetLibrary.dll","assemblyPath":"C:\\KBs\\Sample\\CSharpModel\\web\\bin\\SpreadsheetLibrary.dll","baseVersion":"sha256:<token>","rollbackOnFailure":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
|
|
53
|
-
{"name":"genexus_wwp","description":"Typed WorkWithPlus action, form-level action, tab, grid, native table-type, and structural edits with dryRun, optimistic concurrency, exact snapshots, post-save reread, projection verification, and rollback. set_table_type mutates only an existing table type through the native PatternInstance SDK and preserves children, bindings, events, names, classes, defaultType, and childrenOrderedList. add_grid creates SDT-collection grids or typed variable grids without a collection. add_user_action creates missing TableActions under a unique TableMain on Empty WebPanels. add_user_action with callObject opens another object (popup, parameters) instead of firing a derived event. list_tabs/tab_schema read the instance tabs and the pattern tab schema. No lifecycle operation is implicit. Settings: embedded and separate WWP templates, paged reads and exact table-class dryRun; saves remain blocked.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","add_action","add_user_action","update_action","move_action","remove_action","add_tab","move_tab","remove_tab","set_table_type","add_grid_attribute","move_grid_column","add_grid_variable","add_grid","list_tabs","tab_schema","replace_web_component_with_user_action","settings_templates","settings_read","settings_edit"],"description":"WorkWithPlus action-group, tab, grid-attribute, or explicit native structural operation to perform."},"name":{"type":"string","description":"Transaction, WebPanel, or WorkWithPlus<Object> host."},"group":{"type":"string","description":"Action group name. add_action creates it when absent; update/remove use it as a filter."},"containerName":{"type":"string","description":"add_user_action: form-level action container, usually TableActions. add_user_action creates missing TableActions under a unique TableMain."},"actionName":{"type":"string","description":"Action name. add_user_action derives the GeneXus event Do<actionName>."},"attribute":{"type":"string","description":"add_grid_attribute/move_grid_column: GeneXus Attribute name or grid-column reference."},"variable":{"type":"string","description":"add_grid_variable: presentation variable name; pair with variableReference for identity-safe writes."},"variableReference":{"type":"string","description":"Verified SDK variable identity in GUID-Name form; required for add_grid_variable."},"gridPath":{"type":"string","description":"move_grid_column/add_grid_variable: explicit grid path when the instance has multiple grids."},"before":{"type":"string","description":"move_grid_column/add_grid_variable: place before this existing column."},"caption":{"type":"string","description":"Action caption or add_grid_variable label."},"basicType":{"type":"string","description":"add_grid_variable: Character or VarChar presentation type."},"length":{"type":"integer","minimum":1,"description":"add_grid_variable: Character/VarChar length."},"procedure":{"type":"string","description":"add/update: associated Procedure; existence is validated against the KB."},"selection":{"type":"string","enum":["single","multiple"],"description":"add/update: execution scope for grid actions."},"enabledWhen":{"type":"string","description":"Availability condition stored verbatim; expression semantics are not validated."},"icon":{"type":"string","description":"add/update: button icon."},"description":{"type":"string","description":"add/update: tooltip or description."},"confirm":{"type":"boolean","description":"Confirmation prompt; required to delete unless dryRun."},"buttonClass":{"type":"string","description":"add/update: theme button class."},"position":{"type":"integer","minimum":0,"description":"Zero-based action or tab index."},"toGroup":{"type":"string","description":"move_action: destination group (created when absent)."},"fromGroup":{"type":"string","description":"move_action: source group (optional; searched across groups when omitted)."},"dryRun":{"type":"boolean","description":"Return a typed diff and versionToken without mutation."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"On a failed write or post-save verification, restore the original PatternInstance when possible."},"controlName":{"type":"string","description":"Tab ControlName."},"title":{"type":"string","description":"add_tab: tab title."},"children":{"type":"array","description":"add_tab controls; flat children are wrapped in a responsive table. Nested table children accept the same control shape.","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["variable","userAction","table"]},"name":{"type":"string"},"caption":{"type":"string"},"description":{"type":"string"},"basicType":{"type":"string"},"length":{"type":"integer","minimum":1},"decimals":{"type":"integer","minimum":0},"controlType":{"type":"string"},"controlValues":{"type":"string"},"controlEmptyItem":{"type":"boolean"},"controlEmptyItemText":{"type":"string"},"columns":{"type":"integer","minimum":1},"themeClass":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}},"additionalProperties":false}},"sourceName":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent name."},"userActionName":{"type":"string","description":"replace_web_component_with_user_action: resulting UserAction name; defaults to sourceName."},"tablePath":{"type":"string","description":"set_table_type: existing table breadcrumb by names or indexed table segments; replace_web_component_with_user_action: full breadcrumb including the source node, for example TableHeader > TableUserRole > EmpresaSelector."},"tableType":{"type":"string","enum":["Regular","Responsive"],"description":"set_table_type: requested native WWP table type. Only the existing table @type changes; defaultType and all child identity/metadata remain guarded."},"gxobject":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent Gxobject to retain; it must match the current node."},"controlType":{"type":"string","enum":["DropDownComponent"],"description":"replace_web_component_with_user_action: resulting UserAction ControlType."},"webComponentLoad":{"type":"string","enum":["On Web Panel load","On first click","On every click"],"description":"DropDownComponent load timing."},"trigger":{"type":"string","enum":["Click","Hover"],"description":"DropDownComponent trigger."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token returned by dryRun/read."},"expectedVersion":{"type":"string","description":"Alias for baseVersion."},"versionToken":{"type":"string","description":"Backward-compatible alias for baseVersion."},"kb":{"type":"string","description":"KB alias."},"kind":{"type":"string","enum":["grid","tabular","webcomponent"],"description":"tab_schema: tab kind to read the pattern schema for."},"callObject":{"type":"string","description":"add_user_action: object the button opens (Name or Type:Name, e.g. WebPanel:ReceiveOrderWP); the action then has no derived event. Not with procedure."},"popup":{"type":"boolean","description":"add_user_action with callObject: open the object in a popup."},"parameters":{"type":"array","items":{"type":"string"},"description":"add_user_action with callObject: ordered parameters; an attribute is its bare name, a variable carries &, an expression is its full text."},"collection":{"type":"string","description":"add_grid: SDT collection variable, e.g. &Lines."},"sdt":{"type":"string","description":"add_grid: the SDT the collection is made of."},"columns":{"type":"array","items":{"description":"SDT item or variable-column object."},"description":"add_grid: SDT items as strings or {item, description}; without collection/sdt, ordered {variable, basicType, length, decimals, description, readOnly} columns. Numeric and string types require length."},"deleteAction":{"type":"boolean","description":"add_grid: add a UDelete image action to the grid."},"template":{"description":"Settings catalog path, wwp:<template-guid>, or unique template name.","type":"string"},"limit":{"type":"integer","minimum":0,"description":"Settings nodes per page; offset=0, limit=0 includes full separate-template XML."},"guid":{"type":"string","description":"Pattern Settings object GUID for settings_* actions."},"nodePath":{"description":"Settings node path returned by settings_read.","type":"string"},"entityKey":{"type":"string"},"value":{"type":"string"},"property":{"description":"Exact SDK property name.","type":"string"},"offset":{"minimum":0,"type":"integer"},"gridName":{"type":"string","description":"add_grid without collection/sdt: variable grid control name (default Grid)."}},"examples":[{"action":"list","name":"SampleOrderWW"},{"action":"add_action","name":"SampleOrderWW","group":"Operations","actionName":"Retry","procedure":"RetrySampleOrder","selection":"multiple","dryRun":true},{"action":"add_tab","name":"SamplePanel","controlName":"Details","title":"Details","children":[{"type":"variable","name":"Status","basicType":"VarChar","length":40},{"type":"userAction","name":"Refresh","caption":"Refresh"}],"dryRun":true},{"action":"add_grid_attribute","name":"SampleOrderWW","attribute":"SampleOrderStatus","caption":"Status","dryRun":true},{"action":"replace_web_component_with_user_action","name":"WorkWithPlusWorkWithPlusMasterPage","sourceName":"EmpresaSelector","userActionName":"EmpresaSelector","tablePath":"TableHeader > TableUserRole > EmpresaSelector","gxobject":"WWP_MasterPageEmpresaSelectorWC","controlType":"DropDownComponent","caption":"&Context.EmpresaDescricao","webComponentLoad":"On every click","trigger":"Click","dryRun":true},{"action":"set_table_type","name":"SamplePanel","tablePath":"TableMain > TableContent > TableLogin","tableType":"Responsive","dryRun":true},{"action":"add_user_action","name":"WorkWithPlusImpressaoConfiguracao","containerName":"TableActions","actionName":"BaixarConfiguracao","caption":"Baixar Configuração","dryRun":true,"rollbackOnFailure":true},{"action":"add_grid","name":"SamplePanel","containerName":"TableContent","gridName":"Grid","columns":[{"variable":"Code","basicType":"Character","length":13},{"variable":"Op","basicType":"Numeric","length":2,"readOnly":false}],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
53
|
+
{"name":"genexus_wwp","description":"Typed WorkWithPlus action, form-level action, tab, grid, native table-type, and structural edits with dryRun, optimistic concurrency, exact snapshots, post-save reread, projection verification, and rollback. set_table_type mutates only an existing table type through the native PatternInstance SDK and preserves children, bindings, events, names, classes, defaultType, and childrenOrderedList. add_grid creates SDT-collection grids or typed variable grids without a collection. add_user_action creates missing TableActions under a unique TableMain on Empty WebPanels. add_user_action with callObject opens another object (popup, parameters) instead of firing a derived event. list_tabs/tab_schema read the instance tabs and the pattern tab schema. No lifecycle operation is implicit. Settings: embedded and separate WWP templates, paged reads and exact table-class dryRun; saves remain blocked.","inputSchema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["list","add_action","add_user_action","update_action","move_action","remove_action","add_tab","move_tab","remove_tab","set_table_type","add_grid_attribute","move_grid_column","add_grid_variable","add_grid","list_tabs","tab_schema","replace_web_component_with_user_action","settings_templates","settings_read","settings_edit"],"description":"WorkWithPlus action-group, tab, grid-attribute, or explicit native structural operation to perform."},"name":{"type":"string","description":"Transaction, WebPanel, or WorkWithPlus<Object> host."},"group":{"type":"string","description":"Action group name. add_action creates it when absent; update/remove use it as a filter."},"containerName":{"type":"string","description":"add_user_action: form-level action container, usually TableActions; Grid addresses the unnamed WorkWith grid for a row-level action next to its standardActions; a path of named ancestors (General/Table/Actions) disambiguates a repeated name. add_user_action creates missing TableActions under a unique TableMain. add_tab: table that receives the synthesized <tabs> (default: unique TableContent, then TableMain)."},"actionName":{"type":"string","description":"Action name. add_user_action derives the GeneXus event Do<actionName>."},"attribute":{"type":"string","description":"add_grid_attribute/move_grid_column: GeneXus Attribute name or grid-column reference."},"variable":{"type":"string","description":"add_grid_variable: presentation variable name; pair with variableReference for identity-safe writes."},"variableReference":{"type":"string","description":"Verified SDK variable identity in GUID-Name form; required for add_grid_variable."},"gridPath":{"type":"string","description":"move_grid_column/add_grid_variable: explicit grid path when the instance has multiple grids."},"before":{"type":"string","description":"move_grid_column/add_grid_variable: place before this existing column."},"caption":{"type":"string","description":"Action caption or add_grid_variable label."},"basicType":{"type":"string","description":"add_grid_variable: Character or VarChar presentation type."},"length":{"type":"integer","minimum":1,"description":"add_grid_variable: Character/VarChar length."},"procedure":{"type":"string","description":"add/update: associated Procedure; existence is validated against the KB."},"selection":{"type":"string","enum":["single","multiple"],"description":"add/update: execution scope for grid actions."},"enabledWhen":{"type":"string","description":"Availability condition stored verbatim; expression semantics are not validated."},"icon":{"type":"string","description":"add/update: button icon."},"description":{"type":"string","description":"add/update: tooltip or description."},"confirm":{"type":"boolean","description":"Confirmation prompt; required to delete unless dryRun."},"buttonClass":{"type":"string","description":"add/update: theme button class."},"position":{"type":"integer","minimum":0,"description":"Zero-based action or tab index. add_user_action: index among the container's existing actions (standardAction and userAction) as list reports them; omitted or past the end appends."},"toGroup":{"type":"string","description":"move_action: destination group (created when absent)."},"fromGroup":{"type":"string","description":"move_action: source group (optional; searched across groups when omitted)."},"dryRun":{"type":"boolean","description":"Return a typed diff and versionToken without mutation."},"rollbackOnFailure":{"type":"boolean","default":true,"description":"On a failed write or post-save verification, restore the original PatternInstance when possible."},"controlName":{"type":"string","description":"Tab ControlName."},"title":{"type":"string","description":"add_tab: tab title."},"children":{"type":"array","description":"add_tab controls; flat children are wrapped in a responsive table. Nested table children accept the same control shape. type=attribute moves an attribute already on the form out of its table (never duplicated) or creates an absent one.","items":{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["variable","userAction","table","attribute"]},"name":{"type":"string"},"attribute":{"type":"string","description":"type=attribute: name or <typeGuid>-<Name>."},"caption":{"type":"string"},"description":{"type":"string"},"basicType":{"type":"string"},"length":{"type":"integer","minimum":1},"decimals":{"type":"integer","minimum":0},"controlType":{"type":"string"},"controlValues":{"type":"string"},"controlEmptyItem":{"type":"boolean"},"controlEmptyItemText":{"type":"string"},"columns":{"type":"integer","minimum":1},"themeClass":{"type":"string"},"children":{"type":"array","items":{"type":"object"}}},"additionalProperties":false}},"sourceName":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent name."},"userActionName":{"type":"string","description":"replace_web_component_with_user_action: resulting UserAction name; defaults to sourceName."},"tablePath":{"type":"string","description":"set_table_type: existing table breadcrumb by names or indexed table segments; replace_web_component_with_user_action: full breadcrumb including the source node, for example TableHeader > TableUserRole > EmpresaSelector."},"tableType":{"type":"string","enum":["Regular","Responsive"],"description":"set_table_type: requested native WWP table type. Only the existing table @type changes; defaultType and all child identity/metadata remain guarded."},"gxobject":{"type":"string","description":"replace_web_component_with_user_action: existing WebComponent Gxobject to retain; it must match the current node."},"controlType":{"type":"string","enum":["DropDownComponent"],"description":"replace_web_component_with_user_action: resulting UserAction ControlType."},"webComponentLoad":{"type":"string","enum":["On Web Panel load","On first click","On every click"],"description":"DropDownComponent load timing."},"trigger":{"type":"string","enum":["Click","Hover"],"description":"DropDownComponent trigger."},"baseVersion":{"type":"string","description":"Optimistic-concurrency token returned by dryRun/read."},"expectedVersion":{"type":"string","description":"Alias for baseVersion."},"versionToken":{"type":"string","description":"Backward-compatible alias for baseVersion."},"kb":{"type":"string","description":"KB alias."},"kind":{"type":"string","enum":["grid","tabular","webcomponent"],"description":"tab_schema: tab kind to read the pattern schema for."},"callObject":{"type":"string","description":"add_user_action: object the button opens (Name or Type:Name, e.g. WebPanel:ReceiveOrderWP); the action then has no derived event. Not with procedure."},"popup":{"type":"boolean","description":"add_user_action with callObject: open the object in a popup."},"parameters":{"type":"array","items":{"type":"string"},"description":"add_user_action with callObject: ordered parameters; an attribute is its bare name, a variable carries &, an expression is its full text."},"collection":{"type":"string","description":"add_grid: SDT collection variable, e.g. &Lines."},"sdt":{"type":"string","description":"add_grid: the SDT the collection is made of."},"columns":{"type":"array","items":{"description":"SDT item or variable-column object."},"description":"add_grid: SDT items as strings or {item, description}; without collection/sdt, ordered {variable, basicType, length, decimals, description, readOnly} columns. Numeric and string types require length."},"deleteAction":{"type":"boolean","description":"add_grid: add a UDelete image action to the grid."},"template":{"description":"Settings catalog path, wwp:<template-guid>, or unique template name.","type":"string"},"limit":{"type":"integer","minimum":0,"description":"Settings nodes per page; offset=0, limit=0 includes full separate-template XML."},"guid":{"type":"string","description":"Pattern Settings object GUID for settings_* actions."},"nodePath":{"description":"Settings node path returned by settings_read.","type":"string"},"entityKey":{"type":"string"},"value":{"type":"string"},"property":{"description":"Exact SDK property name.","type":"string"},"offset":{"minimum":0,"type":"integer"},"gridName":{"type":"string","description":"add_grid without collection/sdt: variable grid control name (default Grid)."}},"examples":[{"action":"list","name":"SampleOrderWW"},{"action":"add_action","name":"SampleOrderWW","group":"Operations","actionName":"Retry","procedure":"RetrySampleOrder","selection":"multiple","dryRun":true},{"action":"add_tab","name":"SamplePanel","controlName":"Details","title":"Details","children":[{"type":"variable","name":"Status","basicType":"VarChar","length":40},{"type":"userAction","name":"Refresh","caption":"Refresh"}],"dryRun":true},{"action":"add_grid_attribute","name":"SampleOrderWW","attribute":"SampleOrderStatus","caption":"Status","dryRun":true},{"action":"replace_web_component_with_user_action","name":"WorkWithPlusWorkWithPlusMasterPage","sourceName":"EmpresaSelector","userActionName":"EmpresaSelector","tablePath":"TableHeader > TableUserRole > EmpresaSelector","gxobject":"WWP_MasterPageEmpresaSelectorWC","controlType":"DropDownComponent","caption":"&Context.EmpresaDescricao","webComponentLoad":"On every click","trigger":"Click","dryRun":true},{"action":"set_table_type","name":"SamplePanel","tablePath":"TableMain > TableContent > TableLogin","tableType":"Responsive","dryRun":true},{"action":"add_user_action","name":"WorkWithPlusImpressaoConfiguracao","containerName":"TableActions","actionName":"BaixarConfiguracao","caption":"Baixar Configuração","dryRun":true,"rollbackOnFailure":true},{"action":"add_grid","name":"SamplePanel","containerName":"TableContent","gridName":"Grid","columns":[{"variable":"Code","basicType":"Character","length":13},{"variable":"Op","basicType":"Numeric","length":2,"readOnly":false}],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":false}},
|
|
54
54
|
{"name":"genexus_kb_diff","description":"Gateway-only filesystem comparison of two KB directories. Requires kbA and kbB aliases or paths; no active KB selection is used. Modification detection compares SHA-256 content per object part, not filesystem metadata. The response reports inventory authority and completeness per side: an absent, unreadable or truncated Objects/ tree is status=Incomplete with complete=false, and only a proven empty Objects/ is reported as an empty model. identityAuthority is the on-disk Objects/<Type>/<Name> naming and is not module-qualified.","inputSchema":{"type":"object","required":["kbA","kbB"],"properties":{"kbA":{"type":"string"},"kbB":{"type":"string"},"mode":{"type":"string","enum":["content","metadata"],"default":"content","description":"content (default) compares SHA-256 over each object part file. metadata restores the cheaper timestamp/part-count heuristic, which cannot see same-metadata content changes; the response labels which one ran in contentComparison."},"maxObjects":{"type":"integer","minimum":1,"default":50000,"description":"Maximum objects enumerated per side. Exceeding it returns status=Incomplete with inventory.truncated=true."}},"examples":[{"kbA":"development","kbB":"staging"},{"kbA":"development","kbB":"staging","mode":"content","maxObjects":5000}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
55
55
|
{"name":"genexus_kb_import","description":"Gateway-only filesystem copy of one object between two KB directories. Requires source and object identity; run lifecycle index afterwards.","inputSchema":{"type":"object","required":["from","name","type"],"properties":{"from":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"to":{"type":"string"}},"examples":[{"from":"C:\\KBs\\source","to":"C:\\KBs\\target","name":"Customer","type":"Transaction"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
|
|
56
56
|
{"name":"genexus_sandbox","description":"Gateway-only filesystem sandbox management; clone or remove a KB directory without SDK dispatch.","inputSchema":{"type":"object","required":["action","name"],"properties":{"action":{"type":"string","enum":["create","remove"],"description":"Sandbox operation to create or remove a KB directory."},"name":{"type":"string"},"from":{"type":"string"},"overwrite":{"type":"boolean"}},"examples":[{"action":"create","name":"probe","from":"C:\\KBs\\base"},{"action":"remove","name":"probe"}]},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
{"name":"genexus_dfd","description":"Read-only entity-relationship diagram of a Transaction or Table, built only from the table relations the SDK reports: extends (N-1) and subordinates (1-N) edges, a Mermaid erDiagram, and the truncation cause.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Transaction or Table name."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Relation hops from the root (default 3)."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Order"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
59
59
|
{"name":"genexus_impact","description":"Read-only affected set of an object over the caller/callee graph: objects with depth, counts by type, a dependencies-first rebuild order, cycles and the cap that truncated it. No risk score.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Object name; a name shared by several objects is refused with their guids and paths."},"guid":{"type":"string","description":"Object GUID."},"entityKey":{"type":"string","description":"Object entity key."},"path":{"type":"string","description":"Object path, with or without the Root Module/ prefix; never falls back to a homonym."},"type":{"type":"string","description":"Object type, to narrow a bare name."},"kb":{"type":"string","description":"KB alias."},"direction":{"type":"string","enum":["up","down","both"],"description":"up: callers (default); down: callees."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Default 2."},"maxNodes":{"type":"integer","minimum":1,"maximum":2000,"description":"Default 200."},"typeFilter":{"type":"string","description":"Only report objects of this type; the traversal is unchanged."}},"examples":[{"name":"PostOrder","direction":"up","maxDepth":3}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
60
60
|
{"name":"genexus_object_context","description":"Read-only context of one object: identity from the index, callers/callees with coverage (fieldTrust partial means not read), and its data model (ER diagram for a Transaction/Table), with what was suppressed.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Object name; a name shared by several objects is refused with their guids and paths."},"guid":{"type":"string","description":"Object GUID."},"entityKey":{"type":"string","description":"Object entity key."},"path":{"type":"string","description":"Object path, with or without the Root Module/ prefix; never falls back to a homonym."},"type":{"type":"string","description":"Object type, to narrow a bare name."},"kb":{"type":"string","description":"KB alias."},"maxDepth":{"type":"integer","minimum":1,"maximum":6,"description":"Default 1."},"maxNodes":{"type":"integer","minimum":1,"maximum":2000,"description":"Default 100."}},"examples":[{"guid":"00000000-0000-0000-0000-000000000000"}]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},
|
|
61
|
-
{"name":"genexus_workwith","description":"Typed authoring of actions
|
|
61
|
+
{"name":"genexus_workwith","description":"Typed authoring and removal of actions, action parameters and selection filters for standard WorkWith pattern instances. action=list_actions|add_action|remove_action|list_filters|add_filter_attribute. Preserves strict boundary with WorkWithPlus (genexus_wwp). add_action authors a custom action with Procedure call, ordered parameters, condition expression, and caption on a target tab (default General) through the native SDK. remove_action removes an existing action from a target tab. list_filters reads Selection filter attributes and conditions. add_filter_attribute authors a typed filter attribute with conditions on the Selection filter. Supports dryRun; never mutates derived objects directly.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Target Transaction or standard WorkWith PatternInstance name (e.g. 'TestTrn' or 'WorkWithWebTestTrn')."},"action":{"type":"string","enum":["list_actions","add_action","remove_action","list_filters","add_filter_attribute"],"default":"list_actions","description":"Operation to perform: list_actions (read existing actions on tabs), add_action (author a typed action with Procedure call), remove_action (remove a typed action from a target tab), list_filters (read Selection filter attributes and conditions), or add_filter_attribute (author a typed filter attribute with conditions)."},"tab":{"type":"string","default":"General","description":"Target tab code on the View (default 'General')."},"actionName":{"type":"string","description":"Unique name for the action (required for add_action and remove_action, e.g. 'ExecutaTeste')."},"caption":{"type":"string","description":"Display caption for the button (defaults to actionName)."},"procedure":{"type":"string","description":"Target Procedure name or GUID to invoke on action click (required for add_action)."},"parameters":{"type":"array","items":{"type":"string"},"description":"Ordered parameters passed to the Procedure (attributes, variables, or expressions, e.g. ['procUrlTeste(\"General\")', 'TestTrnEmpresaId'])."},"condition":{"type":"string","description":"Optional condition expression to determine whether the action is enabled."},"level":{"type":"string","description":"Target level name or id in the WorkWith instance (defaults to first/root level)."},"attribute":{"type":"string","description":"Filter attribute name (required for add_filter_attribute): an identifier, optionally prefixed with & for a variable; stored as given."},"description":{"type":"string","description":"Optional description of the filter attribute (add_filter_attribute); stored as given."},"conditions":{"type":"array","items":{"type":"string"},"description":"Filter conditions added with the attribute, in order; empty or duplicate conditions are refused; not compiled."},"domain":{"type":"string","description":"Optional Domain name for the filter variable; stored as given, not validated against the KB."},"dryRun":{"type":"boolean","default":false,"description":"When true, returns the execution plan without persisting changes to the KB."},"kb":{"type":"string","description":"KB alias."}},"examples":[{"name":"Customer","action":"list_actions"},{"name":"Customer","action":"list_filters"},{"name":"TestTrn","action":"add_action","tab":"General","actionName":"ExecutaTeste","caption":"Executa Teste","procedure":"procExecutaTeste","parameters":["procUrlTeste(\"General\")","TestTrnEmpresaId"],"condition":"TestTrnPropria","dryRun":true},{"name":"TestTrn","action":"remove_action","tab":"General","actionName":"ExecutaTeste","dryRun":true},{"name":"TestTrn","action":"add_filter_attribute","attribute":"CustomerName","description":"Customer Name","conditions":["CustomerName like &CustomerName when not &CustomerName.IsEmpty();"],"dryRun":true}]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}}
|
|
62
62
|
]
|
|
Binary file
|