@enfyra/mcp-server 0.1.44 → 0.1.46
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/dist/lib/mcp-examples.js +4 -9
- package/dist/lib/mcp-examples.js.map +1 -1
- package/dist/lib/mcp-instructions.js +1 -1
- package/dist/lib/mcp-instructions.js.map +1 -1
- package/dist/lib/platform-operation-tools.d.ts +36 -0
- package/dist/lib/platform-operation-tools.js +301 -28
- package/dist/lib/platform-operation-tools.js.map +1 -1
- package/dist/lib/required-knowledge.js +3 -9
- package/dist/lib/required-knowledge.js.map +1 -1
- package/dist/lib/tool-routing.js +2 -2
- package/dist/lib/tool-routing.js.map +1 -1
- package/dist/lib/toolset-filter.js +6 -0
- package/dist/lib/toolset-filter.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/mcp-examples.js
CHANGED
|
@@ -2160,7 +2160,7 @@ onMounted(() => fetchOrders())
|
|
|
2160
2160
|
],
|
|
2161
2161
|
},
|
|
2162
2162
|
{
|
|
2163
|
-
name: '
|
|
2163
|
+
name: 'Builder-reviewed modal and drawer footer actions',
|
|
2164
2164
|
code: `<template>
|
|
2165
2165
|
<CommonModal
|
|
2166
2166
|
v-model:open="open"
|
|
@@ -2183,14 +2183,9 @@ onMounted(() => fetchOrders())
|
|
|
2183
2183
|
</CommonModal>
|
|
2184
2184
|
</template>`,
|
|
2185
2185
|
notes: [
|
|
2186
|
-
'
|
|
2187
|
-
'
|
|
2188
|
-
'
|
|
2189
|
-
'cancelAction defaults to neutral outline. Use dangerAction for irreversible destructive work and tone: "primary" for Keep editing in discard dialogs.',
|
|
2190
|
-
'Every trigger/body action button inside CommonModal, CommonDrawer, or UModal should use type="button" unless it intentionally submits a form.',
|
|
2191
|
-
'Use @click.stop.prevent on body action buttons so clicks do not bubble to row/page triggers.',
|
|
2192
|
-
'Open modal/drawer shells immediately, then load content inside them; do not close and reopen after an API call.',
|
|
2193
|
-
'Keep destructive final actions disabled until all confirmation inputs are valid.',
|
|
2186
|
+
'Use build_extension_modal or build_extension_drawer to generate this shape instead of hand-writing the component contract.',
|
|
2187
|
+
'Use review_extension_ui_contract before saving snippets with modals, drawers, fields, or native buttons.',
|
|
2188
|
+
'Extension validation rejects common field controls without class="w-full" unless marked data-compact or data-inline.',
|
|
2194
2189
|
],
|
|
2195
2190
|
},
|
|
2196
2191
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-examples.js","sourceRoot":"","sources":["../../src/lib/mcp-examples.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-examples.js","sourceRoot":"","sources":["../../src/lib/mcp-examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ export function buildMcpServerInstructions(apiBaseUrl, options = {}) {
|
|
|
22
22
|
'- For target sanity checks, call `get_enfyra_api_context`; do not load broad metadata only to confirm the API base.',
|
|
23
23
|
'- When the goal is clear but the tool path is not, call `discover_enfyra_workflows` with intent/risk/surface. Use `detail: "plan"` before writes, follow `primaryPath`, and treat `avoidTools` as hard negative-routing boundaries.',
|
|
24
24
|
'- Discover before deciding, then inspect narrowly. Use `inspect_table`, `inspect_route`, `inspect_feature`, `search_admin_extensions`, or `search_runtime_zone` for the exact table/route/feature/runtime artifact. Run broad discovery tools sequentially, not in parallel.',
|
|
25
|
-
'- Load examples only when needed with `get_enfyra_examples`. For OAuth use `get_enfyra_examples({ category: "oauth-setup" })`. For extension UI, call `get_extension_theme_contract` before writing or reviewing UI, use `build_extension_*` tools for high-contract components such as drawers, modals, page shell headers/actions, permission gates, empty states,
|
|
25
|
+
'- Load examples only when needed with `get_enfyra_examples`. For OAuth use `get_enfyra_examples({ category: "oauth-setup" })`. For extension UI, call `get_extension_theme_contract` before writing or reviewing UI, use `build_extension_*` tools for high-contract components such as drawers, modals, page shell headers/actions, permission gates, empty states, resource lists, FormEditor, Widget, menu/account panel registries, tabs, and upload modals, and call `get_theme_class_reference` only when exact classes are needed.',
|
|
26
26
|
'- Prefer the most specific business operation tool over raw metadata CRUD.',
|
|
27
27
|
'- Before any write, call `get_enfyra_required_knowledge({ scope })` with the right scope and pass returned ack keys into write tools. Choose scope by task domain:',
|
|
28
28
|
' • `schema` — table, column, relation, record CRUD, route permission, guard, field permission, column rule, cache reload, GraphQL enablement, log debug.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../src/lib/mcp-instructions.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,UAAU;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,cAAc,EAAE,GAAG,IAAI,UAAU;QACjC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,0BAA0B,CAAC,UAAU,EAAE,UAAiC,EAAE;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;IAEvD,OAAO;QACL,eAAe;QACf,EAAE;QACF,gCAAgC,IAAI,KAAK;QACzC,wBAAwB,cAAc,YAAY,gBAAgB,KAAK;QACvE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,EAAE;QACF,qBAAqB;QACrB,qJAAqJ;QACrJ,qHAAqH;QACrH,qOAAqO;QACrO,8QAA8Q;QAC9Q,
|
|
1
|
+
{"version":3,"file":"mcp-instructions.js","sourceRoot":"","sources":["../../src/lib/mcp-instructions.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,UAAU;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,cAAc,EAAE,GAAG,IAAI,UAAU;QACjC,gBAAgB,EAAE,GAAG,IAAI,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,0BAA0B,CAAC,UAAU,EAAE,UAAiC,EAAE;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;IAEvD,OAAO;QACL,eAAe;QACf,EAAE;QACF,gCAAgC,IAAI,KAAK;QACzC,wBAAwB,cAAc,YAAY,gBAAgB,KAAK;QACvE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,EAAE;QACF,qBAAqB;QACrB,qJAAqJ;QACrJ,qHAAqH;QACrH,qOAAqO;QACrO,8QAA8Q;QAC9Q,2gBAA2gB;QAC3gB,4EAA4E;QAC5E,oKAAoK;QACpK,2JAA2J;QAC3J,uJAAuJ;QACvJ,8IAA8I;QAC9I,yDAAyD;QACzD,4EAA4E;QAC5E,sMAAsM;QACtM,mLAAmL;QACnL,8LAA8L;QAC9L,EAAE;QACF,0BAA0B;QAC1B,uHAAuH;QACvH,sLAAsL;QACtL,gLAAgL;QAChL,iLAAiL;QACjL,yLAAyL;QACzL,kKAAkK;QAClK,0HAA0H;QAC1H,4LAA4L;QAC5L,EAAE;QACF,+BAA+B;QAC/B,4HAA4H;QAC5H,4GAA4G;QAC5G,mIAAmI;QACnI,kJAAkJ;QAClJ,oNAAoN;QACpN,iKAAiK;QACjK,gIAAgI;QAChI,EAAE;QACF,+BAA+B;QAC/B,iIAAiI;QACjI,uJAAuJ;QACvJ,yOAAyO;QACzO,+JAA+J;QAC/J,iMAAiM;QACjM,wSAAwS;QACxS,qLAAqL;QACrL,kPAAkP;QAClP,+PAA+P;QAC/P,EAAE;QACF,4BAA4B;QAC5B,0MAA0M;QAC1M,oHAAoH;QACpH,kIAAkI;QAClI,8MAA8M;QAC9M,kNAAkN;QAClN,wLAAwL;QACxL,EAAE;QACF,uIAAuI;KACxI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -39,6 +39,42 @@ export declare function buildExtensionResourceListSnippet(input: any): {
|
|
|
39
39
|
snippet: string;
|
|
40
40
|
contract: string[];
|
|
41
41
|
};
|
|
42
|
+
export declare function buildExtensionFormEditorSnippet(input: any): {
|
|
43
|
+
action: string;
|
|
44
|
+
component: string;
|
|
45
|
+
snippet: string;
|
|
46
|
+
contract: string[];
|
|
47
|
+
};
|
|
48
|
+
export declare function buildExtensionWidgetSnippet(input: any): {
|
|
49
|
+
action: string;
|
|
50
|
+
component: string;
|
|
51
|
+
snippet: string;
|
|
52
|
+
warnings: string[];
|
|
53
|
+
contract: string[];
|
|
54
|
+
};
|
|
55
|
+
export declare function buildExtensionMenuNotificationSnippet(input: any): {
|
|
56
|
+
action: string;
|
|
57
|
+
snippet: string;
|
|
58
|
+
contract: string[];
|
|
59
|
+
};
|
|
60
|
+
export declare function buildExtensionAccountPanelSnippet(input: any): {
|
|
61
|
+
action: string;
|
|
62
|
+
snippet: string;
|
|
63
|
+
contract: string[];
|
|
64
|
+
};
|
|
65
|
+
export declare function buildExtensionTabsSnippet(input: any): {
|
|
66
|
+
action: string;
|
|
67
|
+
component: string;
|
|
68
|
+
snippet: string;
|
|
69
|
+
contract: string[];
|
|
70
|
+
};
|
|
71
|
+
export declare function buildExtensionUploadModalSnippet(input: any): {
|
|
72
|
+
action: string;
|
|
73
|
+
component: string;
|
|
74
|
+
snippet: string;
|
|
75
|
+
companionSnippet: string;
|
|
76
|
+
contract: string[];
|
|
77
|
+
};
|
|
42
78
|
export declare function reviewExtensionUiContract(code: any): {
|
|
43
79
|
action: string;
|
|
44
80
|
valid: boolean;
|
|
@@ -512,6 +512,16 @@ export function buildExtensionModalSnippet(input) {
|
|
|
512
512
|
function jsObjectLiteral(entries) {
|
|
513
513
|
return `{ ${entries.filter(Boolean).join(', ')} }`;
|
|
514
514
|
}
|
|
515
|
+
function jsArrayLiteral(values) {
|
|
516
|
+
return `[${(values || []).map(quoteJsString).join(', ')}]`;
|
|
517
|
+
}
|
|
518
|
+
function attrStaticOrBound(name, value, expression) {
|
|
519
|
+
if (expression)
|
|
520
|
+
return `:${name}="${expression}"`;
|
|
521
|
+
if (value === undefined || value === null || value === '')
|
|
522
|
+
return null;
|
|
523
|
+
return `${name}="${String(value).replace(/"/g, '"')}"`;
|
|
524
|
+
}
|
|
515
525
|
function buildHeaderActionLiteral(action) {
|
|
516
526
|
const entries = [
|
|
517
527
|
action.id ? `id: ${quoteJsString(action.id)}` : null,
|
|
@@ -643,6 +653,189 @@ export function buildExtensionResourceListSnippet(input) {
|
|
|
643
653
|
],
|
|
644
654
|
};
|
|
645
655
|
}
|
|
656
|
+
export function buildExtensionFormEditorSnippet(input) {
|
|
657
|
+
const tag = input.lazy === false ? 'FormEditor' : 'FormEditorLazy';
|
|
658
|
+
const attrs = [
|
|
659
|
+
`v-model="${input.model || 'form'}"`,
|
|
660
|
+
`v-model:errors="${input.errors || 'errors'}"`,
|
|
661
|
+
attrStaticOrBound('table-name', input.tableName, input.tableNameExpression),
|
|
662
|
+
input.mode ? `mode="${input.mode}"` : null,
|
|
663
|
+
input.loadingExpression ? `:loading="${input.loadingExpression}"` : null,
|
|
664
|
+
input.layout ? `layout="${input.layout}"` : null,
|
|
665
|
+
input.includes?.length ? `:includes="${jsArrayLiteral(input.includes)}"` : null,
|
|
666
|
+
input.excluded?.length ? `:excluded="${jsArrayLiteral(input.excluded)}"` : null,
|
|
667
|
+
input.sectionsExpression ? `:sections="${input.sectionsExpression}"` : null,
|
|
668
|
+
input.fieldMapExpression ? `:field-map="${input.fieldMapExpression}"` : null,
|
|
669
|
+
input.virtualFieldsExpression ? `:virtual-fields="${input.virtualFieldsExpression}"` : null,
|
|
670
|
+
input.currentRecordIdExpression ? `:current-record-id="${input.currentRecordIdExpression}"` : null,
|
|
671
|
+
input.hasChangedHandler ? `@has-changed="${input.hasChangedHandler}"` : null,
|
|
672
|
+
input.virtualFieldEmitHandler ? `@virtual-field-emit="${input.virtualFieldEmitHandler}"` : null,
|
|
673
|
+
].filter(Boolean);
|
|
674
|
+
const snippet = [
|
|
675
|
+
`<${tag}`,
|
|
676
|
+
...attrs.map((attr) => ` ${attr}`),
|
|
677
|
+
'/>',
|
|
678
|
+
].join('\n');
|
|
679
|
+
return {
|
|
680
|
+
action: 'extension_form_editor_built',
|
|
681
|
+
component: tag,
|
|
682
|
+
snippet,
|
|
683
|
+
contract: [
|
|
684
|
+
'Prefer FormEditor/FormEditorLazy for direct table-backed forms instead of hand-built UInput/UTextarea fields.',
|
|
685
|
+
'Use v-model for record state and v-model:errors for validation errors.',
|
|
686
|
+
'Use includes/sections to keep generated forms focused; do not expose compiledCode or unrelated system fields.',
|
|
687
|
+
'Use fieldMap only for behavior/renderer overrides such as code fields or custom labels.',
|
|
688
|
+
],
|
|
689
|
+
};
|
|
690
|
+
}
|
|
691
|
+
export function buildExtensionWidgetSnippet(input) {
|
|
692
|
+
const attrs = [`:id="${typeof input.id === 'number' ? input.id : quoteJsString(input.id)}"`];
|
|
693
|
+
for (const [key, value] of Object.entries(input.props || {})) {
|
|
694
|
+
attrs.push(`:${key}="${value}"`);
|
|
695
|
+
}
|
|
696
|
+
for (const [event, handler] of Object.entries(input.events || {})) {
|
|
697
|
+
attrs.push(`@${event}="${handler}"`);
|
|
698
|
+
}
|
|
699
|
+
return {
|
|
700
|
+
action: 'extension_widget_built',
|
|
701
|
+
component: 'Widget',
|
|
702
|
+
snippet: `<Widget ${attrs.join(' ')} />`,
|
|
703
|
+
warnings: typeof input.id === 'number' ? [] : ['Widget ids should be numeric enfyra_extension ids; do not pass extension name or extensionId string.'],
|
|
704
|
+
contract: [
|
|
705
|
+
'Widget :id is the numeric enfyra_extension id, not name or extensionId.',
|
|
706
|
+
'Pass safe props/events; keep page-level mutation and modal ownership in the page unless the widget intentionally owns the full workflow.',
|
|
707
|
+
],
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
export function buildExtensionMenuNotificationSnippet(input) {
|
|
711
|
+
const targetEntries = [
|
|
712
|
+
input.targetId !== undefined ? `id: ${quoteJsString(input.targetId)}` : null,
|
|
713
|
+
input.path ? `path: ${quoteJsString(input.path)}` : null,
|
|
714
|
+
input.route ? `route: ${quoteJsString(input.route)}` : null,
|
|
715
|
+
];
|
|
716
|
+
const entries = [
|
|
717
|
+
`id: ${quoteJsString(input.id || 'extension-menu-notification')}`,
|
|
718
|
+
`target: ${jsObjectLiteral(targetEntries)}`,
|
|
719
|
+
input.valueExpression ? `value: ${input.valueExpression}` : input.value !== undefined ? `value: ${quoteJsString(input.value)}` : null,
|
|
720
|
+
`color: ${quoteJsString(input.color || 'primary')}`,
|
|
721
|
+
input.title ? `title: ${quoteJsString(input.title)}` : null,
|
|
722
|
+
typeof input.order === 'number' ? `order: ${input.order}` : null,
|
|
723
|
+
];
|
|
724
|
+
return {
|
|
725
|
+
action: 'extension_menu_notification_built',
|
|
726
|
+
snippet: [
|
|
727
|
+
'const { register: registerMenuNotification } = useMenuNotificationRegistry();',
|
|
728
|
+
`registerMenuNotification(${jsObjectLiteral(entries)});`,
|
|
729
|
+
].join('\n'),
|
|
730
|
+
contract: [
|
|
731
|
+
'Use count/value only when the signal source already owns an exact or bounded count.',
|
|
732
|
+
'Omit value for a dot-only notification when realtime only proves new attention exists.',
|
|
733
|
+
'Do not fetch destination domain lists solely to decorate the menu.',
|
|
734
|
+
],
|
|
735
|
+
};
|
|
736
|
+
}
|
|
737
|
+
export function buildExtensionAccountPanelSnippet(input) {
|
|
738
|
+
const entries = [
|
|
739
|
+
`id: ${quoteJsString(input.id || 'extension-account-panel-item')}`,
|
|
740
|
+
typeof input.order === 'number' ? `order: ${input.order}` : null,
|
|
741
|
+
input.label ? `label: ${quoteJsString(input.label)}` : null,
|
|
742
|
+
input.description ? `description: ${quoteJsString(input.description)}` : null,
|
|
743
|
+
input.icon ? `icon: ${quoteJsString(input.icon)}` : null,
|
|
744
|
+
input.countExpression ? `count: ${input.countExpression}` : input.count !== undefined ? `count: ${quoteJsString(input.count)}` : null,
|
|
745
|
+
input.badgeExpression ? `badge: ${input.badgeExpression}` : input.badge !== undefined ? `badge: ${quoteJsString(input.badge)}` : null,
|
|
746
|
+
input.badgeColor ? `badgeColor: ${quoteJsString(input.badgeColor)}` : null,
|
|
747
|
+
input.trailingIcon ? `trailingIcon: ${quoteJsString(input.trailingIcon)}` : null,
|
|
748
|
+
input.expandedExpression ? `expanded: ${input.expandedExpression}` : null,
|
|
749
|
+
input.contentComponent ? `contentComponent: ${input.contentComponent}` : null,
|
|
750
|
+
input.contentPropsExpression ? `contentProps: ${input.contentPropsExpression}` : null,
|
|
751
|
+
input.onClick ? `onClick: ${input.onClick}` : null,
|
|
752
|
+
input.onToggle ? `onToggle: ${input.onToggle}` : null,
|
|
753
|
+
];
|
|
754
|
+
return {
|
|
755
|
+
action: 'extension_account_panel_item_built',
|
|
756
|
+
snippet: [
|
|
757
|
+
'const { register: registerAccountPanelItem } = useAccountPanelRegistry();',
|
|
758
|
+
`registerAccountPanelItem(${jsObjectLiteral(entries)});`,
|
|
759
|
+
].join('\n'),
|
|
760
|
+
contract: [
|
|
761
|
+
'Prefer data-driven account panel rows over fully custom row components.',
|
|
762
|
+
'Use count for notification-style chips; count takes precedence over badge.',
|
|
763
|
+
'Use onClick for direct actions and onToggle/contentComponent for expandable inline UI.',
|
|
764
|
+
],
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
export function buildExtensionTabsSnippet(input) {
|
|
768
|
+
const model = input.model || 'activeTab';
|
|
769
|
+
const items = input.itemsExpression || 'tabs';
|
|
770
|
+
const body = input.body || '<div>{{ item.label }}</div>';
|
|
771
|
+
const snippet = [
|
|
772
|
+
`<UTabs v-model="${model}" :items="${items}" class="w-full">`,
|
|
773
|
+
' <template #content="{ item }">',
|
|
774
|
+
indentLines(normalizeVueBodySnippet(body).code, 4),
|
|
775
|
+
' </template>',
|
|
776
|
+
'</UTabs>',
|
|
777
|
+
].join('\n');
|
|
778
|
+
return {
|
|
779
|
+
action: 'extension_tabs_built',
|
|
780
|
+
component: 'UTabs',
|
|
781
|
+
snippet,
|
|
782
|
+
contract: [
|
|
783
|
+
'Use app-level UTabs chrome instead of custom tab bars.',
|
|
784
|
+
'Do not add local full-width bottom borders/dividers to tab lists.',
|
|
785
|
+
'Keep tab items data-driven and render panel content through #content.',
|
|
786
|
+
],
|
|
787
|
+
};
|
|
788
|
+
}
|
|
789
|
+
export function buildExtensionUploadModalSnippet(input) {
|
|
790
|
+
const model = input.model || 'showUploadModal';
|
|
791
|
+
const attrs = [
|
|
792
|
+
`v-model="${model}"`,
|
|
793
|
+
`title="${String(input.title || 'Upload Files').replace(/"/g, '"')}"`,
|
|
794
|
+
`accept="${input.accept || '*/*'}"`,
|
|
795
|
+
input.multiple !== false ? ':multiple="true"' : ':multiple="false"',
|
|
796
|
+
input.maxSizeExpression ? `:max-size="${input.maxSizeExpression}"` : ':max-size="10 * 1024 * 1024"',
|
|
797
|
+
input.loadingExpression ? `:loading="${input.loadingExpression}"` : null,
|
|
798
|
+
input.uploadProgressExpression ? `:upload-progress="${input.uploadProgressExpression}"` : null,
|
|
799
|
+
input.fileProgressExpression ? `:file-progress="${input.fileProgressExpression}"` : null,
|
|
800
|
+
input.dragText ? `drag-text="${String(input.dragText).replace(/"/g, '"')}"` : null,
|
|
801
|
+
input.acceptText ? `accept-text="${String(input.acceptText).replace(/"/g, '"')}"` : null,
|
|
802
|
+
input.uploadText ? `upload-text="${String(input.uploadText).replace(/"/g, '"')}"` : null,
|
|
803
|
+
input.uploadingText ? `uploading-text="${String(input.uploadingText).replace(/"/g, '"')}"` : null,
|
|
804
|
+
`@upload="${input.uploadHandler || 'handleUpload'}"`,
|
|
805
|
+
input.errorHandler ? `@error="${input.errorHandler}"` : null,
|
|
806
|
+
].filter(Boolean);
|
|
807
|
+
const headerContent = input.headerContent ? [
|
|
808
|
+
'>',
|
|
809
|
+
' <template #header-content>',
|
|
810
|
+
indentLines(normalizeVueBodySnippet(input.headerContent).code, 4),
|
|
811
|
+
' </template>',
|
|
812
|
+
'</CommonUploadModal>',
|
|
813
|
+
] : ['/>'];
|
|
814
|
+
return {
|
|
815
|
+
action: 'extension_upload_modal_built',
|
|
816
|
+
component: 'CommonUploadModal',
|
|
817
|
+
snippet: [
|
|
818
|
+
'<CommonUploadModal',
|
|
819
|
+
...attrs.map((attr) => ` ${attr}`),
|
|
820
|
+
...headerContent,
|
|
821
|
+
].join('\n'),
|
|
822
|
+
companionSnippet: [
|
|
823
|
+
'const {',
|
|
824
|
+
' uploadProgress,',
|
|
825
|
+
' trackedUploadProgressById,',
|
|
826
|
+
' beginTrackedUploadProgress,',
|
|
827
|
+
' getUploadProgressHeaders,',
|
|
828
|
+
' resetUploadProgress,',
|
|
829
|
+
'} = useFileUploadProgress();',
|
|
830
|
+
].join('\n'),
|
|
831
|
+
contract: [
|
|
832
|
+
'Use useFileUploadProgress for admin-socket upload progress.',
|
|
833
|
+
'Send x-enfyra-upload-id via getUploadProgressHeaders(id) for each uploaded file.',
|
|
834
|
+
'For multi-file uploads, call the useApi batch files path once, pass per-file headers through headersByIndex, and map each upload id to fileProgress[index].',
|
|
835
|
+
'CommonUploadModal owns selected-file rows and per-row progress chrome.',
|
|
836
|
+
],
|
|
837
|
+
};
|
|
838
|
+
}
|
|
646
839
|
export function reviewExtensionUiContract(code) {
|
|
647
840
|
const source = String(code || '');
|
|
648
841
|
const issues = [];
|
|
@@ -699,9 +892,9 @@ function getExtensionThemeContract() {
|
|
|
699
892
|
'The extension is already mounted inside the Enfyra app shell. Do not add a duplicate page header, centered page wrapper, or root-level page padding.',
|
|
700
893
|
'Page extensions should be full-bleed, responsive, and split large operations into focused pages or UTabs.',
|
|
701
894
|
'Use usePageHeaderRegistry for the shell title and useHeaderActionRegistry/useSubHeaderActionRegistry for page actions.',
|
|
702
|
-
'Use
|
|
895
|
+
'Use build_extension_menu_notification for sidebar menu notification registration snippets.',
|
|
703
896
|
'For shell menu notifications, first decide the signal source. Use a count only when the source already owns an exact count, such as a notification summary endpoint or bounded unread-notification query. Use a dot when a realtime event only proves that something new exists. Do not poll a domain list such as messages, tickets, orders, or jobs solely to decorate the menu; the destination page owns domain fetching.',
|
|
704
|
-
'Use
|
|
897
|
+
'Use build_extension_account_panel_item for account panel row registration snippets.',
|
|
705
898
|
'For detail/form workflows that should stay left-aligned with empty space on the right, wrap the body in eapp-page-constrained; use eapp-page-constrained-wide only when the workflow genuinely needs more width.',
|
|
706
899
|
'Card/list grids inside the default shell must account for the 280px desktop sidebar. Do not switch general card grids to three columns at lg; use md:grid-cols-2 xl:grid-cols-3 unless a local container proves three columns have enough width.',
|
|
707
900
|
],
|
|
@@ -752,15 +945,10 @@ function getExtensionThemeContract() {
|
|
|
752
945
|
'Use auto-injected components directly in the template with PascalCase names. Do not call resolveComponent() to manually resolve Nuxt UI/eApp components inside extension SFCs; it can compile but render unresolved lowercase DOM tags such as <ubutton>.',
|
|
753
946
|
'Buttons should have stable geometry: hover may change color, border, or shadow but must not move the button or resize its content. Disabled buttons keep disabled cursor/visual state.',
|
|
754
947
|
'Inputs and textareas should not add hover movement or decorative hover states; focus, invalid, disabled, and loading states must be explicit.',
|
|
755
|
-
'
|
|
948
|
+
'For drawers, modals, page shell headers/actions, permission gates, empty states, resource lists, form editors, widgets, menu/account panel registries, tabs, and upload modals, call the matching build_extension_* tool before patching raw Vue.',
|
|
949
|
+
'Use review_extension_ui_contract before saving generated snippets that include high-contract UI or native buttons.',
|
|
756
950
|
'Extension validation rejects UInput, UTextarea, USelect, USelectMenu, UInputMenu, UInputNumber, UInputTags, UInputTime, and UInputDate without class="w-full" unless marked data-compact or data-inline.',
|
|
757
|
-
'Dynamic extensions resolve UModal to the app CommonModal. Do not pass ui.content: "eapp-surface-card" or "surface-card" to UModal/CommonModal; modal content uses the app modal surface and caller ui.content should only append z-index, width, or max-width classes.',
|
|
758
|
-
'CommonModal and CommonDrawer own action-only footers through cancelAction, primaryAction, dangerAction, leadingActions, and footerHint. Pass footer button intent through those props instead of custom footer slots. cancelAction defaults to neutral outline; use dangerAction for irreversible destructive work and tone: "primary" for Keep editing in discard dialogs.',
|
|
759
|
-
'Use custom #footer content only when the footer contains real custom layout or non-button content. Every modal/drawer button should use type="button" unless it intentionally submits a form.',
|
|
760
|
-
'Use CommonDrawer for side-panel editing. Open drawers immediately on user action and render loading/error/content inside the drawer instead of waiting for fetch before opening.',
|
|
761
|
-
'Use UTabs for page sections and large grouped forms instead of custom tab bars; the app-level Nuxt UI override owns active and inactive indicators, focus rings, spacing, and theme contrast.',
|
|
762
951
|
'Use UBadge or token-backed badge spans for status. Keep badges legible in both themes with tokenized background, text, and border.',
|
|
763
|
-
'Use shell registries for shell badges: useAccountPanelRegistry for the account panel and useMenuNotificationRegistry for sidebar menus. Do not draw detached fixed-position badges over the app shell.',
|
|
764
952
|
],
|
|
765
953
|
appComposables: [
|
|
766
954
|
'useApi(url, options) returns refs: data, error, pending, status, plus async execute(options?) and refresh(). execute returns the response object or null.',
|
|
@@ -773,30 +961,24 @@ function getExtensionThemeContract() {
|
|
|
773
961
|
],
|
|
774
962
|
shellComponentContracts: {
|
|
775
963
|
CommonDrawer: [
|
|
776
|
-
'Use
|
|
777
|
-
'
|
|
778
|
-
'Drawer body form controls such as UInput, UTextarea, USelect, and USelectMenu must use class="w-full" unless they are intentionally inline/compact.',
|
|
779
|
-
'Pass nested when rendering a drawer inside another modal/drawer. Open the drawer immediately, then render loading/error/content inside #body.',
|
|
964
|
+
'Use build_extension_drawer for generated drawer/editing snippets.',
|
|
965
|
+
'The builder owns slots, managed footer actions, full-width fields, native button types, and loading/error/body structure.',
|
|
780
966
|
],
|
|
781
967
|
CommonModal: [
|
|
782
|
-
'Use
|
|
783
|
-
'
|
|
784
|
-
'Use managed footer props for ordinary Cancel/Save/Delete actions; mutation/confirmation modals must wire the final action through primaryAction or dangerAction. Use #footer only for custom layout or non-button content.',
|
|
785
|
-
'Modal body form controls such as UInput, UTextarea, USelect, and USelectMenu must use class="w-full" unless they are intentionally inline/compact.',
|
|
968
|
+
'Use build_extension_modal for generated modal/confirmation snippets.',
|
|
969
|
+
'The builder owns UModal/CommonModal aliasing, slots, managed footer actions, full-width fields, native button types, and modal surface constraints.',
|
|
786
970
|
],
|
|
787
971
|
PermissionGate: [
|
|
788
|
-
'Use
|
|
789
|
-
'PermissionGate renders the permitted slot directly and must not be relied on for layout spacing.',
|
|
972
|
+
'Use build_extension_permission_gate for generated permission wrapper snippets.',
|
|
790
973
|
'UI gates are operator UX only; backend route permissions and handler/hook owner checks remain authoritative.',
|
|
791
974
|
],
|
|
792
975
|
Widget: [
|
|
793
|
-
'Use
|
|
794
|
-
'
|
|
795
|
-
'Keep page-level mutation ownership in the page unless the widget intentionally owns that workflow.',
|
|
976
|
+
'Use build_extension_widget for generated widget include snippets.',
|
|
977
|
+
'The builder owns numeric id usage, reactive prop/event wiring, and page/widget ownership warnings.',
|
|
796
978
|
],
|
|
797
979
|
actionButtons: [
|
|
798
|
-
'
|
|
799
|
-
'
|
|
980
|
+
'Use review_extension_ui_contract for generated snippets with native buttons.',
|
|
981
|
+
'Validation/review catches missing type="button" and high-contract component mistakes before saving.',
|
|
800
982
|
],
|
|
801
983
|
},
|
|
802
984
|
loadingAndLists: [
|
|
@@ -2228,10 +2410,9 @@ async function runExtensionWorkflow(apiUrl, opts) {
|
|
|
2228
2410
|
'Call get_extension_theme_contract before generating or reviewing extension UI.',
|
|
2229
2411
|
'useApi returns refs { data, error, pending, status } plus execute/refresh; it does not auto-run. Pass query/body/filter/deep/aggregate as objects or computed objects, not JSON strings.',
|
|
2230
2412
|
'useNotify exposes success/error/warning/info(title, description?) async helpers; do not pass Nuxt toast object payloads to it.',
|
|
2231
|
-
'
|
|
2232
|
-
'
|
|
2233
|
-
'
|
|
2234
|
-
'Form controls inside CommonDrawer/CommonModal bodies must use class="w-full" unless intentionally inline/compact.',
|
|
2413
|
+
'For high-contract UI, call build_extension_* builders before patching raw Vue: drawer, modal, page shell, permission gate, empty state, resource list, form editor, widget, menu notification, account panel item, tabs, or upload modal.',
|
|
2414
|
+
'Use review_extension_ui_contract before saving generated snippets that include drawers, modals, fields, lists, tabs, upload modals, shell registry code, or native buttons.',
|
|
2415
|
+
'Extension validation rejects common field controls without class="w-full" unless intentionally marked data-compact or data-inline.',
|
|
2235
2416
|
'PermissionGate renders the permitted slot directly and is UX-only; backend permissions and owner checks remain authoritative.',
|
|
2236
2417
|
'For menu/account-panel notifications, use counts only when the signal source already owns an exact count; otherwise use a dot/chip for new attention.',
|
|
2237
2418
|
'Do not fetch destination domain lists solely to decorate the shell; destination pages own domain fetching after click.',
|
|
@@ -2430,6 +2611,98 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
2430
2611
|
emptyDescription: z.string().optional().describe('Empty description.'),
|
|
2431
2612
|
emptyIcon: z.string().optional().describe('Empty icon.'),
|
|
2432
2613
|
}, async (input) => jsonText(buildExtensionResourceListSnippet(input)));
|
|
2614
|
+
server.tool('build_extension_form_editor', [
|
|
2615
|
+
'Generate a FormEditor/FormEditorLazy snippet for Enfyra table-backed extension forms.',
|
|
2616
|
+
'Use this instead of hand-writing UInput/UTextarea fields when the form maps directly to a table record.',
|
|
2617
|
+
].join(' '), {
|
|
2618
|
+
tableName: z.string().optional().describe('Static table name.'),
|
|
2619
|
+
tableNameExpression: z.string().optional().describe('Raw Vue expression for dynamic table name.'),
|
|
2620
|
+
model: z.string().optional().default('form').describe('Record state variable for v-model.'),
|
|
2621
|
+
errors: z.string().optional().default('errors').describe('Errors state variable for v-model:errors.'),
|
|
2622
|
+
mode: z.enum(['create', 'update']).optional().describe('Optional fixed form mode.'),
|
|
2623
|
+
loadingExpression: z.string().optional().describe('Raw Vue expression/ref for loading.'),
|
|
2624
|
+
layout: z.enum(['stack', 'grid']).optional().describe('Form layout.'),
|
|
2625
|
+
includes: z.array(z.string()).optional().describe('Fields to include. Prefer explicit includes for focused generated forms.'),
|
|
2626
|
+
excluded: z.array(z.string()).optional().describe('Fields to exclude. compiledCode is always excluded by FormEditor.'),
|
|
2627
|
+
sectionsExpression: z.string().optional().describe('Raw Vue expression for FormEditorSection[].'),
|
|
2628
|
+
fieldMapExpression: z.string().optional().describe('Raw Vue expression for fieldMap overrides.'),
|
|
2629
|
+
virtualFieldsExpression: z.string().optional().describe('Raw Vue expression for virtual fields.'),
|
|
2630
|
+
currentRecordIdExpression: z.string().optional().describe('Raw Vue expression for current record id.'),
|
|
2631
|
+
hasChangedHandler: z.string().optional().describe('Handler expression for @has-changed.'),
|
|
2632
|
+
virtualFieldEmitHandler: z.string().optional().describe('Handler expression for @virtual-field-emit.'),
|
|
2633
|
+
lazy: z.boolean().optional().default(true).describe('Use FormEditorLazy by default.'),
|
|
2634
|
+
}, async (input) => jsonText(buildExtensionFormEditorSnippet(input)));
|
|
2635
|
+
server.tool('build_extension_widget', [
|
|
2636
|
+
'Generate a Widget snippet for reusing a widget extension inside an Enfyra page extension.',
|
|
2637
|
+
'Use this so agents pass numeric widget ids and keep prop/event ownership explicit.',
|
|
2638
|
+
].join(' '), {
|
|
2639
|
+
id: z.union([z.number(), z.string()]).describe('Numeric enfyra_extension widget id. Strings are allowed but return a warning because names/extensionId are wrong for Widget.'),
|
|
2640
|
+
props: z.record(z.string()).optional().describe('Map of prop name to raw Vue expression.'),
|
|
2641
|
+
events: z.record(z.string()).optional().describe('Map of event name to handler expression.'),
|
|
2642
|
+
}, async (input) => jsonText(buildExtensionWidgetSnippet(input)));
|
|
2643
|
+
server.tool('build_extension_menu_notification', [
|
|
2644
|
+
'Generate useMenuNotificationRegistry registration code for a global extension.',
|
|
2645
|
+
'Use this for sidebar menu count chips or dot notifications without mutating enfyra_menu records.',
|
|
2646
|
+
].join(' '), {
|
|
2647
|
+
id: z.string().optional().describe('Stable notification id.'),
|
|
2648
|
+
targetId: z.union([z.string(), z.number()]).optional().describe('Target menu id.'),
|
|
2649
|
+
path: z.string().optional().describe('Target menu path.'),
|
|
2650
|
+
route: z.string().optional().describe('Target route path.'),
|
|
2651
|
+
value: z.union([z.string(), z.number()]).optional().describe('Static count/chip value. Omit with valueExpression for a dot.'),
|
|
2652
|
+
valueExpression: z.string().optional().describe('Raw Vue expression for count/chip value. Omit value for a dot-only notification.'),
|
|
2653
|
+
color: z.enum(['primary', 'success', 'warning', 'error', 'info', 'neutral']).optional().default('primary').describe('Chip/dot color intent.'),
|
|
2654
|
+
title: z.string().optional().describe('Optional tooltip/title.'),
|
|
2655
|
+
order: z.number().optional().describe('Sort order when multiple notifications target the same menu.'),
|
|
2656
|
+
}, async (input) => jsonText(buildExtensionMenuNotificationSnippet(input)));
|
|
2657
|
+
server.tool('build_extension_account_panel_item', [
|
|
2658
|
+
'Generate useAccountPanelRegistry registration code for a global extension.',
|
|
2659
|
+
'Use this for data-driven account panel rows instead of drawing full custom sidebar/account UI.',
|
|
2660
|
+
].join(' '), {
|
|
2661
|
+
id: z.string().optional().describe('Stable account panel item id.'),
|
|
2662
|
+
order: z.number().optional().describe('Display order.'),
|
|
2663
|
+
label: z.string().optional().describe('Row label.'),
|
|
2664
|
+
description: z.string().optional().describe('Row description.'),
|
|
2665
|
+
icon: z.string().optional().describe('Leading icon.'),
|
|
2666
|
+
count: z.union([z.string(), z.number()]).optional().describe('Static notification chip value.'),
|
|
2667
|
+
countExpression: z.string().optional().describe('Raw Vue expression for notification chip value.'),
|
|
2668
|
+
badge: z.union([z.string(), z.number()]).optional().describe('Legacy static badge value. Prefer count.'),
|
|
2669
|
+
badgeExpression: z.string().optional().describe('Raw Vue expression for badge. Prefer countExpression.'),
|
|
2670
|
+
badgeColor: z.enum(['primary', 'neutral', 'info', 'error', 'warning', 'success']).optional().describe('Chip color.'),
|
|
2671
|
+
trailingIcon: z.string().optional().describe('Trailing icon.'),
|
|
2672
|
+
expandedExpression: z.string().optional().describe('Raw Vue expression controlling expanded state.'),
|
|
2673
|
+
contentComponent: z.string().optional().describe('Raw component reference for inline expanded content.'),
|
|
2674
|
+
contentPropsExpression: z.string().optional().describe('Raw Vue expression for content props.'),
|
|
2675
|
+
onClick: z.string().optional().describe('Direct action handler expression.'),
|
|
2676
|
+
onToggle: z.string().optional().describe('Expandable row toggle handler expression.'),
|
|
2677
|
+
}, async (input) => jsonText(buildExtensionAccountPanelSnippet(input)));
|
|
2678
|
+
server.tool('build_extension_tabs', [
|
|
2679
|
+
'Generate a UTabs snippet for Enfyra extension page sections.',
|
|
2680
|
+
'Use this instead of custom tab bars so app-wide tab chrome owns active indicators, focus rings, spacing, and theme contrast.',
|
|
2681
|
+
].join(' '), {
|
|
2682
|
+
model: z.string().optional().default('activeTab').describe('Active tab model variable.'),
|
|
2683
|
+
itemsExpression: z.string().optional().default('tabs').describe('Raw Vue expression for tab items.'),
|
|
2684
|
+
body: z.string().optional().describe('Vue template body for #content="{ item }".'),
|
|
2685
|
+
}, async (input) => jsonText(buildExtensionTabsSnippet(input)));
|
|
2686
|
+
server.tool('build_extension_upload_modal', [
|
|
2687
|
+
'Generate a CommonUploadModal snippet and upload-progress companion snippet for Enfyra extensions.',
|
|
2688
|
+
'Use this for file upload UI so progress, selected-file rows, and x-enfyra-upload-id wiring follow the app contract.',
|
|
2689
|
+
].join(' '), {
|
|
2690
|
+
model: z.string().optional().default('showUploadModal').describe('Modal open state variable.'),
|
|
2691
|
+
title: z.string().optional().describe('Upload modal title.'),
|
|
2692
|
+
accept: z.string().optional().default('*/*').describe('Accepted mime/extensions.'),
|
|
2693
|
+
multiple: z.boolean().optional().default(true).describe('Allow multiple files.'),
|
|
2694
|
+
maxSizeExpression: z.string().optional().describe('Raw Vue expression for max file size.'),
|
|
2695
|
+
loadingExpression: z.string().optional().describe('Raw Vue expression/ref for upload pending state.'),
|
|
2696
|
+
uploadProgressExpression: z.string().optional().describe('Raw Vue expression/ref for aggregate upload progress.'),
|
|
2697
|
+
fileProgressExpression: z.string().optional().describe('Raw Vue expression for per-row progress map.'),
|
|
2698
|
+
dragText: z.string().optional().describe('Drag/drop text.'),
|
|
2699
|
+
acceptText: z.string().optional().describe('Accept/help text.'),
|
|
2700
|
+
uploadText: z.string().optional().describe('Upload action text.'),
|
|
2701
|
+
uploadingText: z.string().optional().describe('Uploading action text.'),
|
|
2702
|
+
uploadHandler: z.string().optional().default('handleUpload').describe('@upload handler expression.'),
|
|
2703
|
+
errorHandler: z.string().optional().describe('@error handler expression.'),
|
|
2704
|
+
headerContent: z.string().optional().describe('Optional #header-content template, e.g. storage selector. Fields are normalized to w-full.'),
|
|
2705
|
+
}, async (input) => jsonText(buildExtensionUploadModalSnippet(input)));
|
|
2433
2706
|
server.tool('extension_workflow', [
|
|
2434
2707
|
'Step-by-step workflow for creating or updating Enfyra admin page, global, or widget extensions.',
|
|
2435
2708
|
'Use this when an LLM is building extension UI, menu shell notifications, account panel entries, or page/menu wiring and should follow live nextSteps instead of guessing raw enfyra_extension mutations.',
|