@sap-ux/fiori-mcp-server 1.15.6 → 1.15.7

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/index.js CHANGED
@@ -18830,7 +18830,7 @@ No aiResponse provided. Generate the code following the rules below, then call t
18830
18830
  This is the **final step** of the workflow and performs the actual modification.
18831
18831
  You MUST provide the exact parameter information obtained from get_functionality_details (Step 2).`,annotations:{title:"Execute Fiori Functionality",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!0},inputSchema:Ef(X1n),outputSchema:Ef(hDn)},...i6c?Cuo:[]],Ouo=new Set(Cuo.map(t=>t.name));var e0t=class{applicationKey="";extensionName="";extensionVersion="";getApplicationKey(){return this.applicationKey}getExtensionVersion(){return this.extensionVersion}getExtensionName(){return this.extensionName}};var kma=Ar(YSn(),1);var XOt=class{extensionName;eventName;constructor(e,r){this.extensionName=e,this.eventName=r}getExtensionName(){return this.extensionName}getEventName(){return this.eventName}toString(){return`${this.extensionName}/${this.eventName}`}};var KF;(function(t){t[t.OnePercent=0]="OnePercent",t[t.TenPercent=1]="TenPercent",t[t.NoSampling=2]="NoSampling"})(KF||(KF={}));process.env.OTEL_RESOURCE_ATTRIBUTES??="service.name=masked,service.instance.id=masked";function Apr(t){if(t.setUseDiskRetryCaching)try{t.setUseDiskRetryCaching(!0)}catch{}t.context.tags??={},t.context.tags["ai.location.ip"]="0.0.0.0",t.context.tags["microsoft.client.ip"]="0.0.0.0",t.context.tags["ai.cloud.roleInstance"]="masked",t.context.tags["ai.cloud.role"]="masked",t.context.tags["ai.device.type"]="masked"}var XSn={name:"@sap-ux/telemetry",version:"2.0.9",description:"Library for sending usage telemetry data",type:"module",repository:{type:"git",url:"https://github.com/SAP/open-ux-tools.git",directory:"packages/telemetry"},bugs:{url:"https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Atelemetry"},license:"Apache-2.0",private:!1,main:"dist/index.js",scripts:{build:"tsc --build",watch:"tsc --watch",clean:"rimraf --glob dist coverage *.tsbuildinfo",format:"prettier --write '**/*.{js,json,ts,yaml,yml}' --ignore-path ../../.prettierignore",lint:"eslint","lint:fix":"eslint --fix",test:"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors","test-u":"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",link:"pnpm link --global",unlink:"pnpm unlink --global",example:"ts-node example/index.ts"},dependencies:{"@sap-ux/store":"workspace:*","@sap-ux/project-access":"workspace:*","@sap-ux/btp-utils":"workspace:*","@sap-ux/ui5-config":"workspace:*","@sap-ux/logger":"workspace:*","@sap-ux/nodejs-utils":"workspace:*",applicationinsights:"3.16.0",axios:"1.18.1","performance-now":"2.1.0",yaml:"2.9.0"},devDependencies:{"@jest/globals":"30.4.1","jest-extended":"7.0.0",memfs:"3.4.13",unionfs:"4.6.0",dotenv:"17.4.2"},files:["dist","LICENSE","!dist/*.map","!dist/**/*.map"],engines:{node:">=22.x"}};var aP={azureInstrumentationKey:"",azureIngestionEndpoint:"https://westus2-0.in.applicationinsights.azure.com/",azureLiveEndpoint:"https://westus2.livediagnostics.monitor.azure.com/",telemetryEnabled:!0,telemetryLibName:XSn.name,telemetryLibVersion:XSn.version,consumerModuleName:"",consumerModuleVersion:""};process.env.APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL??="true";var JOt=class extends e0t{clients;constructor(e,r,n){super(),this.clients=new Map,this.applicationKey=e,this.extensionVersion=n,this.extensionName=r;let i=this.createTelemetryClient(KF.OnePercent),a=this.createTelemetryClient(KF.TenPercent),s=this.createTelemetryClient(KF.NoSampling);this.clients.set(KF.OnePercent,i),this.clients.set(KF.TenPercent,a),this.clients.set(KF.NoSampling,s)}reportBlocking(e,r,n,i,a=!1){if(!a||aP.telemetryEnabled){let{client:s,event:c}=this.prepareClientAndEvent(e,r,n,i);return this.trackEventBlocking(s,c)}return Promise.resolve()}async report(e,r,n,i,a,s){if(s!==void 0&&!s||!aP.telemetryEnabled)return;let{client:c,event:l}=this.prepareClientAndEvent(e,r,n,i);this.trackEvent(c,l)}prepareClientAndEvent(e,r,n,i=KF.NoSampling){let a=this.clients.get(i),c={name:new XOt(this.extensionName,e).toString(),properties:r,measurements:n};return{client:a,event:c}}async trackEventBlocking(e,r){process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"&&(e.trackEvent(r),await e.flush())}trackEvent(e,r){return process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"?(e.trackEvent(r),!0):!1}createTelemetryClient(e){let r;switch(e){case KF.OnePercent:r=1;break;case KF.TenPercent:r=10;break;case KF.NoSampling:default:r=100;break}let n=new kma.TelemetryClient(this.applicationKey);return n.config.samplingPercentage=r,Apr(n),n}};var JSn=()=>{let t=new Date().getTime();return new Date(t).toISOString()};var ZOt=class extends JOt{constructor(e,r,n){super(e,r,n)}async report(e,r,n,i,a,s){let c=await Cpr(a),l={v:this.extensionVersion,datetime:JSn()},u={...r,...c,...l};await super.report(e,u,n,i,a,s)}async reportEvent(e,r,n,i){let{finalProperties:a,finalMeasurements:s}=await this.collectToolsSuiteTelemetry(e,n);return super.report(e.eventName,a,s,r,n,i)}async reportEventBlocking(e,r,n,i){let{finalProperties:a,finalMeasurements:s}=await this.collectToolsSuiteTelemetry(e,n);return super.reportBlocking(e.eventName,a,s,r,i)}async collectToolsSuiteTelemetry(e,r){let n=await Cpr(r),i={v:this.extensionVersion,datetime:JSn()},a={...e.properties,...n,...i},s={...e.measurements};return{finalProperties:a,finalMeasurements:s}}};var Mma=Ar(mC(),1),Lma=Ar(qdt(),1);import Yte from"node:fs";import sEe from"node:path";var Opr={internalFeature:!1};var QOt;(function(t){t.UNKNOWN="UNKNOWN",t.NO_TOOLS_ID="NO_TOOLS_ID"})(QOt||(QOt={}));var bae;(function(t){t.CAPJava="CAPJava",t.CAPNode="CAPNode",t.ABAP="ABAP",t.UNKNOWN="UNKNOWN"})(bae||(bae={}));var Wje;(function(t){t.CF="CF",t.ABAP="ABAP",t.UNKNOWN_DEPLOY_CONFIG="UNKNOWN_DEPLOY_CONFIG",t.NO_DEPLOY_CONFIG="NO_DEPLOY_CONFIG"})(Wje||(Wje={}));var sP;(function(t){t.DevSpace="cmn.devspace",t.AppStudio="cmn.appstudio",t.AppStudioBackwardCompatible="appstudio",t.InternlVsExternal="cmn.internalFeatures",t.InternlVsExternalBackwardCompatible="internalVsExternal",t.TemplateType="cmn.template",t.DeployTargetType="cmn.deployTarget",t.ODataSourceType="cmn.odataSource",t.AppToolsId="cmn.toolsId",t.NodeVersion="cmn.nodeVersion",t.AppProgrammingLanguage="cmn.appLanguage",t.TemplateId="cmn.templateId",t.TemplateVersion="cmn.templateVersion",t.ApplicationType="cmn.applicationType",t.IdeType="cmn.ideType"})(sP||(sP={}));async function Cpr(t){let e=await QSn(),r={};return t&&(r=await Rau(t.appPath)),{...e,...r}}async function QSn(){let t={};return t[sP.DevSpace]=await Nau(),t[sP.AppStudio]=$g(),t[sP.AppStudioBackwardCompatible]=t[sP.AppStudio],t[sP.InternlVsExternal]=Fau(),t[sP.InternlVsExternalBackwardCompatible]=t[sP.InternlVsExternal],t[sP.NodeVersion]=await jau(),t[sP.IdeType]=ewn(),t}async function Nau(){if($g())try{if(!process.env.H2O_URL||!process.env.WORKSPACE_ID)return"";let t=process.env.H2O_URL,e=process.env.WORKSPACE_ID.replace("workspaces-",""),r=`${t}/ws-manager/api/v1/workspace/${e}`,n=await Mma.default.get(r);if(n.data)return n.data?.config?.annotations?.pack}catch{}return""}async function Rau(t){if(!t)return{};let e=await kau(t),r=await $au(t),n=await oqe(t),i=await Mau(t);n==="Fiori Reuse"&&(i=bae.UNKNOWN);let a=await Uau(t),s=await B$t(t),c={};return c[sP.TemplateType]=e,c[sP.DeployTargetType]=r,c[sP.ODataSourceType]=i,c[sP.AppToolsId]=a.toolsId??"",c[sP.AppProgrammingLanguage]=s,c[sP.TemplateId]=a.id??"",c[sP.TemplateVersion]=a.version??"",c[sP.ApplicationType]=n??"",c}async function kau(t){let e=sEe.join(t,"README.md"),r=sEe.join(t,".appGenInfo.json");if(Yte.existsSync(r)){let n=await Yte.promises.readFile(r,"utf-8"),i=JSON.parse(n);if(i?.generationParameters?.template)return i.generationParameters.template.trim()}if(Yte.existsSync(e)){let n=await Yte.promises.readFile(e,"utf-8");if(n){let i="",a=n.split(/\r?\n/);for(let s of a){let l=/\|\*\*Template Used\*\*<br>(.*?)\|/.exec(s);if(l&&l.length>=2){i=l[1].trim();break}}return i}}return""}async function Mau(t){try{let e;try{e=await Zse(t)}catch{}if(!e)try{let i=sEe.dirname(t);e=await Zse(i,!1)}catch{}let r=!1;if(!e){let i=sEe.dirname(t),a=sEe.dirname(i);r=await nft(a),e=r?a:t}if(r)return bae.CAPJava;let n=await aqe(e);return Lau(n)}catch{return bae.UNKNOWN}}function Lau(t){return t==="EDMXBackend"?bae.ABAP:t==="CAPNodejs"?bae.CAPNode:t==="CAPJava"?bae.CAPJava:bae.UNKNOWN}async function $au(t){let e=Wje.NO_DEPLOY_CONFIG,r=sEe.join(t,"ui5-deploy.yaml");try{await Yte.promises.access(r);let n=await Yte.promises.readFile(r,"utf-8"),a=Lma.default.parse(n)?.builder?.customTasks;a?e=a.some(c=>c.name==="deploy-to-abap")?Wje.ABAP:Wje.CF:e=Wje.UNKNOWN_DEPLOY_CONFIG}catch{}return e}function Fau(){return Opr.internalFeature?"internal":"external"}async function Uau(t){let e=await yy(t),r={manifest:sEe.join(e,"manifest.json"),appdescr:sEe.join(e,"manifest.appdescr_variant"),ui5Yaml:sEe.join(t,"ui5.yaml")};try{if(Yte.existsSync(r.manifest)){let n=await Yte.promises.readFile(r.manifest,"utf-8"),i=JSON.parse(n);return ZSn(i["sap.app"]?.sourceTemplate??{})}if(Yte.existsSync(r.appdescr)&&Yte.existsSync(r.ui5Yaml)){let n=await Yte.promises.readFile(r.ui5Yaml,"utf-8"),a=(await c7.newInstance(n)).getCustomConfiguration("adp");return ZSn(a?.support??{})}}catch{}return ZSn({})}function ZSn(t){return{id:t.id??"",version:t.version??"",toolsId:t.toolsId??QOt.NO_TOOLS_ID}}async function jau(){try{return(await new $0e().run("node",["-v"])??"unknown").replaceAll(/(?:^v)|([\r\n]{1,100})/g,"")}catch{return"unknown"}}function ewn(){if($g())return"appstudio";let t=process.env.VSCODE_CWD?.toLowerCase()??"",e=process.env.VSCODE_PID,r=process.env.TERM_PROGRAM??"",n=process.env.VSCODE_APPNAME?.toLowerCase()??"";return!e&&!t&&r!=="vscode"&&r!=="vscode-insiders"?"unknown":process.env.CURSOR_TRACE_ID||n.includes("cursor")||t.includes("cursor")?"cursor":n.includes("windsurf")||t.includes("windsurf")||t.includes("codeium")?"windsurf":n.includes("antigravity")||t.includes("antigravity")?"antigravity":n.includes("trae")||t.includes("trae")?"trae":n.includes("kiro")||t.includes("kiro")?"kiro":n.includes("vscodium")||n.includes("codium")||t.includes("vscodium")||t.includes("codium")?"vscodium":n.includes("code-server")||t.includes("code-server")||process.env.CODE_SERVER_SESSION?"code-server":n.includes("insiders")||t.includes("code - insiders")||t.includes("code insiders")||t.includes("vscode-insiders")||r==="vscode-insiders"?"vscode-insiders":e||r==="vscode"?"vscode":"unknown"}var $ma=Ar(YSn(),1);var wJe;(function(t){t.Test="test",t.TELEMETRY_SETTINGS_INIT_FAILED="TELEMETRY_SETTINGS_INIT_FAILED",t.DISABLE_TELEMETRY="DISABLE_TELEMETRY"})(wJe||(wJe={}));var Bau=t=>{let e=[/sap-ux.+/gi,/[-a-zA-Z]+\/ide-extension\/.+/gi,/(\/telemetry\/.+)/gi],r=[],n=t.split(`
