DAXE XL Project Builder
DAXE XL Project Builder is a VS Code extension for generating xFuse/DAXE XL Angular element projects from a selected DAXE tenant flow and an Excel template.
The extension provides a DAXE XL Builder panel for authentication and flow selection, plus a @daxe-xl chat participant that understands natural-language generation and update requests.
For the full usage guide, examples, custom-requirement behavior, and deployment flow, see docs/user-guide.md.
Features
- Sign in to a DAXE server and switch tenant context.
- Select tenant and published flow; available forms are loaded from flow metadata and resolved by the chat agent.
- Generate a DAXE XL Angular project from an attached Excel template.
- Generate one custom element per workbook sheet.
- Match Excel headers to selected form field descriptions and field IDs.
- Generate dynamic
daxe-header-data.ts metadata for each element.
- Update an existing generated element from a new Excel template and the currently selected flow.
- Use bundled template code as LLM knowledge to implement custom DAXE XL service/component requirements.
- Apply safe metadata edits such as hide/remove/rename/required fields, record-number aliasing, and classification.
- Add within-sheet import records functionality when requested.
- Build, test, install, package, and upload generated projects from chat.
Requirements
- VS Code 1.90.0 or newer.
- Access to a DAXE server and valid tenant credentials.
- A VS Code chat language model provider for
@daxe-xl natural-language interpretation.
- Node.js/npm available on PATH for generated project build/install actions.
.npmrc configured in the workspace or user home when daxe-ui-sdk@2026.05.1-beta is served from a private registry.
Getting Started
- Open the
DAXE XL Builder activity bar view.
- Sign in with DAXE server, organization, username, and password.
- Select tenant.
- Search and select a published flow.
- Open VS Code Chat.
- Attach or reference an Excel template and invoke
@daxe-xl.
If daxe-ui-sdk requires a private registry, put .npmrc in the workspace root before generation. The extension passes that .npmrc to the SDK schematic command and copies it into the generated project so later install/build/deployment steps can resolve the SDK.
Example:
@daxe-xl generate daxe-xl project from attached template sheet "Header"
Builder Commands
The extension contributes these VS Code commands:
DAXE XL: Open Builder
DAXE XL: Logout
DAXE XL: Open Chat Agent
The Builder panel also includes:
Refresh Metadata: clears current loaded metadata and fetches tenants/flows fresh from APIs.
Deployed Projects: lists DAXE UI projects for the selected tenant with manual refresh and automatic refresh after upload.
Open Chat Agent: opens VS Code Chat ready for @daxe-xl.
Logout: clears the current authentication session.
Chat Commands
The chat participant is:
@daxe-xl
Slash command:
@daxe-xl /generate generate daxe-xl project from attached template sheet "Header"
Natural-language examples:
@daxe-xl generate daxe-xl project from attached template sheet "Header"
@daxe-xl generate daxe-xl project for sheet "Material Create" output "material-create-xl"
@daxe-xl attached excel file has multiple sheets, create one element for each sheet
Multi-Sheet Generation
If the prompt asks for each/every/all sheets, the extension creates one DAXE XL custom element per workbook sheet.
Example:
@daxe-xl attached excel file has multiple sheets, for each sheet one element should be created
Generated element names are sanitized from sheet names, for example:
Change Price Group -> daxe-xl-change-price-group
Updating Existing Generated Elements
After a project is generated, the extension remembers the last generated project path.
To update one generated element using a changed Builder flow and a new Excel template:
@daxe-xl update element "daxe-xl-change-price-group" from attached template sheet "Change Price Group"
The extension uses the currently selected tenant/flow/form metadata, remaps the attached sheet, and updates the target element metadata.
Supported Follow-Up Edits
Examples:
@daxe-xl Customer Account Number and record number both are same so update all elements accordingly
@daxe-xl hide Customer Group in all elements
@daxe-xl remove Price Group from element "daxe-xl-change-price-group"
@daxe-xl make Distribution Channel required
@daxe-xl enable classification for the generated project
Classification is disabled by default and is only added when explicitly requested.
Within-Sheet Import Records
Examples:
@daxe-xl implement within-sheet import records in all elements based on field "SAP Material Number" with record number sequence validation yes
@daxe-xl implement within-sheet import records in element "daxe-xl-change-price-group" based on column D with record number sequence validation no
The extension asks for missing details when required:
- Target element, or all elements.
- Field/column to import from.
- Whether record number sequence validation should be enabled.
Generated Project Actions
Examples:
@daxe-xl build the project
@daxe-xl test the generated project
@daxe-xl install dependencies
@daxe-xl generate deployment zip
@daxe-xl check build log for projectId "152e4ecb-4c9d-4ac3-ae04-2e343a2651bf"
@daxe-xl check build log and fix existing project name "DAXE-XL-2"
Deployment zips contain one top-level folder named after the zip file, with only the files needed to install dependencies and generate the element JavaScript: root build config files, package.json, .npmrc when present, and buildable src/** files. They exclude generated output, manifest.xml, src/main.ts, README files, specs, assistant docs, node_modules, and workspace metadata.
Build-log checks call the DAXE custom-element build output API, download the returned build.log file, and show the log in chat. If the user asks to fix the failure, the agent analyzes the log against the generated project and creates a pending change plan that must be accepted before files are modified.
Upload examples:
@daxe-xl deploy new project with name daxe-xl-4
@daxe-xl upload to existing daxe-xl-project
@daxe-xl update deployment zip to existing project daxe-xl-project
Upload packages the generated project, sends the zip to /dms/custom-element/upload as multipart form data, keeps the DAXE UI projectDocId as the DMS project id, stores the returned upload file id separately for deployment context, updates DAXE UI metadata through /daxe/v1.0/daxe-ui, and verifies the project through the DAXE UI project list API. For existing projects, name, description, version, and detail are optional when the project can be resolved.
Generated Files
Generated projects include:
src/app/daxe-element/{element}/daxe-header-data.ts
src/app/daxe-element/{element}/{element}.component.ts
src/app/services/
src/app/pipes/
src/app/daxe-components.ts
src/app/element.module.ts
src/app/elements.json
daxe-xl-field-mapping.json
docs/source-templates/{uploaded-template}
Newer generated/update flows also write assistant handoff files for Copilot/Codex:
AGENTS.md
.github/copilot-instructions.md
docs/daxe-xl-assistant-context.json
.agents/skills/daxe-xl-project/SKILL.md
These handoff files are excluded from deployment zips. The .agents/skills/daxe-xl-project/SKILL.md file gives Codex a repo-local DAXE XL skill for generated-project work, including custom Excel workbook layouts, MDO record conversion, and deployment packaging rules.
daxe-xl-field-mapping.json records the original Excel file path, the copied source template, selected sheets, matched headers, and unmatched headers so users or Codex can review missed mappings later.
To create or refresh these files for an older generated project:
@daxe-xl refresh assistant handoff files
API Notes
Flow list API:
/process/business-central/flow-config?status=PUBLISHED
Deployment upload API:
POST /daxe/v1.0/daxe-ui?daxeId={daxeId}
Privacy And Security
- Credentials and tokens are handled through the extension authentication services.
- The extension sends DAXE API requests only to the configured DAXE server/tenant API URLs.
- Excel templates are read locally by the extension for header mapping.
- The active VS Code chat model receives the user's request and bounded project/context metadata so it can interpret intent.
- File edits are applied by validated extension code scoped to generated DAXE XL projects.
License
This extension is proprietary software. See LICENSE for terms.