@pickaxeproject/react 6.13.0 → 6.13.1

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("react"),t=require("../../../../hooks/pickaxe/usePickaxeContext.js"),a=require("../../../../hooks/studio/useStyleFontSize.js"),i=require("../../../../hooks/pickaxe/useResponseContext.js"),r=require("../../Addons/Artifact/hooks/useArtifact.js"),o=require("../../common/PickaxeMarkdown/index.js"),l=require("../../common/PickaxeIcon.js"),n=require("./Document.js"),c=require("../../common/PickaxeMessageActions.js"),d=require("../../common/PickaxeMessageParts/index.js"),u=require("../../../../common/cn.js"),x=require("../../../../common/isoMap.js"),m=require("franc-min"),p=require("../../common/ComposioConnectView.js"),f=require("../../common/SmitheryConnectView.js"),j=require("../../../../hooks/pickaxe/useTextToSpeech.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=h(require("remove-markdown"));exports.default=({index:h,message:b,smitheryData:v,resubmitPrompt:k,isLastMessage:y=!1})=>{var w,O;const{pickaxeId:q,pickaxe:N,styles:C,colors:I,misc:P,responsiveBy:A,disableHtml:R,disableJs:S,disableCss:M,isNewChat:T,isRtl:L}=t.usePickaxeContext(),{isGenerating:F}=i.useResponseContext(),{onLoadArtifact:H}=r.useArtifact(),J=a.useStyleFontSize(),V=null!==(w=null==N?void 0:N.chaticon)&&void 0!==w?w:`https://cdn.mail.studio/chaticons/${q}.png`,z=y&&F,B=null==N?void 0:N.enablereadout,{isLoading:D,isSpeaking:_,speak:E,stop:G}=j.useTextToSpeech(B&&"assistant"===b.role),U=()=>{if(D||_)return void G();const e=b.parts.filter((e=>"text"===e.type)).map((e=>e.content)).join(" ");if(!e)return;const s=g.default(e,{stripListLeaders:!0,listUnicodeChar:"",gfm:!0,useImgAltText:!1}),t=m.franc(s),a=x.convertToIso1(t);E(s,a)},$=!b.parts.some((e=>["text","reasoning","data-action-tool-caption"].includes(e.type)));return"assistant"===b.role?e.jsx("div",Object.assign({className:u.default("flex w-full",L?"justify-end":"justify-start")},{children:e.jsx("div",Object.assign({className:u.default("flex flex-col w-full",0===h&&T&&"viewport"===A&&"min-[767px]:max-w-[80%]",0===h&&T&&"container"===A&&"@[767px]/pickaxe-root:max-w-[80%]")},{children:e.jsxs("div",Object.assign({className:u.default("flex gap-x-3",L&&"flex-row-reverse")},{children:[P.isChatImage&&"NONE"!==V&&e.jsx(l.default,{src:V,alt:"Assistant",width:24,height:24,className:"my-3 h-6 w-6",textColor:I.text}),e.jsxs("div",Object.assign({className:u.default("flex flex-col flex-grow",L?"items-end":"items-start")},{children:[e.jsxs("div",Object.assign({className:u.default(J.b2,"chat-message pt-3 w-full",L?"text-right":"text-left")},{children:[e.jsx(o.PickaxeMarkdown,Object.assign({theme:C.theme,colors:I},L&&{rtl:!0},R&&{disableHtml:!0},S&&{disableJs:!0},M&&{disableCss:!0},{disableReasoning:null!==(O=null==N?void 0:N.enablereasoningdisplay)&&void 0!==O&&O,onArtifactClick:H},{children:e.jsx(d.default,{parts:b.parts})})),y&&v&&k&&("composio"===v.provider?e.jsx("div",Object.assign({className:"mt-4 px-1"},{children:e.jsx(p.default,{serverId:v.serverId,toolkitSlug:v.toolkitSlug||"",name:v.name,resubmitPrompt:()=>k()})})):e.jsx("div",Object.assign({className:"mt-4 px-1"},{children:e.jsx(f.default,{serverId:v.serverId,smitheryId:v.smitheryId||"",name:v.name||v.smitheryId,resubmitPrompt:()=>k()})})))]})),e.jsx("div",Object.assign({className:u.default("flex flex-col gap-6 my-4",$&&"mt-2")},{children:z?e.jsx("div",Object.assign({className:"flex items-center gap-x-2 rounded"},{children:Array.from({length:3}).map(((s,t)=>e.jsx("div",{className:u.default("h-1.5 w-1.5 animate-dot rounded-full",1===t&&"animate-dot-down"),style:{backgroundColor:I.secondaryText}},t)))})):e.jsx(c.default,Object.assign({content:b.parts.filter((e=>e.isVisible&&"text"===e.type)).map((e=>e.content)).join("\n"),index:h},"intromessage"===b.area&&{isHideFeedback:!0},{onReadOut:U,isReadOut:B||!1,isReadOutLoading:D,isReading:_}))}))]}))]}))}))})):"user"===b.role?e.jsx("div",Object.assign({className:u.default("flex w-full",L?"justify-start":"justify-end")},{children:e.jsx("div",Object.assign({className:u.default("flex gap-x-3 max-w-[80%]",L?"pr-9":"pl-9","viewport"===A?L?"min-[767px]:pr-0":"min-[767px]:pl-0":L?"@[767px]/pickaxe-root:pr-0":"@[767px]/pickaxe-root:pl-0")},{children:e.jsxs("div",Object.assign({className:u.default(J.b2,"overflow-x-auto overflow-y-hidden px-4 py-3 scrollbar-thin scrollbar-track-white scrollbar-thumb-[#4A4A4B] flex flex-col gap-y-3",L?"text-right":"text-left"),style:{backgroundColor:I.secondary+"80",color:I.secondaryText,borderRadius:C.cornerRadius}},{children:[b.documentIds&&b.documentIds.length>0&&e.jsx("div",Object.assign({className:u.default("flex flex-col gap-y-2",L?"items-start":"items-end")},{children:b.documentIds.map((t=>e.jsx(s.Fragment,{children:e.jsx(n.default,{documentId:t})},t)))})),e.jsx(o.PickaxeMarkdown,Object.assign({theme:C.theme,colors:I},L&&{rtl:!0},R&&{disableHtml:!0},S&&{disableJs:!0},M&&{disableCss:!0},{children:e.jsx(d.default,{parts:b.parts})}))]}))}))})):e.jsx("div",{})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("react"),t=require("../../../../hooks/pickaxe/usePickaxeContext.js"),a=require("../../../../hooks/studio/useStyleFontSize.js"),i=require("../../../../hooks/pickaxe/useResponseContext.js"),r=require("../../Addons/Artifact/hooks/useArtifact.js"),o=require("../../common/PickaxeMarkdown/index.js"),l=require("../../common/PickaxeIcon.js"),n=require("./Document.js"),c=require("../../common/PickaxeMessageActions.js"),d=require("../../common/PickaxeMessageParts/index.js"),u=require("../../../../common/cn.js"),x=require("../../../../common/isoMap.js"),m=require("franc-min"),p=require("../../common/ComposioConnectView.js"),f=require("../../common/SmitheryConnectView.js"),j=require("../../../../hooks/pickaxe/useTextToSpeech.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=h(require("remove-markdown"));exports.default=({index:h,message:b,smitheryData:v,resubmitPrompt:k,isLastMessage:y=!1})=>{var w,O;const{pickaxeId:q,pickaxe:N,styles:C,colors:I,misc:P,responsiveBy:A,disableHtml:R,disableJs:S,disableCss:M,isNewChat:T,isRtl:L}=t.usePickaxeContext(),{isGenerating:F}=i.useResponseContext(),{onLoadArtifact:H}=r.useArtifact(),J=a.useStyleFontSize(),V=null!==(w=null==N?void 0:N.chaticon)&&void 0!==w?w:`https://cdn.mail.studio/chaticons/${q}.png`,z=y&&F,B=null==N?void 0:N.enablereadout,{isLoading:D,isSpeaking:_,speak:E,stop:G}=j.useTextToSpeech(B&&"assistant"===b.role,null==N?void 0:N.readoutvoice),U=()=>{if(D||_)return void G();const e=b.parts.filter((e=>"text"===e.type)).map((e=>e.content)).join(" ");if(!e)return;const s=g.default(e,{stripListLeaders:!0,listUnicodeChar:"",gfm:!0,useImgAltText:!1}),t=m.franc(s),a=x.convertToIso1(t);E(s,a)},$=!b.parts.some((e=>["text","reasoning","data-action-tool-caption"].includes(e.type)));return"assistant"===b.role?e.jsx("div",Object.assign({className:u.default("flex w-full",L?"justify-end":"justify-start")},{children:e.jsx("div",Object.assign({className:u.default("flex flex-col w-full",0===h&&T&&"viewport"===A&&"min-[767px]:max-w-[80%]",0===h&&T&&"container"===A&&"@[767px]/pickaxe-root:max-w-[80%]")},{children:e.jsxs("div",Object.assign({className:u.default("flex gap-x-3",L&&"flex-row-reverse")},{children:[P.isChatImage&&"NONE"!==V&&e.jsx(l.default,{src:V,alt:"Assistant",width:24,height:24,className:"my-3 h-6 w-6",textColor:I.text}),e.jsxs("div",Object.assign({className:u.default("flex flex-col flex-grow",L?"items-end":"items-start")},{children:[e.jsxs("div",Object.assign({className:u.default(J.b2,"chat-message pt-3 w-full",L?"text-right":"text-left")},{children:[e.jsx(o.PickaxeMarkdown,Object.assign({theme:C.theme,colors:I},L&&{rtl:!0},R&&{disableHtml:!0},S&&{disableJs:!0},M&&{disableCss:!0},{disableReasoning:null!==(O=null==N?void 0:N.enablereasoningdisplay)&&void 0!==O&&O,onArtifactClick:H},{children:e.jsx(d.default,{parts:b.parts})})),y&&v&&k&&("composio"===v.provider?e.jsx("div",Object.assign({className:"mt-4 px-1"},{children:e.jsx(p.default,{serverId:v.serverId,toolkitSlug:v.toolkitSlug||"",name:v.name,resubmitPrompt:()=>k()})})):e.jsx("div",Object.assign({className:"mt-4 px-1"},{children:e.jsx(f.default,{serverId:v.serverId,smitheryId:v.smitheryId||"",name:v.name||v.smitheryId,resubmitPrompt:()=>k()})})))]})),e.jsx("div",Object.assign({className:u.default("flex flex-col gap-6 my-4",$&&"mt-2")},{children:z?e.jsx("div",Object.assign({className:"flex items-center gap-x-2 rounded"},{children:Array.from({length:3}).map(((s,t)=>e.jsx("div",{className:u.default("h-1.5 w-1.5 animate-dot rounded-full",1===t&&"animate-dot-down"),style:{backgroundColor:I.secondaryText}},t)))})):e.jsx(c.default,Object.assign({content:b.parts.filter((e=>e.isVisible&&"text"===e.type)).map((e=>e.content)).join("\n"),index:h},"intromessage"===b.area&&{isHideFeedback:!0},{onReadOut:U,isReadOut:B||!1,isReadOutLoading:D,isReading:_}))}))]}))]}))}))})):"user"===b.role?e.jsx("div",Object.assign({className:u.default("flex w-full",L?"justify-start":"justify-end")},{children:e.jsx("div",Object.assign({className:u.default("flex gap-x-3 max-w-[80%]",L?"pr-9":"pl-9","viewport"===A?L?"min-[767px]:pr-0":"min-[767px]:pl-0":L?"@[767px]/pickaxe-root:pr-0":"@[767px]/pickaxe-root:pl-0")},{children:e.jsxs("div",Object.assign({className:u.default(J.b2,"overflow-x-auto overflow-y-hidden px-4 py-3 scrollbar-thin scrollbar-track-white scrollbar-thumb-[#4A4A4B] flex flex-col gap-y-3",L?"text-right":"text-left"),style:{backgroundColor:I.secondary+"80",color:I.secondaryText,borderRadius:C.cornerRadius}},{children:[b.documentIds&&b.documentIds.length>0&&e.jsx("div",Object.assign({className:u.default("flex flex-col gap-y-2",L?"items-start":"items-end")},{children:b.documentIds.map((t=>e.jsx(s.Fragment,{children:e.jsx(n.default,{documentId:t})},t)))})),e.jsx(o.PickaxeMarkdown,Object.assign({theme:C.theme,colors:I},L&&{rtl:!0},R&&{disableHtml:!0},S&&{disableJs:!0},M&&{disableCss:!0},{children:e.jsx(d.default,{parts:b.parts})}))]}))}))})):e.jsx("div",{})};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),n=require("../../common/api/pickaxe.js"),t=require("react");function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}const s={ar:"ar-SA",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",en:"en-US",es:"es-ES",fi:"fi-FI",fr:"fr-FR",he:"he-IL",hi:"hi-IN",it:"it-IT",ja:"ja-JP",ko:"ko-KR",nb:"nb-NO",nl:"nl-NL",pl:"pl-PL",pt:"pt-PT",ro:"ro-RO",ru:"ru-RU",sv:"sv-SE",th:"th-TH",tr:"tr-TR",vi:"vi-VN",zh:"zh-CN",zu:"zu-ZA"};let o=null;const i=new Map,c=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"),l=({text:t,language:l,browserVoices:u=[],onLoading:a,onPlay:p,onEnd:d})=>{var h;null==o||o.cancel(),null===(h=window.speechSynthesis)||void 0===h||h.cancel();let f=null,w=null,v=!1,g=!1,S=!1;const y=()=>{g||(g=!0,null==f||f.close(),f=null,o===k&&(o=null),d())},m=()=>{v||g||p()},k={cancel:()=>{var e;v||g||(v=!0,null==w||w.close(),w=null,null==f||f.pause(),null==f||f.close(),f=null,null===(e=window.speechSynthesis)||void 0===e||e.cancel(),y())}};o=k,a();return e.__awaiter(void 0,void 0,void 0,(function*(){var e;try{const[{data:o},u]=yield Promise.all([n.pickaxeApi2.post("/speech"),Promise.resolve().then((function(){return r(require("microsoft-cognitiveservices-speech-sdk"))}))]);if(!o.success||!o.token)throw new Error(o.error||"Azure Speech token was not returned");if(v||g)return;const a=(e=>{if(!e)return"en-US";const n=e.toLowerCase();return"pt-br"===n?"pt-BR":s[n.split("-")[0]]||e})(l),p=u.SpeechConfig.fromAuthorizationToken(o.token,"eastus");p.speechSynthesisLanguage=a,p.speechSynthesisOutputFormat=u.SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3;const d=new u.SpeakerAudioDestination;d.onAudioStart=()=>{const e=d.internalAudio;e?e.addEventListener("playing",m,{once:!0}):m()},d.onAudioEnd=y,f=d;const h=u.AudioConfig.fromSpeakerOutput(d),S=new u.SpeechSynthesizer(p,h);w=S;let k=i.get(a);if(!k){const n=yield S.getVoicesAsync(a);if(v||g)return;if(k=null===(e=n.voices.find((e=>e.locale===a)))||void 0===e?void 0:e.shortName,!k)throw new Error(`No Azure voice is available for ${a}`);i.set(a,k)}const b=k,A=yield new Promise(((e,n)=>{const r=`<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="${a}"><voice name="${c(b)}"><break time="500ms"/>${c(t)}</voice></speak>`;S.speakSsmlAsync(r,e,n)}));if(S.close(),w=null,v||g)return;if(A.reason!==u.ResultReason.SynthesizingAudioCompleted)throw new Error(A.errorDetails||"Azure speech synthesis failed")}catch(e){if(null==w||w.close(),w=null,null==f||f.close(),f=null,v||g)return;console.warn("Azure text-to-speech failed; using browser speech",e),(()=>{if(v||g||S)return;if(S=!0,!("speechSynthesis"in window)||!("SpeechSynthesisUtterance"in window))return void y();const e=new SpeechSynthesisUtterance(t),n=l||"en",r=u.find((e=>e.lang.startsWith(n)&&e.name.includes("Google")))||u.find((e=>e.lang.startsWith(n)));r?(e.voice=r,e.lang=r.lang):e.lang=n,e.onstart=m,e.onend=y,e.onerror=y,window.speechSynthesis.speak(e)})()}})),k};exports.useTextToSpeech=(e=!0)=>{const[n,r]=t.useState(!1),[s,o]=t.useState(!1),[i,c]=t.useState([]),u=t.useRef(null),a=t.useRef(!0);t.useEffect((()=>(a.current=!0,()=>{var e;a.current=!1,null===(e=u.current)||void 0===e||e.cancel(),u.current=null})),[]),t.useEffect((()=>{if(!e||!("speechSynthesis"in window))return;const n=()=>{const e=window.speechSynthesis.getVoices();e.length>0&&c(e)};return n(),window.speechSynthesis.addEventListener("voiceschanged",n),()=>{window.speechSynthesis.removeEventListener("voiceschanged",n)}}),[e]);const p=t.useCallback((()=>{var e;null===(e=u.current)||void 0===e||e.cancel(),u.current=null}),[]);return{isLoading:n,isSpeaking:s,speak:t.useCallback(((e,n)=>{if(!e)return;const t=l({text:e,language:n,browserVoices:i,onLoading:()=>{a.current&&(r(!0),o(!1))},onPlay:()=>{a.current&&(r(!1),o(!0))},onEnd:()=>{u.current===t&&(u.current=null),a.current&&(r(!1),o(!1))}});u.current=t}),[i]),stop:p}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),n=require("../../common/api/pickaxe.js"),t=require("react");function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}const s={ar:"ar-SA",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",en:"en-US",es:"es-ES",fi:"fi-FI",fr:"fr-FR",he:"he-IL",hi:"hi-IN",it:"it-IT",ja:"ja-JP",ko:"ko-KR",nb:"nb-NO",nl:"nl-NL",pl:"pl-PL",pt:"pt-PT",ro:"ro-RO",ru:"ru-RU",sv:"sv-SE",th:"th-TH",tr:"tr-TR",vi:"vi-VN",zh:"zh-CN",zu:"zu-ZA"};let o=null;const i=new Map,c=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"),l=({text:t,language:l,preferredVoiceName:a,browserVoices:u=[],onLoading:p,onPlay:d,onEnd:h})=>{var f;null==o||o.cancel(),null===(f=window.speechSynthesis)||void 0===f||f.cancel();let w=null,v=null,g=!1,S=!1,y=!1;const m=()=>{S||(S=!0,null==w||w.close(),w=null,o===b&&(o=null),h())},k=()=>{g||S||d()},b={cancel:()=>{var e;g||S||(g=!0,null==v||v.close(),v=null,null==w||w.pause(),null==w||w.close(),w=null,null===(e=window.speechSynthesis)||void 0===e||e.cancel(),m())}};o=b,p();return e.__awaiter(void 0,void 0,void 0,(function*(){var e;try{const[{data:o},u]=yield Promise.all([n.pickaxeApi2.post("/speech"),Promise.resolve().then((function(){return r(require("microsoft-cognitiveservices-speech-sdk"))}))]);if(!o.success||!o.token)throw new Error(o.error||"Azure Speech token was not returned");if(g||S)return;const p=(e=>{if(!e)return"en-US";const n=e.toLowerCase();return"pt-br"===n?"pt-BR":s[n.split("-")[0]]||e})(l),d=u.SpeechConfig.fromAuthorizationToken(o.token,"eastus");d.speechSynthesisLanguage=p,d.speechSynthesisOutputFormat=u.SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3;const h=new u.SpeakerAudioDestination;h.onAudioStart=()=>{const e=h.internalAudio;e?e.addEventListener("playing",k,{once:!0}):k()},h.onAudioEnd=m,w=h;const f=u.AudioConfig.fromSpeakerOutput(h),y=new u.SpeechSynthesizer(d,f);v=y;let b=a||i.get(p);if(!b){const n=yield y.getVoicesAsync(p);if(g||S)return;if(b=null===(e=n.voices.find((e=>e.locale===p)))||void 0===e?void 0:e.shortName,!b)throw new Error(`No Azure voice is available for ${p}`);i.set(p,b)}const A=b,E=yield new Promise(((e,n)=>{const r=`<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="${p}"><voice name="${c(A)}"><break time="500ms"/>${c(t)}</voice></speak>`;y.speakSsmlAsync(r,e,n)}));if(y.close(),v=null,g||S)return;if(E.reason!==u.ResultReason.SynthesizingAudioCompleted)throw new Error(E.errorDetails||"Azure speech synthesis failed")}catch(e){if(null==v||v.close(),v=null,null==w||w.close(),w=null,g||S)return;console.warn("Azure text-to-speech failed; using browser speech",e),(()=>{if(g||S||y)return;if(y=!0,!("speechSynthesis"in window)||!("SpeechSynthesisUtterance"in window))return void m();const e=new SpeechSynthesisUtterance(t),n=l||"en",r=u.find((e=>e.lang.startsWith(n)&&e.name.includes("Google")))||u.find((e=>e.lang.startsWith(n)));r?(e.voice=r,e.lang=r.lang):e.lang=n,e.onstart=k,e.onend=m,e.onerror=m,window.speechSynthesis.speak(e)})()}})),b};exports.useTextToSpeech=(e=!0,n)=>{const[r,s]=t.useState(!1),[o,i]=t.useState(!1),[c,a]=t.useState([]),u=t.useRef(null),p=t.useRef(!0);t.useEffect((()=>(p.current=!0,()=>{var e;p.current=!1,null===(e=u.current)||void 0===e||e.cancel(),u.current=null})),[]),t.useEffect((()=>{if(!e||!("speechSynthesis"in window))return;const n=()=>{const e=window.speechSynthesis.getVoices();e.length>0&&a(e)};return n(),window.speechSynthesis.addEventListener("voiceschanged",n),()=>{window.speechSynthesis.removeEventListener("voiceschanged",n)}}),[e]);const d=t.useCallback((()=>{var e;null===(e=u.current)||void 0===e||e.cancel(),u.current=null}),[]);return{isLoading:r,isSpeaking:o,speak:t.useCallback(((e,t)=>{if(!e)return;const r=l({text:e,language:t,preferredVoiceName:n,browserVoices:c,onLoading:()=>{p.current&&(s(!0),i(!1))},onPlay:()=>{p.current&&(s(!1),i(!0))},onEnd:()=>{u.current===r&&(u.current=null),p.current&&(s(!1),i(!1))}});u.current=r}),[c,n]),stop:d}};
@@ -1,4 +1,4 @@
1
- export declare const useTextToSpeech: (enabled?: boolean) => {
1
+ export declare const useTextToSpeech: (enabled?: boolean, preferredVoiceName?: string | null) => {
2
2
  isLoading: boolean;
3
3
  isSpeaking: boolean;
4
4
  speak: (text: string, language?: string) => void;
@@ -23,6 +23,7 @@ export type Pickaxe = {
23
23
  enablevoicetotext: boolean;
24
24
  enablereasoningdisplay: boolean;
25
25
  enablereadout: boolean;
26
+ readoutvoice?: string | null;
26
27
  featured: boolean;
27
28
  formdescription: string;
28
29
  formtitle: string;
@@ -72,6 +73,7 @@ export type LimitedPickaxe = {
72
73
  enablevoicetotext: boolean;
73
74
  enablereasoningdisplay: boolean;
74
75
  enablereadout: boolean;
76
+ readoutvoice?: string | null;
75
77
  formdescription: string;
76
78
  formtitle: string;
77
79
  intromessage?: string;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Fragment as t}from"react";import{usePickaxeContext as i}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useStyleFontSize as o}from"../../../../hooks/studio/useStyleFontSize.js";import{useResponseContext as a}from"../../../../hooks/pickaxe/useResponseContext.js";import{useArtifact as r}from"../../Addons/Artifact/hooks/useArtifact.js";import{PickaxeMarkdown as n}from"../../common/PickaxeMarkdown/index.js";import l from"../../common/PickaxeIcon.js";import m from"./Document.js";import c from"../../common/PickaxeMessageActions.js";import d from"../../common/PickaxeMessageParts/index.js";import p from"../../../../common/cn.js";import{convertToIso1 as x}from"../../../../common/isoMap.js";import{franc as f}from"franc-min";import h from"../../common/ComposioConnectView.js";import u from"../../common/SmitheryConnectView.js";import{useTextToSpeech as g}from"../../../../hooks/pickaxe/useTextToSpeech.js";import b from"remove-markdown";const j=({index:j,message:v,smitheryData:k,resubmitPrompt:y,isLastMessage:w=!1})=>{var O,N;const{pickaxeId:C,pickaxe:I,styles:A,colors:P,misc:R,responsiveBy:S,disableHtml:L,disableJs:M,disableCss:T,isNewChat:H,isRtl:J}=i(),{isGenerating:V}=a(),{onLoadArtifact:B}=r(),D=o(),F=null!==(O=null==I?void 0:I.chaticon)&&void 0!==O?O:`https://cdn.mail.studio/chaticons/${C}.png`,z=w&&V,E=null==I?void 0:I.enablereadout,{isLoading:G,isSpeaking:U,speak:$,stop:q}=g(E&&"assistant"===v.role),K=()=>{if(G||U)return void q();const e=v.parts.filter((e=>"text"===e.type)).map((e=>e.content)).join(" ");if(!e)return;const s=b(e,{stripListLeaders:!0,listUnicodeChar:"",gfm:!0,useImgAltText:!1}),t=f(s),i=x(t);$(s,i)},Q=!v.parts.some((e=>["text","reasoning","data-action-tool-caption"].includes(e.type)));return"assistant"===v.role?e("div",Object.assign({className:p("flex w-full",J?"justify-end":"justify-start")},{children:e("div",Object.assign({className:p("flex flex-col w-full",0===j&&H&&"viewport"===S&&"min-[767px]:max-w-[80%]",0===j&&H&&"container"===S&&"@[767px]/pickaxe-root:max-w-[80%]")},{children:s("div",Object.assign({className:p("flex gap-x-3",J&&"flex-row-reverse")},{children:[R.isChatImage&&"NONE"!==F&&e(l,{src:F,alt:"Assistant",width:24,height:24,className:"my-3 h-6 w-6",textColor:P.text}),s("div",Object.assign({className:p("flex flex-col flex-grow",J?"items-end":"items-start")},{children:[s("div",Object.assign({className:p(D.b2,"chat-message pt-3 w-full",J?"text-right":"text-left")},{children:[e(n,Object.assign({theme:A.theme,colors:P},J&&{rtl:!0},L&&{disableHtml:!0},M&&{disableJs:!0},T&&{disableCss:!0},{disableReasoning:null!==(N=null==I?void 0:I.enablereasoningdisplay)&&void 0!==N&&N,onArtifactClick:B},{children:e(d,{parts:v.parts})})),w&&k&&y&&("composio"===k.provider?e("div",Object.assign({className:"mt-4 px-1"},{children:e(h,{serverId:k.serverId,toolkitSlug:k.toolkitSlug||"",name:k.name,resubmitPrompt:()=>y()})})):e("div",Object.assign({className:"mt-4 px-1"},{children:e(u,{serverId:k.serverId,smitheryId:k.smitheryId||"",name:k.name||k.smitheryId,resubmitPrompt:()=>y()})})))]})),e("div",Object.assign({className:p("flex flex-col gap-6 my-4",Q&&"mt-2")},{children:z?e("div",Object.assign({className:"flex items-center gap-x-2 rounded"},{children:Array.from({length:3}).map(((s,t)=>e("div",{className:p("h-1.5 w-1.5 animate-dot rounded-full",1===t&&"animate-dot-down"),style:{backgroundColor:P.secondaryText}},t)))})):e(c,Object.assign({content:v.parts.filter((e=>e.isVisible&&"text"===e.type)).map((e=>e.content)).join("\n"),index:j},"intromessage"===v.area&&{isHideFeedback:!0},{onReadOut:K,isReadOut:E||!1,isReadOutLoading:G,isReading:U}))}))]}))]}))}))})):"user"===v.role?e("div",Object.assign({className:p("flex w-full",J?"justify-start":"justify-end")},{children:e("div",Object.assign({className:p("flex gap-x-3 max-w-[80%]",J?"pr-9":"pl-9","viewport"===S?J?"min-[767px]:pr-0":"min-[767px]:pl-0":J?"@[767px]/pickaxe-root:pr-0":"@[767px]/pickaxe-root:pl-0")},{children:s("div",Object.assign({className:p(D.b2,"overflow-x-auto overflow-y-hidden px-4 py-3 scrollbar-thin scrollbar-track-white scrollbar-thumb-[#4A4A4B] flex flex-col gap-y-3",J?"text-right":"text-left"),style:{backgroundColor:P.secondary+"80",color:P.secondaryText,borderRadius:A.cornerRadius}},{children:[v.documentIds&&v.documentIds.length>0&&e("div",Object.assign({className:p("flex flex-col gap-y-2",J?"items-start":"items-end")},{children:v.documentIds.map((s=>e(t,{children:e(m,{documentId:s})},s)))})),e(n,Object.assign({theme:A.theme,colors:P},J&&{rtl:!0},L&&{disableHtml:!0},M&&{disableJs:!0},T&&{disableCss:!0},{children:e(d,{parts:v.parts})}))]}))}))})):e("div",{})};export{j as default};
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Fragment as t}from"react";import{usePickaxeContext as i}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useStyleFontSize as o}from"../../../../hooks/studio/useStyleFontSize.js";import{useResponseContext as a}from"../../../../hooks/pickaxe/useResponseContext.js";import{useArtifact as r}from"../../Addons/Artifact/hooks/useArtifact.js";import{PickaxeMarkdown as n}from"../../common/PickaxeMarkdown/index.js";import l from"../../common/PickaxeIcon.js";import m from"./Document.js";import c from"../../common/PickaxeMessageActions.js";import d from"../../common/PickaxeMessageParts/index.js";import p from"../../../../common/cn.js";import{convertToIso1 as x}from"../../../../common/isoMap.js";import{franc as f}from"franc-min";import u from"../../common/ComposioConnectView.js";import h from"../../common/SmitheryConnectView.js";import{useTextToSpeech as g}from"../../../../hooks/pickaxe/useTextToSpeech.js";import b from"remove-markdown";const j=({index:j,message:v,smitheryData:k,resubmitPrompt:y,isLastMessage:w=!1})=>{var O,N;const{pickaxeId:C,pickaxe:I,styles:A,colors:P,misc:R,responsiveBy:S,disableHtml:L,disableJs:M,disableCss:T,isNewChat:H,isRtl:J}=i(),{isGenerating:V}=a(),{onLoadArtifact:B}=r(),D=o(),F=null!==(O=null==I?void 0:I.chaticon)&&void 0!==O?O:`https://cdn.mail.studio/chaticons/${C}.png`,z=w&&V,E=null==I?void 0:I.enablereadout,{isLoading:G,isSpeaking:U,speak:$,stop:q}=g(E&&"assistant"===v.role,null==I?void 0:I.readoutvoice),K=()=>{if(G||U)return void q();const e=v.parts.filter((e=>"text"===e.type)).map((e=>e.content)).join(" ");if(!e)return;const s=b(e,{stripListLeaders:!0,listUnicodeChar:"",gfm:!0,useImgAltText:!1}),t=f(s),i=x(t);$(s,i)},Q=!v.parts.some((e=>["text","reasoning","data-action-tool-caption"].includes(e.type)));return"assistant"===v.role?e("div",Object.assign({className:p("flex w-full",J?"justify-end":"justify-start")},{children:e("div",Object.assign({className:p("flex flex-col w-full",0===j&&H&&"viewport"===S&&"min-[767px]:max-w-[80%]",0===j&&H&&"container"===S&&"@[767px]/pickaxe-root:max-w-[80%]")},{children:s("div",Object.assign({className:p("flex gap-x-3",J&&"flex-row-reverse")},{children:[R.isChatImage&&"NONE"!==F&&e(l,{src:F,alt:"Assistant",width:24,height:24,className:"my-3 h-6 w-6",textColor:P.text}),s("div",Object.assign({className:p("flex flex-col flex-grow",J?"items-end":"items-start")},{children:[s("div",Object.assign({className:p(D.b2,"chat-message pt-3 w-full",J?"text-right":"text-left")},{children:[e(n,Object.assign({theme:A.theme,colors:P},J&&{rtl:!0},L&&{disableHtml:!0},M&&{disableJs:!0},T&&{disableCss:!0},{disableReasoning:null!==(N=null==I?void 0:I.enablereasoningdisplay)&&void 0!==N&&N,onArtifactClick:B},{children:e(d,{parts:v.parts})})),w&&k&&y&&("composio"===k.provider?e("div",Object.assign({className:"mt-4 px-1"},{children:e(u,{serverId:k.serverId,toolkitSlug:k.toolkitSlug||"",name:k.name,resubmitPrompt:()=>y()})})):e("div",Object.assign({className:"mt-4 px-1"},{children:e(h,{serverId:k.serverId,smitheryId:k.smitheryId||"",name:k.name||k.smitheryId,resubmitPrompt:()=>y()})})))]})),e("div",Object.assign({className:p("flex flex-col gap-6 my-4",Q&&"mt-2")},{children:z?e("div",Object.assign({className:"flex items-center gap-x-2 rounded"},{children:Array.from({length:3}).map(((s,t)=>e("div",{className:p("h-1.5 w-1.5 animate-dot rounded-full",1===t&&"animate-dot-down"),style:{backgroundColor:P.secondaryText}},t)))})):e(c,Object.assign({content:v.parts.filter((e=>e.isVisible&&"text"===e.type)).map((e=>e.content)).join("\n"),index:j},"intromessage"===v.area&&{isHideFeedback:!0},{onReadOut:K,isReadOut:E||!1,isReadOutLoading:G,isReading:U}))}))]}))]}))}))})):"user"===v.role?e("div",Object.assign({className:p("flex w-full",J?"justify-start":"justify-end")},{children:e("div",Object.assign({className:p("flex gap-x-3 max-w-[80%]",J?"pr-9":"pl-9","viewport"===S?J?"min-[767px]:pr-0":"min-[767px]:pl-0":J?"@[767px]/pickaxe-root:pr-0":"@[767px]/pickaxe-root:pl-0")},{children:s("div",Object.assign({className:p(D.b2,"overflow-x-auto overflow-y-hidden px-4 py-3 scrollbar-thin scrollbar-track-white scrollbar-thumb-[#4A4A4B] flex flex-col gap-y-3",J?"text-right":"text-left"),style:{backgroundColor:P.secondary+"80",color:P.secondaryText,borderRadius:A.cornerRadius}},{children:[v.documentIds&&v.documentIds.length>0&&e("div",Object.assign({className:p("flex flex-col gap-y-2",J?"items-start":"items-end")},{children:v.documentIds.map((s=>e(t,{children:e(m,{documentId:s})},s)))})),e(n,Object.assign({theme:A.theme,colors:P},J&&{rtl:!0},L&&{disableHtml:!0},M&&{disableJs:!0},T&&{disableCss:!0},{children:e(d,{parts:v.parts})}))]}))}))})):e("div",{})};export{j as default};
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../_virtual/_tslib.js";import{pickaxeApi2 as n}from"../../common/api/pickaxe.js";import{useState as t,useRef as r,useEffect as o,useCallback as s}from"react";const i={ar:"ar-SA",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",en:"en-US",es:"es-ES",fi:"fi-FI",fr:"fr-FR",he:"he-IL",hi:"hi-IN",it:"it-IT",ja:"ja-JP",ko:"ko-KR",nb:"nb-NO",nl:"nl-NL",pl:"pl-PL",pt:"pt-PT",ro:"ro-RO",ru:"ru-RU",sv:"sv-SE",th:"th-TH",tr:"tr-TR",vi:"vi-VN",zh:"zh-CN",zu:"zu-ZA"};let l=null;const c=new Map,a=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"),u=({text:t,language:r,browserVoices:o=[],onLoading:s,onPlay:u,onEnd:p})=>{var h;null==l||l.cancel(),null===(h=window.speechSynthesis)||void 0===h||h.cancel();let d=null,w=null,g=!1,v=!1,f=!1;const S=()=>{v||(v=!0,null==d||d.close(),d=null,l===y&&(l=null),p())},m=()=>{g||v||u()},y={cancel:()=>{var e;g||v||(g=!0,null==w||w.close(),w=null,null==d||d.pause(),null==d||d.close(),d=null,null===(e=window.speechSynthesis)||void 0===e||e.cancel(),S())}};l=y,s();return e(void 0,void 0,void 0,(function*(){var e;try{const[{data:o},s]=yield Promise.all([n.post("/speech"),import("microsoft-cognitiveservices-speech-sdk")]);if(!o.success||!o.token)throw new Error(o.error||"Azure Speech token was not returned");if(g||v)return;const l=(e=>{if(!e)return"en-US";const n=e.toLowerCase();return"pt-br"===n?"pt-BR":i[n.split("-")[0]]||e})(r),u=s.SpeechConfig.fromAuthorizationToken(o.token,"eastus");u.speechSynthesisLanguage=l,u.speechSynthesisOutputFormat=s.SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3;const p=new s.SpeakerAudioDestination;p.onAudioStart=()=>{const e=p.internalAudio;e?e.addEventListener("playing",m,{once:!0}):m()},p.onAudioEnd=S,d=p;const h=s.AudioConfig.fromSpeakerOutput(p),f=new s.SpeechSynthesizer(u,h);w=f;let y=c.get(l);if(!y){const n=yield f.getVoicesAsync(l);if(g||v)return;if(y=null===(e=n.voices.find((e=>e.locale===l)))||void 0===e?void 0:e.shortName,!y)throw new Error(`No Azure voice is available for ${l}`);c.set(l,y)}const k=y,A=yield new Promise(((e,n)=>{const r=`<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="${l}"><voice name="${a(k)}"><break time="500ms"/>${a(t)}</voice></speak>`;f.speakSsmlAsync(r,e,n)}));if(f.close(),w=null,g||v)return;if(A.reason!==s.ResultReason.SynthesizingAudioCompleted)throw new Error(A.errorDetails||"Azure speech synthesis failed")}catch(e){if(null==w||w.close(),w=null,null==d||d.close(),d=null,g||v)return;console.warn("Azure text-to-speech failed; using browser speech",e),(()=>{if(g||v||f)return;if(f=!0,!("speechSynthesis"in window)||!("SpeechSynthesisUtterance"in window))return void S();const e=new SpeechSynthesisUtterance(t),n=r||"en",s=o.find((e=>e.lang.startsWith(n)&&e.name.includes("Google")))||o.find((e=>e.lang.startsWith(n)));s?(e.voice=s,e.lang=s.lang):e.lang=n,e.onstart=m,e.onend=S,e.onerror=S,window.speechSynthesis.speak(e)})()}})),y},p=(e=!0)=>{const[n,i]=t(!1),[l,c]=t(!1),[a,p]=t([]),h=r(null),d=r(!0);o((()=>(d.current=!0,()=>{var e;d.current=!1,null===(e=h.current)||void 0===e||e.cancel(),h.current=null})),[]),o((()=>{if(!e||!("speechSynthesis"in window))return;const n=()=>{const e=window.speechSynthesis.getVoices();e.length>0&&p(e)};return n(),window.speechSynthesis.addEventListener("voiceschanged",n),()=>{window.speechSynthesis.removeEventListener("voiceschanged",n)}}),[e]);const w=s((()=>{var e;null===(e=h.current)||void 0===e||e.cancel(),h.current=null}),[]);return{isLoading:n,isSpeaking:l,speak:s(((e,n)=>{if(!e)return;const t=u({text:e,language:n,browserVoices:a,onLoading:()=>{d.current&&(i(!0),c(!1))},onPlay:()=>{d.current&&(i(!1),c(!0))},onEnd:()=>{h.current===t&&(h.current=null),d.current&&(i(!1),c(!1))}});h.current=t}),[a]),stop:w}};export{p as useTextToSpeech};
1
+ import{__awaiter as e}from"../../_virtual/_tslib.js";import{pickaxeApi2 as n}from"../../common/api/pickaxe.js";import{useState as t,useRef as r,useEffect as o,useCallback as s}from"react";const i={ar:"ar-SA",ca:"ca-ES",cs:"cs-CZ",da:"da-DK",de:"de-DE",en:"en-US",es:"es-ES",fi:"fi-FI",fr:"fr-FR",he:"he-IL",hi:"hi-IN",it:"it-IT",ja:"ja-JP",ko:"ko-KR",nb:"nb-NO",nl:"nl-NL",pl:"pl-PL",pt:"pt-PT",ro:"ro-RO",ru:"ru-RU",sv:"sv-SE",th:"th-TH",tr:"tr-TR",vi:"vi-VN",zh:"zh-CN",zu:"zu-ZA"};let l=null;const c=new Map,a=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;"),u=({text:t,language:r,preferredVoiceName:o,browserVoices:s=[],onLoading:u,onPlay:p,onEnd:h})=>{var d;null==l||l.cancel(),null===(d=window.speechSynthesis)||void 0===d||d.cancel();let w=null,g=null,v=!1,f=!1,S=!1;const m=()=>{f||(f=!0,null==w||w.close(),w=null,l===k&&(l=null),h())},y=()=>{v||f||p()},k={cancel:()=>{var e;v||f||(v=!0,null==g||g.close(),g=null,null==w||w.pause(),null==w||w.close(),w=null,null===(e=window.speechSynthesis)||void 0===e||e.cancel(),m())}};l=k,u();return e(void 0,void 0,void 0,(function*(){var e;try{const[{data:s},l]=yield Promise.all([n.post("/speech"),import("microsoft-cognitiveservices-speech-sdk")]);if(!s.success||!s.token)throw new Error(s.error||"Azure Speech token was not returned");if(v||f)return;const u=(e=>{if(!e)return"en-US";const n=e.toLowerCase();return"pt-br"===n?"pt-BR":i[n.split("-")[0]]||e})(r),p=l.SpeechConfig.fromAuthorizationToken(s.token,"eastus");p.speechSynthesisLanguage=u,p.speechSynthesisOutputFormat=l.SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3;const h=new l.SpeakerAudioDestination;h.onAudioStart=()=>{const e=h.internalAudio;e?e.addEventListener("playing",y,{once:!0}):y()},h.onAudioEnd=m,w=h;const d=l.AudioConfig.fromSpeakerOutput(h),S=new l.SpeechSynthesizer(p,d);g=S;let k=o||c.get(u);if(!k){const n=yield S.getVoicesAsync(u);if(v||f)return;if(k=null===(e=n.voices.find((e=>e.locale===u)))||void 0===e?void 0:e.shortName,!k)throw new Error(`No Azure voice is available for ${u}`);c.set(u,k)}const A=k,E=yield new Promise(((e,n)=>{const r=`<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="${u}"><voice name="${a(A)}"><break time="500ms"/>${a(t)}</voice></speak>`;S.speakSsmlAsync(r,e,n)}));if(S.close(),g=null,v||f)return;if(E.reason!==l.ResultReason.SynthesizingAudioCompleted)throw new Error(E.errorDetails||"Azure speech synthesis failed")}catch(e){if(null==g||g.close(),g=null,null==w||w.close(),w=null,v||f)return;console.warn("Azure text-to-speech failed; using browser speech",e),(()=>{if(v||f||S)return;if(S=!0,!("speechSynthesis"in window)||!("SpeechSynthesisUtterance"in window))return void m();const e=new SpeechSynthesisUtterance(t),n=r||"en",o=s.find((e=>e.lang.startsWith(n)&&e.name.includes("Google")))||s.find((e=>e.lang.startsWith(n)));o?(e.voice=o,e.lang=o.lang):e.lang=n,e.onstart=y,e.onend=m,e.onerror=m,window.speechSynthesis.speak(e)})()}})),k},p=(e=!0,n)=>{const[i,l]=t(!1),[c,a]=t(!1),[p,h]=t([]),d=r(null),w=r(!0);o((()=>(w.current=!0,()=>{var e;w.current=!1,null===(e=d.current)||void 0===e||e.cancel(),d.current=null})),[]),o((()=>{if(!e||!("speechSynthesis"in window))return;const n=()=>{const e=window.speechSynthesis.getVoices();e.length>0&&h(e)};return n(),window.speechSynthesis.addEventListener("voiceschanged",n),()=>{window.speechSynthesis.removeEventListener("voiceschanged",n)}}),[e]);const g=s((()=>{var e;null===(e=d.current)||void 0===e||e.cancel(),d.current=null}),[]);return{isLoading:i,isSpeaking:c,speak:s(((e,t)=>{if(!e)return;const r=u({text:e,language:t,preferredVoiceName:n,browserVoices:p,onLoading:()=>{w.current&&(l(!0),a(!1))},onPlay:()=>{w.current&&(l(!1),a(!0))},onEnd:()=>{d.current===r&&(d.current=null),w.current&&(l(!1),a(!1))}});d.current=r}),[p,n]),stop:g}};export{p as useTextToSpeech};
@@ -1,4 +1,4 @@
1
- export declare const useTextToSpeech: (enabled?: boolean) => {
1
+ export declare const useTextToSpeech: (enabled?: boolean, preferredVoiceName?: string | null) => {
2
2
  isLoading: boolean;
3
3
  isSpeaking: boolean;
4
4
  speak: (text: string, language?: string) => void;
@@ -23,6 +23,7 @@ export type Pickaxe = {
23
23
  enablevoicetotext: boolean;
24
24
  enablereasoningdisplay: boolean;
25
25
  enablereadout: boolean;
26
+ readoutvoice?: string | null;
26
27
  featured: boolean;
27
28
  formdescription: string;
28
29
  formtitle: string;
@@ -72,6 +73,7 @@ export type LimitedPickaxe = {
72
73
  enablevoicetotext: boolean;
73
74
  enablereasoningdisplay: boolean;
74
75
  enablereadout: boolean;
76
+ readoutvoice?: string | null;
75
77
  formdescription: string;
76
78
  formtitle: string;
77
79
  intromessage?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pickaxeproject/react",
3
- "version": "6.13.0",
3
+ "version": "6.13.1",
4
4
  "description": "Client utility library for Pickaxe",
5
5
  "repository": {
6
6
  "type": "git",