18832
18832
  `).filter(i=>!!/^\s*at .*(\S+:\d+|\(native\))/m.exec(i));return n.length&&n.forEach(i=>{let a=i.replace(/^\s+/,""),c=/ (\((.+):(\d+):(\d+)\)$)/.exec(i);if(!c)return;let l=null,u=c[2].replace(/\\/g,"/");for(let m of e){let g=m.exec(u);if(g){l=g[0];break}}if(!l)return;a=a.replace(c[0],"");let d=a.split(/\s+/).slice(1).join(""),p=c[3],f=c[4],h=`${d} at (${l}:${p}:${f});`;r.push(h)}),r},Ppr,Fma=()=>(Ppr||(Ppr=new $ma.TelemetryClient(J6.buildConnectionString(aP.azureInstrumentationKey)),Apr(Ppr)),Ppr),Uma=t=>{let e={message:t.message};if(t.stack){let n=Bau(t.stack);n.length&&(e.stack=n.join(`
18833
- `))}let r={name:wJe.TELEMETRY_SETTINGS_INIT_FAILED,properties:e,measurements:{}};process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"&&Fma().trackEvent(r)},jma=(t,e)=>{let r={name:wJe.DISABLE_TELEMETRY,properties:{disableTelemetry:`${!t}`,...e},measurements:{}};process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"&&Fma().trackEvent(r)};import Vau from"node:os";import qau from"node:path";import Hau from"node:fs";var zau={win32:"\\AppData\\Roaming\\Code\\User\\settings.json",darwin:"/Library/Application Support/Code/User/settings.json",linux:"/.config/Code/User/settings.json",theia:"/.theia/settings.json"},Gau=["sap.ux.annotation.lsp.enableTelemetry","sap.ux.applicationModeler.enableTelemetry","sap.ux.help.enableTelemetry","sap.ux.serviceModeler.enableTelemetry"],Wau=t=>{let e=process.platform,r=t[e];if($g()&&(r=t.theia),!r)return null;let n=Vau.homedir();return qau.join(n,r)};async function Kau(t){let e;try{e=await t.read(new $Ae)}catch{}if(e)aP.telemetryEnabled=e.enableTelemetry;else{let r=Wau(zau);if(!r)await xpr(!0);else{let n;try{n=await Hau.promises.readFile(r,"utf-8");let i=JSON.parse(n),s=Gau.map(c=>i[c]??!0).reduce((c,l)=>c&&l,!0);await xpr(s)}catch{await xpr(!0)}}}}function Yau(t){y9t(yLe.TelemetrySetting,()=>{t.read(new $Ae).then(e=>{e&&(aP.telemetryEnabled=e.enableTelemetry)}).catch(()=>{})})}var twn=async t=>{try{aP.consumerModuleName=t.consumerModule.name,aP.consumerModuleVersion=t.consumerModule.version,Opr.internalFeature=t.internalFeature??!1,t.resourceId&&(aP.azureInstrumentationKey=t.resourceId),t.ingestionEndpoint&&(aP.azureIngestionEndpoint=t.ingestionEndpoint),t.liveEndpoint&&(aP.azureLiveEndpoint=t.liveEndpoint);let e=await fQ({entityName:"telemetrySetting"});await Kau(e),t.watchTelemetrySettingStore&&Yau(e)}catch(e){Uma(e)}};async function xpr(t){try{let r=await fQ({entityName:"telemetrySetting"}),n=new xbt({enableTelemetry:t});await r.write(n),aP.telemetryEnabled=t}catch{}let e=await QSn();jma(t,e)}var Xau="ApplicationInsightsInstrumentationKeyPLACEH0LDER",J6=class t{static clientMap=new Map;static getTelemetryClient(){return t.getTelemetryClientByClass(ZOt)}static getTelemetryClientByClass(e){let r=t.clientMap.get(e.name);if(r)return r;let n=t.buildConnectionString(aP.azureInstrumentationKey);return r=new e(n,aP.consumerModuleName,aP.consumerModuleVersion),t.clientMap.set(e.name,r),r}static buildConnectionString(e){return e?`InstrumentationKey=${e===Xau?"00000000-0000-0000-0000-000000000000":e};IngestionEndpoint=${aP.azureIngestionEndpoint};LiveEndpoint=${aP.azureLiveEndpoint};`:""}};var tJ;(function(t){t.START_MARK="START_MARK",t.END_MARK="END_MARK",t.MEASUREMENT="MEASUREMENT"})(tJ||(tJ={}));var Dpr=class{static initTiming;static enteries;static initialize;static startMark;static endMark;static measure;static getEntries;static getEntriesByName;static getEntriesByType;static getEntriesByNameType;static getMeasurementDuration;static clearEntries};var ePt=class{startTime;name;type;getStartTime(){return this.startTime}constructor(e,r,n){this.startTime=n,this.name=e,this.startTime=n,this.type=r}},Ipr=class extends ePt{startTime;duration;constructor(e,r,n){super(e,tJ.MEASUREMENT,r),this.startTime=r,this.duration=n,this.duration=n}getDurationTime(){return this.duration}};import{performance as Jau}from"node:perf_hooks";var Zau=()=>Jau.now(),rk=class t extends Dpr{static initTiming;static now=Zau;static entries=[];static initialize(){t.initTiming=t.now()}static mark(e,r,n){let i=new ePt(e,r,n);t.entries.push(i)}static startMark(e){let r=t.now(),n=e+r;return t.mark(n,tJ.START_MARK,r),n}static endMark(e){let r=t.now();t.mark(e,tJ.END_MARK,r)}static measure(e){let r=t.getEntriesByNameType(e,tJ.START_MARK).slice(-1)[0],n=t.getEntriesByNameType(e,tJ.END_MARK).slice(-1)[0];if(!r&&!n)throw new Error(`Failed to execute 'measure': mark '${e}' doesn't exist.`);if(!r||!n){let l=r?tJ.END_MARK:tJ.START_MARK;throw new Error(`Failed to execute 'measure': mark '${e}'of type '${l}' doesn't exist.`)}let i=r.getStartTime(),s=n.getStartTime()-i,c=new Ipr(`${e}`,t.now(),s);t.entries.push(c)}static getEntries(){return t.entries}static getEntriesByName(e){return t.entries.filter(r=>r.name===e)}static getEntriesByNameType(e,r){return t.entries.filter(n=>n.name===e&&n.type===r)}static getEntriesByType(e){return t.entries.filter(r=>r.type===e)}static getMeasurementDuration(e){return t.getEntriesByNameType(e,tJ.MEASUREMENT).slice(-1)[0].getDurationTime()}static clearEntries(){t.entries=[]}};rk.initialize();var Qau=(t,e)=>new Error(`Wrong path for '${t}' field is specified in instructions with index - ${e}`),esu=(t,e,r,n)=>{let i=e.split("/"),a=t,s=0;for(;s<i.length;){if(a=a[i[s]],a===void 0)throw Qau(r,n);s++}return a},Bma=(t,e)=>{let r={},n={},i=null;e.paramIndex!==void 0&&(i=t[e.paramIndex]);let a=e.key?e.key:"data",s="";return typeof e.value=="string"?s=e.value:e.value!==void 0&&e.paramIndex!==void 0?s=esu(i,e.value.path,"val",e.paramIndex):s=i,typeof s=="number"&&!Number.isNaN(s)?n[a]=s:r[a]=s,[r,n]},rwn=(t,e)=>{let r,n,i={},a={};if(Array.isArray(e))for(let s of e)[r,n]=Bma(t,s),i={...i,...r},a={...a,...n};else[i,a]=Bma(t,e);return[i,a]};var Vma=(t,e,r,n)=>(...i)=>{let a=e.apply(t,i);return J6.getTelemetryClient().report(r,{},{},n),a},qma=(t,e,r,n)=>async(...i)=>{let a=await e.apply(t,i);return J6.getTelemetryClient().report(r,{},{},n),a},Hma=(t,e,r,n)=>(...i)=>{let a=rk.startMark("mark"),s=e.apply(t,i);rk.endMark(a),rk.measure(a);let c=rk.getMeasurementDuration(a);return J6.getTelemetryClient().report(r,{},{ms:c},n),s},zma=(t,e,r,n)=>async(...i)=>{let a=rk.startMark("mark"),s=await e.apply(t,i);rk.endMark(a),rk.measure(a);let c=rk.getMeasurementDuration(a);return J6.getTelemetryClient().report(r,{},{ms:c},n),s},Gma=(t,e,r,n,i)=>(...a)=>{let s=e.apply(t,a),[c,l]=rwn(a,i);return J6.getTelemetryClient().report(r,c,l,n),s},Wma=(t,e,r,n,i)=>async(...a)=>{let s=await e.apply(t,a),[c,l]=rwn(a,i);return J6.getTelemetryClient().report(r,c,l,n),s};var cEe;(function(t){t.NOTIFICATION="notify",t.DURATION="duration",t.CAPTURE_PARAM="captureParam"})(cEe||(cEe={}));var Npr=new Map;Npr.set(cEe.NOTIFICATION,Vma);Npr.set(cEe.DURATION,Hma);Npr.set(cEe.CAPTURE_PARAM,Gma);var Rpr=new Map;Rpr.set(cEe.NOTIFICATION,qma);Rpr.set(cEe.DURATION,zma);Rpr.set(cEe.CAPTURE_PARAM,Wma);var dya=Ar(oya(),1);import{randomUUID as Fcu}from"node:crypto";var kcu=["@sap-ux","fiori-mcp-server"].join("/");var Mcu="1.15.6",aya={name:kcu,version:Mcu};Cle();var sya={telemetry:{unknownOs:"Unknown"}};var hwn="fiori-mcp-server",cya=Fg.createInstance();async function $cu(){await cya.init({resources:{en:{[hwn]:sya}},lng:"en",fallbackLng:"en",defaultNS:hwn,ns:[hwn]})}function lya(t,e){return cya.t(t,e)}$cu().catch(()=>{});var{version:Ucu}=aya,uya="@sap-ux/fiori-mcp-server",pya="unknown-tool",jcu="0a65e45d-6bf4-421d-b845-61e888c50e9e",Sae=class{static _telemetryData;static _previousEventTimestamp;static _sessionId;static get telemetryData(){return this._telemetryData}static get sessionId(){return this._sessionId}static initSessionId(){this._sessionId=Fcu(),Xn.info(`Telemetry session initialized with ID: ${this._sessionId}`)}static async initTelemetrySettings(e){this._sessionId||this.initSessionId();let r={consumerModule:{name:uya,version:Ucu},watchTelemetrySettingStore:!1,internalFeature:Zbt(),resourceId:jcu,...e};try{await twn(r)}catch(n){Xn.error(`Error initializing telemetry settings: ${n}`)}}static createTelemetryData(e,r=!1){let n=new Date().getTime();if(this._previousEventTimestamp||(r=!1,this._previousEventTimestamp=n),!this._telemetryData){let i=lya("telemetry.unknownOs");try{i=(0,dya.default)()}catch{}this._telemetryData={Platform:$g()?"SBAS":"VSCode",OperatingSystem:i,SessionId:this.sessionId}}if(r){let i={...this._telemetryData,...e};if(Math.abs(this._previousEventTimestamp-n)<1e3&&JSON.stringify(i)===JSON.stringify(this._telemetryData))return}return this._previousEventTimestamp=n,this._telemetryData=Object.assign(this._telemetryData,e),this._telemetryData}static prepareTelemetryEvent(e,r){this.markToolsEndTime();let n=r.markName?rk.getMeasurementDuration(r.markName):void 0;return{eventName:e,properties:r,measurements:n?{RequestTime:n}:{}}}static markToolStartTime(){this.createTelemetryData({markName:rk.startMark("MCP_LOADING_TIME")})}static markToolsEndTime(){this._telemetryData?.markName&&(rk.endMark(this._telemetryData.markName),rk.measure(this._telemetryData.markName))}static async sendTelemetry(e,r,n){let i=this.createTelemetryData(r)??r,a=this.prepareTelemetryEvent(e,i);await J6.getTelemetryClient().reportEvent(a,KF.NoSampling,n?{appPath:n}:void 0)}static getTelemetryName(){return uya}};var fya="2024-11-05";function Bcu(t){return W1e.includes(t)?t:W1e.includes(fya)?fya:W1e[W1e.length-1]}var Xpr=class{server;mcpClientName="unknown-client";mcpClientVersion="unknown-version";constructor(){this.server=new RNt({name:"fiori-mcp",version:P4e,icons:[{src:"https://raw.githubusercontent.com/SAP/open-ux-tools/main/packages/fiori-mcp-server/assets/icon.svg",mimeType:"image/svg+xml"},{src:"https://raw.githubusercontent.com/SAP/open-ux-tools/main/packages/fiori-mcp-server/assets/icon.png",mimeType:"image/png"}],title:"MCP Server for SAP Fiori"},{capabilities:{tools:{}}}),this.setupToolHandlers(),this.setupErrorHandling()}setupErrorHandling(){this.server.onerror=r=>Xn.error(`[MCP Error] ${r}`);let e=async()=>{await GXt(),await this.server.close(),process.exit(0)};process.on("SIGINT",e),process.on("SIGTERM",e)}async setupTelemetry(){await Sae.initTelemetrySettings()}setupToolHandlers(){this.server.setRequestHandler(Rlt,async e=>{this.mcpClientName=e.params.clientInfo?.name||"unknown-client",this.mcpClientVersion=e.params.clientInfo?.version||"unknown-version",Xn.info(`MCP Client connected: ${this.mcpClientName} v${this.mcpClientVersion}`);let r={mcpClientName:this.mcpClientName,mcpClientVersion:this.mcpClientVersion};return await Sae.sendTelemetry(Msi,r),{protocolVersion:Bcu(e.params.protocolVersion),capabilities:{tools:{}},serverInfo:{name:"fiori-mcp",version:P4e},instructions:`
18833
+ `))}let r={name:wJe.TELEMETRY_SETTINGS_INIT_FAILED,properties:e,measurements:{}};process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"&&Fma().trackEvent(r)},jma=(t,e)=>{let r={name:wJe.DISABLE_TELEMETRY,properties:{disableTelemetry:`${!t}`,...e},measurements:{}};process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"&&Fma().trackEvent(r)};import Vau from"node:os";import qau from"node:path";import Hau from"node:fs";var zau={win32:"\\AppData\\Roaming\\Code\\User\\settings.json",darwin:"/Library/Application Support/Code/User/settings.json",linux:"/.config/Code/User/settings.json",theia:"/.theia/settings.json"},Gau=["sap.ux.annotation.lsp.enableTelemetry","sap.ux.applicationModeler.enableTelemetry","sap.ux.help.enableTelemetry","sap.ux.serviceModeler.enableTelemetry"],Wau=t=>{let e=process.platform,r=t[e];if($g()&&(r=t.theia),!r)return null;let n=Vau.homedir();return qau.join(n,r)};async function Kau(t){let e;try{e=await t.read(new $Ae)}catch{}if(e)aP.telemetryEnabled=e.enableTelemetry;else{let r=Wau(zau);if(!r)await xpr(!0);else{let n;try{n=await Hau.promises.readFile(r,"utf-8");let i=JSON.parse(n),s=Gau.map(c=>i[c]??!0).reduce((c,l)=>c&&l,!0);await xpr(s)}catch{await xpr(!0)}}}}function Yau(t){y9t(yLe.TelemetrySetting,()=>{t.read(new $Ae).then(e=>{e&&(aP.telemetryEnabled=e.enableTelemetry)}).catch(()=>{})})}var twn=async t=>{try{aP.consumerModuleName=t.consumerModule.name,aP.consumerModuleVersion=t.consumerModule.version,Opr.internalFeature=t.internalFeature??!1,t.resourceId&&(aP.azureInstrumentationKey=t.resourceId),t.ingestionEndpoint&&(aP.azureIngestionEndpoint=t.ingestionEndpoint),t.liveEndpoint&&(aP.azureLiveEndpoint=t.liveEndpoint);let e=await fQ({entityName:"telemetrySetting"});await Kau(e),t.watchTelemetrySettingStore&&Yau(e)}catch(e){Uma(e)}};async function xpr(t){try{let r=await fQ({entityName:"telemetrySetting"}),n=new xbt({enableTelemetry:t});await r.write(n),aP.telemetryEnabled=t}catch{}let e=await QSn();jma(t,e)}var Xau="ApplicationInsightsInstrumentationKeyPLACEH0LDER",J6=class t{static clientMap=new Map;static getTelemetryClient(){return t.getTelemetryClientByClass(ZOt)}static getTelemetryClientByClass(e){let r=t.clientMap.get(e.name);if(r)return r;let n=t.buildConnectionString(aP.azureInstrumentationKey);return r=new e(n,aP.consumerModuleName,aP.consumerModuleVersion),t.clientMap.set(e.name,r),r}static buildConnectionString(e){return e?`InstrumentationKey=${e===Xau?"00000000-0000-0000-0000-000000000000":e};IngestionEndpoint=${aP.azureIngestionEndpoint};LiveEndpoint=${aP.azureLiveEndpoint};`:""}};var tJ;(function(t){t.START_MARK="START_MARK",t.END_MARK="END_MARK",t.MEASUREMENT="MEASUREMENT"})(tJ||(tJ={}));var Dpr=class{static initTiming;static enteries;static initialize;static startMark;static endMark;static measure;static getEntries;static getEntriesByName;static getEntriesByType;static getEntriesByNameType;static getMeasurementDuration;static clearEntries};var ePt=class{startTime;name;type;getStartTime(){return this.startTime}constructor(e,r,n){this.startTime=n,this.name=e,this.startTime=n,this.type=r}},Ipr=class extends ePt{startTime;duration;constructor(e,r,n){super(e,tJ.MEASUREMENT,r),this.startTime=r,this.duration=n,this.duration=n}getDurationTime(){return this.duration}};import{performance as Jau}from"node:perf_hooks";var Zau=()=>Jau.now(),rk=class t extends Dpr{static initTiming;static now=Zau;static entries=[];static initialize(){t.initTiming=t.now()}static mark(e,r,n){let i=new ePt(e,r,n);t.entries.push(i)}static startMark(e){let r=t.now(),n=e+r;return t.mark(n,tJ.START_MARK,r),n}static endMark(e){let r=t.now();t.mark(e,tJ.END_MARK,r)}static measure(e){let r=t.getEntriesByNameType(e,tJ.START_MARK).slice(-1)[0],n=t.getEntriesByNameType(e,tJ.END_MARK).slice(-1)[0];if(!r&&!n)throw new Error(`Failed to execute 'measure': mark '${e}' doesn't exist.`);if(!r||!n){let l=r?tJ.END_MARK:tJ.START_MARK;throw new Error(`Failed to execute 'measure': mark '${e}'of type '${l}' doesn't exist.`)}let i=r.getStartTime(),s=n.getStartTime()-i,c=new Ipr(`${e}`,t.now(),s);t.entries.push(c)}static getEntries(){return t.entries}static getEntriesByName(e){return t.entries.filter(r=>r.name===e)}static getEntriesByNameType(e,r){return t.entries.filter(n=>n.name===e&&n.type===r)}static getEntriesByType(e){return t.entries.filter(r=>r.type===e)}static getMeasurementDuration(e){return t.getEntriesByNameType(e,tJ.MEASUREMENT).slice(-1)[0].getDurationTime()}static clearEntries(){t.entries=[]}};rk.initialize();var Qau=(t,e)=>new Error(`Wrong path for '${t}' field is specified in instructions with index - ${e}`),esu=(t,e,r,n)=>{let i=e.split("/"),a=t,s=0;for(;s<i.length;){if(a=a[i[s]],a===void 0)throw Qau(r,n);s++}return a},Bma=(t,e)=>{let r={},n={},i=null;e.paramIndex!==void 0&&(i=t[e.paramIndex]);let a=e.key?e.key:"data",s="";return typeof e.value=="string"?s=e.value:e.value!==void 0&&e.paramIndex!==void 0?s=esu(i,e.value.path,"val",e.paramIndex):s=i,typeof s=="number"&&!Number.isNaN(s)?n[a]=s:r[a]=s,[r,n]},rwn=(t,e)=>{let r,n,i={},a={};if(Array.isArray(e))for(let s of e)[r,n]=Bma(t,s),i={...i,...r},a={...a,...n};else[i,a]=Bma(t,e);return[i,a]};var Vma=(t,e,r,n)=>(...i)=>{let a=e.apply(t,i);return J6.getTelemetryClient().report(r,{},{},n),a},qma=(t,e,r,n)=>async(...i)=>{let a=await e.apply(t,i);return J6.getTelemetryClient().report(r,{},{},n),a},Hma=(t,e,r,n)=>(...i)=>{let a=rk.startMark("mark"),s=e.apply(t,i);rk.endMark(a),rk.measure(a);let c=rk.getMeasurementDuration(a);return J6.getTelemetryClient().report(r,{},{ms:c},n),s},zma=(t,e,r,n)=>async(...i)=>{let a=rk.startMark("mark"),s=await e.apply(t,i);rk.endMark(a),rk.measure(a);let c=rk.getMeasurementDuration(a);return J6.getTelemetryClient().report(r,{},{ms:c},n),s},Gma=(t,e,r,n,i)=>(...a)=>{let s=e.apply(t,a),[c,l]=rwn(a,i);return J6.getTelemetryClient().report(r,c,l,n),s},Wma=(t,e,r,n,i)=>async(...a)=>{let s=await e.apply(t,a),[c,l]=rwn(a,i);return J6.getTelemetryClient().report(r,c,l,n),s};var cEe;(function(t){t.NOTIFICATION="notify",t.DURATION="duration",t.CAPTURE_PARAM="captureParam"})(cEe||(cEe={}));var Npr=new Map;Npr.set(cEe.NOTIFICATION,Vma);Npr.set(cEe.DURATION,Hma);Npr.set(cEe.CAPTURE_PARAM,Gma);var Rpr=new Map;Rpr.set(cEe.NOTIFICATION,qma);Rpr.set(cEe.DURATION,zma);Rpr.set(cEe.CAPTURE_PARAM,Wma);var dya=Ar(oya(),1);import{randomUUID as Fcu}from"node:crypto";var kcu=["@sap-ux","fiori-mcp-server"].join("/");var Mcu="1.15.7",aya={name:kcu,version:Mcu};Cle();var sya={telemetry:{unknownOs:"Unknown"}};var hwn="fiori-mcp-server",cya=Fg.createInstance();async function $cu(){await cya.init({resources:{en:{[hwn]:sya}},lng:"en",fallbackLng:"en",defaultNS:hwn,ns:[hwn]})}function lya(t,e){return cya.t(t,e)}$cu().catch(()=>{});var{version:Ucu}=aya,uya="@sap-ux/fiori-mcp-server",pya="unknown-tool",jcu="0a65e45d-6bf4-421d-b845-61e888c50e9e",Sae=class{static _telemetryData;static _previousEventTimestamp;static _sessionId;static get telemetryData(){return this._telemetryData}static get sessionId(){return this._sessionId}static initSessionId(){this._sessionId=Fcu(),Xn.info(`Telemetry session initialized with ID: ${this._sessionId}`)}static async initTelemetrySettings(e){this._sessionId||this.initSessionId();let r={consumerModule:{name:uya,version:Ucu},watchTelemetrySettingStore:!1,internalFeature:Zbt(),resourceId:jcu,...e};try{await twn(r)}catch(n){Xn.error(`Error initializing telemetry settings: ${n}`)}}static createTelemetryData(e,r=!1){let n=new Date().getTime();if(this._previousEventTimestamp||(r=!1,this._previousEventTimestamp=n),!this._telemetryData){let i=lya("telemetry.unknownOs");try{i=(0,dya.default)()}catch{}this._telemetryData={Platform:$g()?"SBAS":"VSCode",OperatingSystem:i,SessionId:this.sessionId}}if(r){let i={...this._telemetryData,...e};if(Math.abs(this._previousEventTimestamp-n)<1e3&&JSON.stringify(i)===JSON.stringify(this._telemetryData))return}return this._previousEventTimestamp=n,this._telemetryData=Object.assign(this._telemetryData,e),this._telemetryData}static prepareTelemetryEvent(e,r){this.markToolsEndTime();let n=r.markName?rk.getMeasurementDuration(r.markName):void 0;return{eventName:e,properties:r,measurements:n?{RequestTime:n}:{}}}static markToolStartTime(){this.createTelemetryData({markName:rk.startMark("MCP_LOADING_TIME")})}static markToolsEndTime(){this._telemetryData?.markName&&(rk.endMark(this._telemetryData.markName),rk.measure(this._telemetryData.markName))}static async sendTelemetry(e,r,n){let i=this.createTelemetryData(r)??r,a=this.prepareTelemetryEvent(e,i);await J6.getTelemetryClient().reportEvent(a,KF.NoSampling,n?{appPath:n}:void 0)}static getTelemetryName(){return uya}};var fya="2024-11-05";function Bcu(t){return W1e.includes(t)?t:W1e.includes(fya)?fya:W1e[W1e.length-1]}var Xpr=class{server;mcpClientName="unknown-client";mcpClientVersion="unknown-version";constructor(){this.server=new RNt({name:"fiori-mcp",version:P4e,icons:[{src:"https://raw.githubusercontent.com/SAP/open-ux-tools/main/packages/fiori-mcp-server/assets/icon.svg",mimeType:"image/svg+xml"},{src:"https://raw.githubusercontent.com/SAP/open-ux-tools/main/packages/fiori-mcp-server/assets/icon.png",mimeType:"image/png"}],title:"MCP Server for SAP Fiori"},{capabilities:{tools:{}}}),this.setupToolHandlers(),this.setupErrorHandling()}setupErrorHandling(){this.server.onerror=r=>Xn.error(`[MCP Error] ${r}`);let e=async()=>{await GXt(),await this.server.close(),process.exit(0)};process.on("SIGINT",e),process.on("SIGTERM",e)}async setupTelemetry(){await Sae.initTelemetrySettings()}setupToolHandlers(){this.server.setRequestHandler(Rlt,async e=>{this.mcpClientName=e.params.clientInfo?.name||"unknown-client",this.mcpClientVersion=e.params.clientInfo?.version||"unknown-version",Xn.info(`MCP Client connected: ${this.mcpClientName} v${this.mcpClientVersion}`);let r={mcpClientName:this.mcpClientName,mcpClientVersion:this.mcpClientVersion};return await Sae.sendTelemetry(Msi,r),{protocolVersion:Bcu(e.params.protocolVersion),capabilities:{tools:{}},serverInfo:{name:"fiori-mcp",version:P4e},instructions:`
18834
18834
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
18835
18835
  \u{1F6A8}\u{1F6A8}\u{1F6A8} STOP - READ THIS BEFORE CALLING ANY TOOLS \u{1F6A8}\u{1F6A8}\u{1F6A8}
18836
18836
  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sap-ux/fiori-mcp-server",
3
3
  "description": "SAP Fiori - Model Context Protocol (MCP) server",
4
- "version": "1.15.6",
4
+ "version": "1.15.7",
5
5
  "mcpName": "io.github.SAP/fiori-mcp-server",
6
6
  "keywords": [
7
7
  "SAP Fiori tools",
@@ -61,22 +61,22 @@
61
61
  "ts-node": "10.9.2",
62
62
  "xml-formatter": "3.7.0",
63
63
  "zod": "4.4.3",
64
- "@sap-ux/adp-tooling": "1.0.61",
64
+ "@sap-ux/adp-tooling": "1.0.62",
65
65
  "@sap-ux/axios-extension": "2.1.0",
66
+ "@sap-ux/btp-utils": "2.0.6",
66
67
  "@sap-ux/feature-toggle": "1.0.5",
67
68
  "@sap-ux/fiori-annotation-api": "1.1.1",
68
- "@sap-ux/btp-utils": "2.0.6",
69
69
  "@sap-ux/fiori-docs-embeddings": "1.2.8",
70
70
  "@sap-ux/i18n": "1.0.5",
71
71
  "@sap-ux/logger": "1.0.3",
72
- "@sap-ux/odata-annotation-core-types": "1.0.3",
73
- "@sap-ux/odata-annotation-core": "1.0.3",
74
72
  "@sap-ux/nodejs-utils": "1.0.10",
75
- "@sap-ux/odata-service-writer": "1.0.24",
73
+ "@sap-ux/odata-annotation-core": "1.0.3",
74
+ "@sap-ux/odata-annotation-core-types": "1.0.3",
76
75
  "@sap-ux/odata-entity-model": "1.0.1",
76
+ "@sap-ux/odata-service-writer": "1.0.24",
77
77
  "@sap-ux/project-access": "2.2.2",
78
- "@sap-ux/store": "2.0.7",
79
78
  "@sap-ux/project-input-validator": "1.0.22",
79
+ "@sap-ux/store": "2.0.7",
80
80
  "@sap-ux/system-access": "1.0.14",
81
81
  "@sap-ux/telemetry": "2.0.9",
82
82
  "@sap-ux/text-document-utils": "1.0.3",