efficient-shell 8.41.0 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Browser-4C26ZOKV.js → Browser-FTCJCMD3.js} +14 -14
- package/dist/Calculator-7O7HXEKH.js +29 -0
- package/dist/{CurrencyConverter-5XTNXV6T.js → CurrencyConverter-IVJJCYZ7.js} +6 -6
- package/dist/{Documents-VVKKYYJS.js → Documents-BOVXZFYC.js} +19 -19
- package/dist/{Files-BK7OAVOI.js → Files-YWBBU2FZ.js} +42 -42
- package/dist/{Notepad-Z5XVWR2N.js → Notepad-KKKCTUB3.js} +11 -11
- package/dist/{PomodoroTimer-ZVD3D357.js → PomodoroTimer-ZCJBTFV5.js} +1 -1
- package/dist/{Preview-K5AJQGE7.js → Preview-CHV67AA7.js} +24 -24
- package/dist/Sidebar-6I4FC5AK.js +43 -0
- package/dist/{Spreadsheet-CCTSMXEG.js → Spreadsheet-SNLKLOLL.js} +11 -11
- package/dist/{Stock-53UOMBQW.js → Stock-PHY6Z26A.js} +7 -7
- package/dist/{Weather-S2ZIGNSU.js → Weather-YQA5CAFQ.js} +13 -13
- package/dist/{WorldClock-A62SDKTE.js → WorldClock-J6L7FWI2.js} +6 -6
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.js +33 -33
- package/dist/apps/index.js +1 -1
- package/dist/bin/media-host-check.js +1 -1
- package/dist/bin/ui-check.js +1 -1
- package/dist/charts/BoxPlotChart.js +1 -1
- package/dist/charts/CandlestickChart.js +1 -1
- package/dist/charts/CartesianPlot.js +1 -1
- package/dist/charts/ChordChart.js +1 -1
- package/dist/charts/ColumnChart.js +1 -1
- package/dist/charts/HeatmapChart.js +1 -1
- package/dist/charts/HistogramChart.js +1 -1
- package/dist/charts/RadarChart.js +1 -1
- package/dist/charts/RangeChart.js +1 -1
- package/dist/charts/SankeyChart.js +1 -1
- package/dist/charts/ScatterChart.js +1 -1
- package/dist/charts/SpecChart.js +1 -1
- package/dist/charts/SunburstChart.js +1 -1
- package/dist/charts/TimeSeriesChart.js +1 -1
- package/dist/charts/TreemapChart.js +1 -1
- package/dist/charts/WaterfallChart.js +1 -1
- package/dist/{chunk-N2SJNPFY.js → chunk-3CST4ZDP.js} +3 -3
- package/dist/chunk-3S3DYAVB.js +4 -0
- package/dist/{chunk-H33Z4ZIY.js → chunk-3WC6ITJ3.js} +6 -6
- package/dist/{chunk-ZVEOWBXE.js → chunk-45S6M77O.js} +6 -6
- package/dist/{chunk-C4YN2DNM.js → chunk-4OFD6ICH.js} +10 -10
- package/dist/{chunk-W6TS6WGA.js → chunk-7C56GLLI.js} +17 -17
- package/dist/{chunk-L73LI7FG.js → chunk-7MSFHQAY.js} +7 -7
- package/dist/chunk-AAW27HJY.js +3 -0
- package/dist/{chunk-L3G3YHVN.js → chunk-B2XDNBR3.js} +1 -1
- package/dist/{chunk-IFDW5QW6.js → chunk-BIYL7CEI.js} +2 -2
- package/dist/{chunk-JVIOAZHW.js → chunk-BUGAWNOC.js} +4 -4
- package/dist/{chunk-NL5G26Q7.js → chunk-CPK7JTN3.js} +1 -1
- package/dist/{chunk-L5ND7FNA.js → chunk-DXTKNHWG.js} +7 -7
- package/dist/{chunk-37CCKGHU.js → chunk-EYX6KLCZ.js} +1 -1
- package/dist/chunk-EZULNHQH.js +5 -0
- package/dist/{chunk-ZNCU3UIW.js → chunk-FRPNTDP4.js} +4 -4
- package/dist/{chunk-3AKIKASU.js → chunk-G63BCOQ6.js} +1 -1
- package/dist/{chunk-Z35NWGMT.js → chunk-KFJIO5ED.js} +2 -2
- package/dist/{chunk-6NSCK3YX.js → chunk-KJY57QPT.js} +23 -23
- package/dist/{chunk-JUGPTBMS.js → chunk-LBLV64XG.js} +1 -1
- package/dist/{chunk-RGOUJFAO.js → chunk-LGAN7DNC.js} +3 -3
- package/dist/{chunk-BX2IOAD5.js → chunk-N2K6OAFM.js} +1 -1
- package/dist/{chunk-DZ6B5XCG.js → chunk-NGBT7AHL.js} +5 -5
- package/dist/{chunk-WSPO4N72.js → chunk-OSA24YH6.js} +14 -14
- package/dist/{chunk-5BZMSSOV.js → chunk-PXEEDRPW.js} +2 -2
- package/dist/{chunk-MG7OPTLQ.js → chunk-QDLGU62M.js} +1 -1
- package/dist/{chunk-5DFKPSJQ.js → chunk-QTV3Y3UT.js} +1 -1
- package/dist/{chunk-I4VD5D43.js → chunk-RSO67DWS.js} +4 -4
- package/dist/{chunk-BKZGI76S.js → chunk-TFMC2WAS.js} +1 -1
- package/dist/{chunk-2CGZX62Z.js → chunk-TH6EAYMO.js} +15 -15
- package/dist/chunk-TVDVVPTN.js +1 -0
- package/dist/{chunk-QVR4LBBW.js → chunk-U4BMS5EV.js} +1 -1
- package/dist/{chunk-ZX2D25LG.js → chunk-VYXDI63I.js} +1 -1
- package/dist/{chunk-ETF7LAYZ.js → chunk-W5M6P4DZ.js} +5 -5
- package/dist/{chunk-VFCWCGO3.js → chunk-Y37PBT4H.js} +3 -3
- package/dist/{chunk-3BSPSRK4.js → chunk-Y6IQYQYN.js} +3 -3
- package/dist/chunk-YAEUF3GP.js +1 -0
- package/dist/chunk-YALPQIBR.js +7 -0
- package/dist/{chunk-2C6IG7LG.js → chunk-Z2YGQBLZ.js} +1 -1
- package/dist/{chunk-5E3WCKWB.js → chunk-ZCHBOAPA.js} +1 -1
- package/dist/{chunk-M2AIC7IK.js → chunk-ZEKM6HAA.js} +2 -2
- package/dist/{chunk-ZNXBKFV7.js → chunk-ZOSIPTXM.js} +5 -5
- package/dist/{chunk-26AYPJSK.js → chunk-ZSFUNXRD.js} +4 -4
- package/dist/{chunk-FORJ75AU.js → chunk-ZWAVSUWT.js} +2 -2
- package/dist/data/ListLoadError.js +1 -1
- package/dist/format/index.js +1 -1
- package/dist/forms/BorderInput.js +1 -1
- package/dist/forms/BrandAssetEditor.js +1 -1
- package/dist/forms/ColorPicker.js +1 -1
- package/dist/forms/ComposerAttachments.js +1 -1
- package/dist/forms/CornersInput.js +1 -1
- package/dist/forms/DisplayChips.js +1 -1
- package/dist/forms/IconPicker.js +1 -1
- package/dist/forms/InputNumber.js +1 -1
- package/dist/forms/LinkPicker.js +1 -1
- package/dist/forms/MediaLibrary.js +1 -1
- package/dist/forms/MediaUploadField.js +1 -1
- package/dist/forms/MediaUsedInList.js +1 -1
- package/dist/forms/PositionInput.js +1 -1
- package/dist/forms/Select.d.ts +1 -1
- package/dist/forms/SidesInput.js +1 -1
- package/dist/forms/Slider.d.ts +7 -1
- package/dist/forms/Slider.js +1 -1
- package/dist/forms/Snippet.js +1 -1
- package/dist/forms/SplitButton.js +1 -1
- package/dist/forms/TextToolbar.d.ts +1 -1
- package/dist/forms/TextToolbar.js +1 -1
- package/dist/forms/WidthsBar.js +1 -1
- package/dist/forms/textAlign.d.ts +1 -1
- package/dist/icons/efficient-glyphs.d.ts +0 -1
- package/dist/icons/efficient-glyphs.js +1 -1
- package/dist/icons/efficient-looks.js +1 -1
- package/dist/icons/efficient-meanings.d.ts +0 -1
- package/dist/icons/efficient-meanings.js +1 -1
- package/dist/icons/efficient.d.ts +0 -1
- package/dist/icons/efficient.js +1 -1
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/index.js +1 -1
- package/dist/icons/looks/map.js +1 -1
- package/dist/icons/sets.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +169 -169
- package/dist/map/index.js +1 -1
- package/dist/{names-mX74Rrmy.d.ts → names-C1TgIb_2.d.ts} +1 -1
- package/dist/page-tabs/index.js +5 -5
- package/dist/shell/AppUpdateBanner.js +1 -1
- package/dist/shell/ContextMenu.js +1 -1
- package/dist/shell/DropdownMenu.js +1 -1
- package/dist/shell/HelpCenter.js +1 -1
- package/dist/shell/ImageLightbox.js +1 -1
- package/dist/shell/LanguageSelect.js +1 -1
- package/dist/shell/Markdown.d.ts +1 -1
- package/dist/shell/Markdown.js +1 -1
- package/dist/shell/PopupMenu.js +1 -1
- package/dist/shell/SearchableSelect.js +1 -1
- package/dist/shell/SettingReset.js +1 -1
- package/dist/shell/SettingRow.js +1 -1
- package/dist/shell/TopNav.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/templates/ChatTemplate.js +1 -1
- package/dist/templates/CheckoutTemplate.js +1 -1
- package/dist/templates/DashboardTemplate.js +1 -1
- package/dist/templates/DataTablePage.js +1 -1
- package/dist/templates/EmailTemplate.js +1 -1
- package/dist/templates/FormLayoutPage.js +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/Calculator-MNTQSI6M.js +0 -29
- package/dist/Sidebar-LYTGLTQJ.js +0 -43
- package/dist/chunk-6BLWURSG.js +0 -4
- package/dist/chunk-CWXKRYVY.js +0 -5
- package/dist/chunk-FORUFXAN.js +0 -7
- package/dist/chunk-HTYRV4WU.js +0 -3
- package/dist/chunk-IUMFKZY7.js +0 -4
- package/dist/chunk-NMKADD77.js +0 -1
- package/dist/chunk-VRODVMV3.js +0 -1
- package/dist/icons/glyphs/QuietIcon.d.ts +0 -8
- package/dist/icons/glyphs/QuietIcon.js +0 -1
- /package/dist/{chunk-EHPZIBOL.js → chunk-KC54JQYK.js} +0 -0
package/dist/ai/index.js
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{StepChain as e,StepChainItem as t}from"../chunk-EXWGPXOS.js";import{Markdown as n}from"../chunk-6BCFVOG7.js";import{Textarea_default as r}from"../chunk-7PCI6AUU.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{useContextMenu as a,ContextMenu as o}from"../chunk-
|
|
3
|
-
/* @__PURE__ */R("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */R(r,{ref:j,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:b,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),
|
|
2
|
+
import{StepChain as e,StepChainItem as t}from"../chunk-EXWGPXOS.js";import{Markdown as n}from"../chunk-6BCFVOG7.js";import{Textarea_default as r}from"../chunk-7PCI6AUU.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{useContextMenu as a,ContextMenu as o}from"../chunk-ZWAVSUWT.js";import{Banner as s}from"../chunk-UZMZ2EDW.js";import"../chunk-Y6IQYQYN.js";import{Input_default as l}from"../chunk-GX2GSDJP.js";import{AttachButton as i,AttachmentDropZone as c}from"../chunk-NGBT7AHL.js";import{IconButton_default as d}from"../chunk-4CANQ3B3.js";import"../chunk-PF3ANJFI.js";import{CloseGlyph as p}from"../chunk-4Y4PWKMM.js";import"../chunk-S7VSXUKS.js";import{useFileIntake as u,humanSize as m,FileIntakeAlert as h}from"../chunk-YDYDR72S.js";import{parseChartSpec as f}from"../chunk-CR7T435F.js";import{SpecChart as g}from"../chunk-TFMC2WAS.js";import{formatBytes as b}from"../chunk-X2S2XDZI.js";import"../chunk-5OTS2G3M.js";import"../chunk-36BRD5J3.js";import"../chunk-OSA24YH6.js";import"../chunk-CK2YOGUS.js";import"../chunk-BRHIRE4D.js";import"../chunk-VFC6QUEN.js";import"../chunk-W5M6P4DZ.js";import"../chunk-465RRWBY.js";import{ChartSkeleton as v}from"../chunk-Y4MI6NRI.js";import"../chunk-CNYAHYE6.js";import"../chunk-DXTKNHWG.js";import"../chunk-QR4RM7PO.js";import"../chunk-5QFPTDQF.js";import"../chunk-D323R2FT.js";import{Button_default as y}from"../chunk-4IU5BSVE.js";import"../chunk-K7U4RWXJ.js";import"../chunk-VH6GB73Q.js";import{Icon as x}from"../chunk-FSPFV4MI.js";import"../chunk-J75ZT2JQ.js";import{SpinnerRing as w}from"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-6KO5VTL7.js";import"../chunk-22S6LG6D.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-P5BOTIJU.js";import"../chunk-DTJRIWFR.js";import"../chunk-RSO67DWS.js";import"../chunk-MG7A3R75.js";import"../chunk-2JWPNR2U.js";import"../chunk-MAFUXCPZ.js";import"../chunk-TWVUQUUD.js";import"../chunk-EYKUKN32.js";import"../chunk-TZFACUMR.js";import{useShellStrings as k}from"../chunk-E6UCGCOC.js";import"../chunk-C3QOHMR6.js";import{useRef as N,useState as A,useEffect as C,useId as j,useCallback as S,useMemo as O}from"react";import{jsx as R,jsxs as T,Fragment as $}from"react/jsx-runtime";import{isToolUIPart as I,getToolName as _,DefaultChatTransport as M,lastAssistantMessageIsCompleteWithApprovalResponses as z}from"ai";import{useChat as D}from"@ai-sdk/react";function F({labels:e,placeholder:t,busy:n,focusWhen:a,onSend:o,onStop:s,onNewChat:l,actions:f,attachments:g}){const[b,v]=A(""),j=N(null),O=function(e){const[t,n]=A([]),r=N(0),a=N(!0);C(()=>()=>{a.current=!1},[]);const o=e?.upload,s=S(e=>{if(o)for(const t of e){const e=r.current++;n(n=>[...n,{key:e,name:t.name,size:t.size}]),o(t).then(t=>{a.current&&n(n=>n.map(n=>n.key===e?{...n,attachment:t}:n))},t=>{const r=t instanceof Error&&t.message?t.message:String(t);a.current&&n(t=>t.map(t=>t.key===e?{...t,error:r}:t))})}},[o]),l=t.some(e=>!e.attachment&&!e.error),i=t.flatMap(e=>e.attachment?[e.attachment]:[]);return{pending:t,add:s,remove:e=>n(t=>t.filter(t=>t.key!==e)),clear:()=>n([]),uploading:l,ready:i}}(g),$=k().files,I=u({accept:g?.accept,maxSizeBytes:g?.maxSizeBytes,maxFiles:g?.maxFiles??5,acceptHint:g?.acceptHint,currentCount:O.pending.length,disabled:!g,onAccept:O.add});C(()=>{a&&j.current?.focus()},[a]);const _=n||O.uploading||!b.trim(),M=()=>{_||(o(b,O.ready),v(""),O.clear(),I.clearRejections())},z=/* @__PURE__ */T("form",{className:("flex items-end gap-2 p-3 "+(g?"":"border-t border-gray-200")).trim(),onSubmit:e=>{e.preventDefault(),M()},children:[l&&/* @__PURE__ */R(d,{type:"button",variant:"ghost","aria-label":e.newChat,title:e.newChat,onClick:l,children:/* @__PURE__ */R(x,{name:"add"})}),g&&/* @__PURE__ */R(i,{variant:"icon",label:e.attach,onClick:I.open,disabled:n}),
|
|
3
|
+
/* @__PURE__ */R("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */R(r,{ref:j,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:b,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),M())},className:"max-h-32"})}),f?.map(e=>e.icon?/* @__PURE__ */R(d,{type:"button",variant:"ghost","aria-label":e.label,title:e.label,disabled:!b.trim(),onClick:()=>e.onSelect(b.trim()),children:/* @__PURE__ */R(x,{name:e.icon})},e.key):/* @__PURE__ */R(y,{type:"button",variant:"ghost",disabled:!b.trim(),onClick:()=>e.onSelect(b.trim()),children:e.label},e.key)),/* @__PURE__ */R(y,n?{type:"button",variant:"secondary",onClick:s,children:e.stop}:{type:"submit",disabled:_,children:e.send})]});return g?/* @__PURE__ */T(c,{intake:I,className:"border-t border-gray-200",children:[O.pending.length>0&&/* @__PURE__ */R("ul",{className:"flex flex-wrap gap-2 px-3 pt-3",children:O.pending.map(t=>/* @__PURE__ */T("li",{className:"flex max-w-full items-center gap-2 rounded-md border py-1 pl-2 pr-1 text-xs "+(t.error?"border-red-200 bg-red-50 text-red-700":"border-gray-200 bg-gray-50 text-gray-700"),children:[t.attachment||t.error?/* @__PURE__ */R(x,{name:"page",size:14,"aria-hidden":"true"}):/* @__PURE__ */R("span",{role:"status","aria-label":e.attaching,className:"inline-flex",children:/* @__PURE__ */R(w,{className:"h-3 w-3"})}),
|
|
4
4
|
/* @__PURE__ */R("span",{className:"min-w-0 truncate",title:t.error??t.name,children:t.name}),
|
|
5
|
-
/* @__PURE__ */R("span",{className:"shrink-0 tabular-nums text-gray-400",children:m(t.size
|
|
6
|
-
/* @__PURE__ */R("button",{type:"button",onClick:()=>O.remove(t.key),"aria-label":e.removeAttachment.replace("{name}",t.name),className:"shrink-0 rounded p-0.5 text-gray-400 hover:bg-gray-200 hover:text-gray-600",children:/* @__PURE__ */R(
|
|
7
|
-
/* @__PURE__ */R(h,{rejections:
|
|
8
|
-
return R("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */R(e,{summary:be(n,r),busy:
|
|
9
|
-
return
|
|
5
|
+
/* @__PURE__ */R("span",{className:"shrink-0 tabular-nums text-gray-400",children:m(t.size,$)}),
|
|
6
|
+
/* @__PURE__ */R("button",{type:"button",onClick:()=>O.remove(t.key),"aria-label":e.removeAttachment.replace("{name}",t.name),className:"shrink-0 rounded p-0.5 text-gray-400 hover:bg-gray-200 hover:text-gray-600",children:/* @__PURE__ */R(p,{className:"h-3.5 w-3.5"})})]},t.key))}),O.pending.some(e=>e.error)&&/* @__PURE__ */R("ul",{role:"alert",className:"flex flex-col gap-0.5 px-3 pt-1",children:O.pending.flatMap(e=>e.error?[/* @__PURE__ */R("li",{className:"text-xs text-red-600",children:`${e.name}: ${e.error}`},e.key)]:[])}),
|
|
7
|
+
/* @__PURE__ */R(h,{rejections:I.rejections,className:"px-3 pt-1"}),z]}):z}function U(e){if(!I(e))return null;const t=e;return{toolName:_(e),toolCallId:t.toolCallId,state:t.state,input:t.input,output:t.output,errorText:t.errorText,approvalId:t.approval?.id,approved:t.approval?.approved}}function E(e){const t=/* @__PURE__ */new Map;for(const n of e.parts){if("data-tool-summary"!==n.type)continue;const e=n.data;e&&"string"==typeof e.tool_call_id&&Array.isArray(e.rows)&&e.rows.length>0&&t.set(e.tool_call_id,e)}return t}function L(e){const t=/* @__PURE__ */new Map;for(const n of e.parts){if("data-file"!==n.type)continue;const e=n.data;e&&"string"==typeof e.id&&"string"==typeof e.filename&&t.set(e.id,e)}return[...t.values()]}function B(e){return e.parts.map(e=>"text"===e.type?e.text:"").join("")}var W="efficient-attachment:";function P(e){return{type:"file",mediaType:e.content_type,filename:e.filename,url:`${W}${e.id}`,providerMetadata:{efficient:{size:e.size}}}}function H(e){const t=[];for(const n of e.parts){if("file"!==n.type||!n.url.startsWith(W))continue;const e=n.providerMetadata?.efficient?.size;t.push({id:n.url.slice(21),filename:n.filename??"",content_type:n.mediaType,size:"number"==typeof e?e:0})}return t}function J(e,t){const n=e[e.length-1];if(!n)throw new Error("assistant chat: no message to send");if("user"===n.role){const e=B(n).trim();if(!e)throw new Error("assistant chat: empty message");const r=H(n).map(e=>e.id);return{conversation_id:t,text:e,approvals:[],...r.length>0?{attachments:r}:{}}}const r=function(e){const t=[];for(const n of e.parts){if(!I(n))continue;const e=n;if("approval-responded"!==e.state||!e.approval||"boolean"!=typeof e.approval.approved)continue;const r={approval_id:e.approval.id,approved:e.approval.approved};e.approval.reason&&(r.reason=e.approval.reason),t.push(r)}return t}(n);if(0===r.length)throw new Error("assistant chat: no approval decision to send");return{conversation_id:t,text:null,approvals:r}}var Y=/* @__PURE__ */new Set(["proposed","approved","running"]);function q(e){return Y.has(e.status)}function G(e){const t=[];for(const n of e.parts)"data-plan"===n.type&&t.push(n.data);return t}function Q(e){const t=/* @__PURE__ */new Map;for(const n of e)for(const e of G(n))t.delete(e.id),t.set(e.id,e);return t}function K(e){const t=[...Q(e).values()],n=t[t.length-1];if(!n)return null;if(q(n))return n;const r=e[e.length-1];return r&&"assistant"===r.role&&G(r).some(e=>e.id===n.id)?n:null}function V(e){const t={};return e.source&&e.source!==e.role&&(t.source=e.source),"assistant"===e.role&&e.run_id&&(t.run_id=e.run_id,t.rating=e.rating??null),Object.keys(t).length>0?{metadata:t}:{}}function X(e){const t=e.messages.filter(e=>e.text).map(e=>({id:e.id,role:e.role,parts:[...(e.attachments??[]).map(P),{type:"text",text:e.text},...(e.files??[]).map(e=>({type:"data-file",id:`file-${e.id}`,data:e}))],...V(e)})),n=(e.plans??[]).filter(q);return(e.pending_approvals.length>0||n.length>0)&&t.push({id:`pending-approvals-${e.id}`,role:"assistant",parts:[...n.map(e=>({type:"data-plan",id:e.id,data:e})),...e.pending_approvals.map(e=>({type:`tool-${e.tool_name}`,toolCallId:e.tool_call_id??e.approval_id,state:"approval-requested",input:e.input,approval:{id:e.approval_id}}))]}),t}function Z(e,t){const n=e?.message?.trim();if(!n)return t;if(n.startsWith("{")){try{const e=JSON.parse(n);for(const t of["detail","errorText","message","title","error"]){const n=e[t];if("string"==typeof n&&n.trim())return n.trim()}}catch{return t}return t}return n.startsWith("<")||n.length>400?t:n}var ee=/^(load failed|failed to fetch|network ?error( when attempting to fetch resource)?|(the )?network connection was lost|error in input stream|terminated)\.?$/i;function te(e){return!(!e||"AbortError"===e.name)&&ee.test(e.message?.trim()??"")}var ne=/* @__PURE__ */new Set(["budget_reached","not_permitted"]);function re(e,t,n){return te(e)?{text:n.connectionDropped,retryable:!0}:{text:Z(e,n.genericError),retryable:!(t&&ne.has(t))}}function ae(e){const t=e[e.length-1];if(!t)return!1;if("user"===t.role)return""!==B(t).trim();const n=e[e.length-2];return!(!n||"user"!==n.role||!B(n).trim())&&!t.parts.some(e=>void 0!==U(e)?.approvalId)}function oe(e){const t=e.replace(/^tool-/,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_\-.]+/g," ").trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):e}var se={propose_plan:{label:"Plan the changes",running:"Planning the changes",done:"Planned the changes"}};function le(e,t){const n=t?.[e]??se[e];return"string"==typeof n?{label:n}:n??{label:oe(e)}}function ie(e,t){return le(e,t).label}function ce(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function de(e,t,n){const r=le(e,n).describe;if(!r)return"";try{return r(ce(t))?.trim()??""}catch{return""}}function pe(e,t){return null==e?"":"boolean"==typeof e?e?"Yes":"No":"object"!=typeof e?String(e):Array.isArray(e)?e.map(e=>pe(e,t+1)).filter(Boolean).join(", "):t>=3?"…":Object.entries(e).map(([e,n])=>{const r=pe(n,t+1);return r?`${oe(e)}: ${r}`:""}).filter(Boolean).join("; ")}function ue(e){const t=ce(e),n=[];for(const[e,r]of Object.entries(t)){if(e.startsWith("_"))continue;const t=pe(r,0);t&&n.push({label:oe(e),value:t})}return 0===n.length&&null!=e&&"object"!=typeof e&&n.push({label:"Value",value:pe(e,0)}),n}var me={proposed:"planProposed",approved:"planApproved",running:"planRunning",completed:"planCompleted",failed:"planFailed",denied:"planDenied",expired:"planExpired"},he={pending:"pending",running:"active",done:"complete",failed:"failed",skipped:"skipped"};function fe(e,t){const n=de(e.tool_name,e.input,t);return`${ie(e.tool_name,t)}${n?` ${n}`:""}`}function ge(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}function be(e,t){const n=e.steps.filter(e=>"done"===e.status).length;return`${ge(t.planSummary,{done:n,total:e.steps.length})} · ${t[me[e.status]]}`}function ve({plan:n,labels:r}){/* @__PURE__ */
|
|
8
|
+
return R("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */R(e,{summary:be(n,r),busy:q(n),label:r.plan,children:n.steps.map(e=>/* @__PURE__ */R(t,{label:e.title,status:he[e.status],description:"done"!==e.status&&e.result_summary?e.result_summary:void 0},e.id))})})}function ye({approvalId:e,plan:t,input:n,labels:r,toolLabels:a,onApprove:o}){const s=function(e,t){if(e)return e.steps.map(e=>({key:e.id,title:e.title,tool_name:e.tool_name,input:e.input}));const n=t?.steps;return Array.isArray(n)?n.map((e,t)=>{const n=e??{};return{key:String(t),title:"string"==typeof n.title?n.title:"",tool_name:"string"==typeof n.tool?n.tool:"",input:n.args}}):[]}(t,n),l=ge(r.planApprovalHeading,{count:s.length});/* @__PURE__ */
|
|
9
|
+
return T("div",{role:"group","aria-label":l,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
|
|
10
10
|
/* @__PURE__ */R("div",{className:"font-medium text-gray-900",children:l}),
|
|
11
11
|
/* @__PURE__ */R("ol",{className:"mt-2 list-decimal space-y-2 pl-5",children:s.map(e=>{const t=ue(e.input);/* @__PURE__ */
|
|
12
|
-
return
|
|
13
|
-
/* @__PURE__ */R("div",{className:"font-medium text-gray-900",children:fe(e,a)}),e.title&&/* @__PURE__ */R("div",{className:"text-xs text-gray-600",children:e.title}),t.length>0&&/* @__PURE__ */R("dl",{className:"mt-1 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:t.map(e=>/* @__PURE__
|
|
12
|
+
return T("li",{children:[
|
|
13
|
+
/* @__PURE__ */R("div",{className:"font-medium text-gray-900",children:fe(e,a)}),e.title&&/* @__PURE__ */R("div",{className:"text-xs text-gray-600",children:e.title}),t.length>0&&/* @__PURE__ */R("dl",{className:"mt-1 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:t.map(e=>/* @__PURE__ */T("div",{className:"contents",children:[
|
|
14
14
|
/* @__PURE__ */R("dt",{className:"text-gray-500",children:e.label}),
|
|
15
15
|
/* @__PURE__ */R("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})]},e.key)})}),
|
|
16
|
-
/* @__PURE__
|
|
16
|
+
/* @__PURE__ */T("div",{className:"mt-3 flex gap-2",children:[
|
|
17
17
|
/* @__PURE__ */R(y,{size:"sm",onClick:()=>o(e,!0),children:r.approvePlan}),
|
|
18
|
-
/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>o(e,!1),children:r.deny})]})]})}function xe({questions:e,label:t,onAsk:n}){return 0===e.length?null:/* @__PURE__ */R("div",{role:"group","aria-label":t,className:"flex flex-wrap gap-2 pl-1",children:e.map(e=>/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>n(e),children:e},e))})}function we({initial:e,labels:t,onRate:n}){const[r,a]=A(e??null),[o,s]=A(!1),[i,c]=A(""),[
|
|
19
|
-
return R(
|
|
20
|
-
return
|
|
21
|
-
/* @__PURE__
|
|
18
|
+
/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>o(e,!1),children:r.deny})]})]})}function xe({questions:e,label:t,onAsk:n}){return 0===e.length?null:/* @__PURE__ */R("div",{role:"group","aria-label":t,className:"flex flex-wrap gap-2 pl-1",children:e.map(e=>/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>n(e),children:e},e))})}function we({initial:e,labels:t,onRate:n}){const[r,a]=A(e??null),[o,s]=A(!1),[i,c]=A(""),[p,u]=A(!1),[m,h]=A(!1),[f,g]=A(!1),b=async e=>{const t=r;a(e),h(!1),g(!0);try{return await n(e),!0}catch{return a(t),h(!0),!1}finally{g(!1)}},v=e=>{const n="up"===e?t.rateUp:t.rateDown;/* @__PURE__ */
|
|
19
|
+
return R(d,{size:"sm","aria-label":n,title:n,"aria-pressed":r?.verdict===e,disabled:f,onClick:()=>{(async e=>{if(u(!1),r?.verdict===e)return s(!1),void await b(null);const t=await b({verdict:e,note:""});s(t&&"down"===e),c("")})(e)},children:/* @__PURE__ */R(x,{name:"hand-thumb-up",className:"down"===e?"rotate-180":void 0})})};/* @__PURE__ */
|
|
20
|
+
return T("div",{role:"group","aria-label":t.rateAnswer,className:"flex w-full max-w-[92%] flex-col gap-1",children:[
|
|
21
|
+
/* @__PURE__ */T("div",{className:"flex items-center gap-1",children:[v("up"),v("down"),p&&/* @__PURE__ */R("span",{role:"status",className:"px-1 text-xs text-gray-500",children:t.rateThanks}),m&&/* @__PURE__ */R("span",{role:"alert",className:"px-1 text-xs text-red-600",children:t.rateFailed})]}),o&&/* @__PURE__ */T("form",{className:"flex items-center gap-2",onSubmit:e=>{(async e=>{e.preventDefault();const t=i.trim();t&&!await b({verdict:"down",note:t})||(s(!1),u(Boolean(t)))})(e)},children:[
|
|
22
22
|
/* @__PURE__ */R("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */R(l,{size:"sm","aria-label":t.rateNote,placeholder:t.rateNote,maxLength:500,value:i,onChange:e=>c(e.target.value),autoFocus:!0})}),
|
|
23
23
|
/* @__PURE__ */R(y,{type:"submit",size:"sm",variant:"secondary",disabled:f||!i.trim(),children:t.rateNoteSend}),
|
|
24
24
|
/* @__PURE__ */R(y,{type:"button",size:"sm",variant:"ghost",onClick:()=>s(!1),children:t.rateNoteSkip})]})]})}function ke({rows:e,label:t}){/* @__PURE__ */
|
|
25
|
-
return R("dl",{"aria-label":t,className:"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:e.map((e,t)=>/* @__PURE__
|
|
25
|
+
return R("dl",{"aria-label":t,className:"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:e.map((e,t)=>/* @__PURE__ */T("div",{className:"contents",children:[
|
|
26
26
|
/* @__PURE__ */R("dt",{className:"text-gray-500",children:e.label}),
|
|
27
27
|
/* @__PURE__ */R("dd",{className:"min-w-0 break-words "+(e.warn?"font-medium text-amber-700":"text-gray-800"),children:e.value})]},`${e.label}-${t}`))})}function Ne({tool:e,toolLabels:t,labels:n,onApprove:r}){const a=de(e.toolName,e.input,t),o=ue(e.input),s=e.approvalId,l=`${n.approvalNeeded}: ${ie(e.toolName,t)}${a?` ${a}`:""}`;/* @__PURE__ */
|
|
28
|
-
return
|
|
28
|
+
return T("div",{role:"group","aria-label":l,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
|
|
29
29
|
/* @__PURE__ */R("div",{className:"font-medium text-gray-900",children:l}),o.length>0&&/* @__PURE__ */R("div",{className:"mt-2",children:/* @__PURE__ */R(ke,{rows:o})}),
|
|
30
|
-
/* @__PURE__
|
|
30
|
+
/* @__PURE__ */T("div",{className:"mt-3 flex gap-2",children:[
|
|
31
31
|
/* @__PURE__ */R(y,{size:"sm",onClick:()=>r(s,!0),children:n.approve}),
|
|
32
|
-
/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>r(s,!1),children:n.deny})]})]})}var Ae={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function Ce(e,t,n){return function(e,t,n,r,a,o){const s=le(n,a),l=de(n,r,a),i=(e,t)=>({kind:e,base:t,subject:l,text:l?`${t} ${l}`:t});switch(e){case"output-available":return i("done",s.done??s.label);case"output-error":return i("failed",`${s.label} ${o.toolFailed}`);case"output-denied":return i("declined",`${s.label} ${o.toolDeclined}`);case"approval-requested":return i("waiting",`${o.approvalNeeded}: ${s.label}`);case"approval-responded":return!1===t?i("declined",`${s.label} — ${o.declined}`):i("running",`${o.approved}: ${s.running??s.label}`);default:return i("running",s.running??s.label)}}(e.state,e.approved,e.toolName,e.input,t,n)}function je({tool:e,summary:n,toolLabels:r,labels:a,showOutput:o}){const s=Ce(e,r,a),l=ue(e.input),i=o&&"output-available"===e.state?ue(e.output):[],c=o&&"output-error"===e.state&&e.errorText?e.errorText:"",d="output-available"===e.state&&n?n.rows:[];let p=null;return(l.length>0||i.length>0||c)&&(p=/* @__PURE__
|
|
32
|
+
/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:()=>r(s,!1),children:n.deny})]})]})}var Ae={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function Ce(e,t,n){return function(e,t,n,r,a,o){const s=le(n,a),l=de(n,r,a),i=(e,t)=>({kind:e,base:t,subject:l,text:l?`${t} ${l}`:t});switch(e){case"output-available":return i("done",s.done??s.label);case"output-error":return i("failed",`${s.label} ${o.toolFailed}`);case"output-denied":return i("declined",`${s.label} ${o.toolDeclined}`);case"approval-requested":return i("waiting",`${o.approvalNeeded}: ${s.label}`);case"approval-responded":return!1===t?i("declined",`${s.label} — ${o.declined}`):i("running",`${o.approved}: ${s.running??s.label}`);default:return i("running",s.running??s.label)}}(e.state,e.approved,e.toolName,e.input,t,n)}function je({tool:e,summary:n,toolLabels:r,labels:a,showOutput:o}){const s=Ce(e,r,a),l=ue(e.input),i=o&&"output-available"===e.state?ue(e.output):[],c=o&&"output-error"===e.state&&e.errorText?e.errorText:"",d="output-available"===e.state&&n?n.rows:[];let p=null;return(l.length>0||i.length>0||c)&&(p=/* @__PURE__ */T("details",{className:d.length>0?"mt-1":void 0,children:[
|
|
33
33
|
/* @__PURE__ */R("summary",{className:"cursor-pointer select-none",children:a.details}),
|
|
34
|
-
/* @__PURE__
|
|
35
|
-
return R("ul",{className:"flex max-w-[85%] flex-wrap justify-end gap-2",children:e.map(e=>{const a=/* @__PURE__
|
|
34
|
+
/* @__PURE__ */T("div",{className:"mt-1 space-y-2",children:[l.length>0&&/* @__PURE__ */R(ke,{rows:l}),i.length>0&&/* @__PURE__ */R(ke,{rows:i}),c&&/* @__PURE__ */R("div",{className:"text-red-600",children:c})]})]})),/* @__PURE__ */T(t,{label:s.base,description:s.subject||void 0,status:Ae[s.kind],children:[d.length>0&&/* @__PURE__ */R(ke,{rows:d,label:a.stepSources}),p]})}function Se(e,t){return e>0&&t>=100?e/(t/1e3):null}function Oe(e){return Math.ceil(e.length/4)}var Re=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),Te=e=>Math.round(e).toLocaleString();function $e(e,t){const n=Se(e.output_tokens,e.generation_ms);return null===n?Re(t.replyTokens,{tokens:Te(e.output_tokens)}):Re(t.replyStats,{tokens:Te(e.output_tokens),seconds:(e.generation_ms/1e3).toFixed(1),rate:Te(n)})}function Ie(e,t,n){const r=t>=1e3?Se(Oe(e),t):null;return null===r?n.streaming:Re(n.streamingRate,{rate:Te(r)})}function _e(e){if("chart"!==e.lang)return null;if(!e.closed)/* @__PURE__ */return R(v,{height:200});const t=f(e.code);return t?/* @__PURE__ */R(g,{spec:t}):null}function Me(e,t){return"approval-responded"===e.state&&t.some(t=>{return t.toolName===e.toolName&&"approval-requested"!==t.state&&(t.toolCallId===e.toolCallId||(n=t.input,r=e.input,JSON.stringify(n)===JSON.stringify(r)));var n,r})}function ze(e,t,n,r){const a=e.flatMap(e=>"tool"===e.kind?[Ce(e.tool,n,r)]:[]);if(t){const e=a.find(e=>"running"===e.kind);return e?e.base:r.working}const o=[...new Set(a.map(e=>e.base))];return o.length>0?o.join(" · "):r.reasoning}function De({message:e,live:t,labels:n}){const r=B(e),a=r.length>0,o=N(null),[s,l]=A(0);C(()=>{if(!t)return;null===o.current&&(o.current=performance.now());const e=setInterval(()=>l(performance.now()-(o.current??performance.now())),500);return()=>clearInterval(e)},[t]);const i=e.metadata?.usage;let c=null;return t?c=a?Ie(r,s,n):null:i&&(c=$e(i,n)),c?/* @__PURE__ */R("div",{className:"px-1 text-xs tabular-nums text-gray-500",children:c}):null}function Fe({files:e,labels:t,onOpen:n}){const r="flex max-w-full items-center gap-2 rounded-md border border-gray-200 bg-white px-2 py-1 text-xs text-gray-700";/* @__PURE__ */
|
|
35
|
+
return R("ul",{className:"flex max-w-[85%] flex-wrap justify-end gap-2",children:e.map(e=>{const a=/* @__PURE__ */T($,{children:[
|
|
36
36
|
/* @__PURE__ */R(x,{name:"page",size:14,"aria-hidden":"true",className:"shrink-0"}),
|
|
37
37
|
/* @__PURE__ */R("span",{className:"min-w-0 truncate",children:e.filename})]});/* @__PURE__ */
|
|
38
|
-
return R("li",{className:"max-w-full",children:n?/* @__PURE__ */R("button",{type:"button",className:`${r} hover:bg-gray-50`,title:t.openAttachment.replace("{name}",e.filename),onClick:()=>n(e),children:a}):/* @__PURE__ */R("span",{className:r,children:a})},e.id)})})}function Ue(e){return["xlsx"===e.kind?"Excel":String(e.kind||"").toUpperCase(),b(e.size)].filter(Boolean).join(" · ")}function Ee({file:e,labels:t,onOpen:n}){const r=/* @__PURE__
|
|
39
|
-
/* @__PURE__
|
|
38
|
+
return R("li",{className:"max-w-full",children:n?/* @__PURE__ */R("button",{type:"button",className:`${r} hover:bg-gray-50`,title:t.openAttachment.replace("{name}",e.filename),onClick:()=>n(e),children:a}):/* @__PURE__ */R("span",{className:r,children:a})},e.id)})})}function Ue(e){return["xlsx"===e.kind?"Excel":String(e.kind||"").toUpperCase(),b(e.size)].filter(Boolean).join(" · ")}function Ee({file:e,labels:t,onOpen:n}){const r=/* @__PURE__ */T($,{children:["pdf"===e.kind?/* @__PURE__ */R(x,{name:"document",size:20,className:"shrink-0"}):/* @__PURE__ */R(x,{name:"table",size:20,className:"shrink-0"}),
|
|
39
|
+
/* @__PURE__ */T("span",{className:"min-w-0 flex-1",children:[
|
|
40
40
|
/* @__PURE__ */R("span",{className:"block truncate text-sm font-medium text-gray-800",children:e.filename}),
|
|
41
41
|
/* @__PURE__ */R("span",{className:"block text-xs text-gray-500",children:Ue(e)})]})]}),a="flex w-full max-w-sm items-center gap-2 rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 text-left";return n?/* @__PURE__ */R("button",{type:"button",className:`${a} hover:border-blue-300 hover:bg-blue-50 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500`,"data-assistant-file":e.id,"aria-label":t.openFile.replace("{name}",e.filename),onClick:()=>n(e),children:r}):/* @__PURE__ */R("div",{className:a,"data-assistant-file":e.id,children:r})}function Le({message:e,labels:t,showCopy:n,actions:r,answer:a}){const[o,s]=A(!1);C(()=>{if(!o)return;const e=setTimeout(()=>s(!1),1500);return()=>clearTimeout(e)},[o]);const l=B(e);if(!l.trim()||!n&&!r?.length)return null;const i=async()=>{const e=Array.from(a.current?.querySelectorAll("[data-answer-text]")??[]);s(await async function(e,t){const n="undefined"!=typeof navigator?navigator.clipboard:void 0;if(!n)return!1;try{return t&&"undefined"!=typeof ClipboardItem&&n.write?(await n.write([new ClipboardItem({"text/html":new Blob([t],{type:"text/html"}),"text/plain":new Blob([e],{type:"text/plain"})})]),!0):(await n.writeText(e),!0)}catch{return!1}}(l,function(e){return e.map(e=>{const t=e.cloneNode(!0);return t.querySelectorAll("button, [data-chat-chrome]").forEach(e=>e.remove()),t.querySelectorAll("[class]").forEach(e=>e.removeAttribute("class")),t.removeAttribute("class"),t.querySelectorAll("table").forEach(e=>e.setAttribute("style","border-collapse:collapse")),t.querySelectorAll("th, td").forEach(e=>e.setAttribute("style","border:1px solid #d0d5dd;padding:4px 8px;text-align:left;vertical-align:top")),t.innerHTML.trim()}).filter(Boolean).join("\n")}(e)))};/* @__PURE__ */
|
|
42
|
-
return
|
|
43
|
-
/* @__PURE__ */R("div",{"data-answer-text":"",children:/* @__PURE__ */R(n,{renderFence:_e,tableActions:c?void 0:m,onLinkClick:h,children:e.text})},t)));if("data-file"===e.type){const t=e.data;return void(t&&"string"==typeof t.id&&!j.has(t.id)&&(j.add(t.id),C.push(/* @__PURE__ */R(Ee,{file:t,labels:o,onOpen:g},`file-${t.id}`))))}if("reasoning"===e.type)return void(s&&e.text.trim()
|
|
42
|
+
return T("div",{className:"flex flex-wrap gap-1","data-chat-chrome":"",children:[n&&/* @__PURE__ */R(y,{size:"sm",variant:"ghost",leftIcon:/* @__PURE__ */R(x,{name:o?"check":"copy",look:"mini",className:"h-4 w-4","aria-hidden":"true"}),onClick:()=>{i()},children:o?t.copied:t.copyAnswer}),r?.map(t=>/* @__PURE__ */R(y,{size:"sm",variant:"ghost",leftIcon:t.icon?/* @__PURE__ */R(x,{name:t.icon,look:"mini",className:"h-4 w-4","aria-hidden":"true"}):void 0,onClick:()=>t.onSelect({id:e.id,text:l}),children:t.label},t.key))]})}function Be({text:e,actions:t,files:n,labels:r,onOpenAttachment:s}){const l=a(),i=/* @__PURE__ */R("div",{className:"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl bg-blue-600 px-3 py-2 text-sm text-white",children:e}),c=n.length>0?/* @__PURE__ */R(Fe,{files:n,labels:r,onOpen:s}):null;return t?.length?/* @__PURE__ */T("div",{className:c?"flex flex-col items-end gap-2":"flex justify-end",onContextMenu:e=>l.open(e,void 0),children:[c,i,l.state&&/* @__PURE__ */R(o,{...l.props,"aria-label":e,items:t.map(t=>({key:t.key,label:t.label,onSelect:()=>t.onSelect(e)}))})]}):c?/* @__PURE__ */T("div",{className:"flex flex-col items-end gap-2",children:[c,i]}):/* @__PURE__ */R("div",{className:"flex justify-end",children:i})}function We({message:r,toolLabels:a,labels:o,showReasoning:s,showToolOutput:l,showUsage:i,live:c,onApprove:d,plans:p,userActions:u,tableActions:m,onLinkClick:h,onOpenAttachment:f,onOpenFile:g,showCopy:b,answerActions:v,onRate:y}){const x=r.metadata?.source,w=N(null);if("system"===x){const e=B(r);return e?/* @__PURE__ */R("div",{className:"text-center text-xs text-gray-500",children:e}):null}if("user"===r.role){const e=B(r);return e?/* @__PURE__ */R(Be,{text:e,actions:u,files:H(r),labels:o,onOpenAttachment:f}):null}const k=r.parts.map(U),A=E(r),C=[],j=/* @__PURE__ */new Set,S=[];let O=-1;const $=e=>{O<0&&(O=C.push(null)-1),S.push(e)};if(r.parts.forEach((e,t)=>{if("text"===e.type)return void(e.text.trim()&&C.push(
|
|
43
|
+
/* @__PURE__ */R("div",{"data-answer-text":"",children:/* @__PURE__ */R(n,{renderFence:_e,tableActions:c?void 0:m,onLinkClick:h,children:e.text})},t)));if("data-file"===e.type){const t=e.data;return void(t&&"string"==typeof t.id&&!j.has(t.id)&&(j.add(t.id),C.push(/* @__PURE__ */R(Ee,{file:t,labels:o,onOpen:g},`file-${t.id}`))))}if("reasoning"===e.type)return void(s&&e.text.trim()&&$({kind:"reasoning",key:`r${t}`,text:e.text}));const r=k[t];r&&(Me(r,k.slice(t+1).filter(e=>null!==e))||("approval-requested"===r.state&&r.approvalId&&"propose_plan"===r.toolName?C.push(
|
|
44
44
|
/* @__PURE__ */R(ye,{approvalId:r.approvalId,plan:p?.get(r.approvalId),input:r.input,labels:o,toolLabels:a,onApprove:d},r.toolCallId)):"approval-requested"===r.state&&r.approvalId?C.push(
|
|
45
|
-
/* @__PURE__ */R(Ne,{tool:r,toolLabels:a,labels:o,onApprove:d},r.toolCallId))
|
|
45
|
+
/* @__PURE__ */R(Ne,{tool:r,toolLabels:a,labels:o,onApprove:d},r.toolCallId)):$({kind:"tool",key:r.toolCallId,tool:r})))}),O>=0&&(C[O]=/* @__PURE__ */R(e,{summary:ze(S,c,a,o),busy:c,label:o.steps,children:S.map(e=>"tool"===e.kind?/* @__PURE__ */R(je,{tool:e.tool,summary:A.get(e.tool.toolCallId),toolLabels:a,labels:o,showOutput:l},e.key):/* @__PURE__ */R(t,{status:"complete",label:/* @__PURE__ */T("details",{children:[
|
|
46
46
|
/* @__PURE__ */R("summary",{className:"cursor-pointer select-none",children:o.reasoning}),
|
|
47
|
-
/* @__PURE__ */R("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===C.length)return null;const
|
|
48
|
-
/* @__PURE__ */R(w,{className:"h-3 w-3"}),o.loadingHistory]}),"failed"===a&&/* @__PURE__ */R(s,{tone:"warning",children:o.historyFailed}),0===t.length&&"idle"===a&&/* @__PURE__ */R("p",{className:"m-auto text-center text-sm text-gray-500",children:o.emptyState}),t.map((r,a)=>/* @__PURE__ */R(
|
|
49
|
-
/* @__PURE__ */R(w,{className:"h-3 w-3"}),o.thinking]}),c&&/* @__PURE__
|
|
50
|
-
/* @__PURE__ */R(s,{tone:"danger",children:c.text}),c.retryable&&e.onRetry&&"error"===n&&/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:e.onRetry,children:o.retry})]})]})}var
|
|
51
|
-
/* @__PURE__ */R("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:i}),r.messages.length>0&&/* @__PURE__ */R(y,{size:"sm",variant:"ghost",onClick:r.reset,children:t.newChat}),e.onClose&&/* @__PURE__ */R(
|
|
52
|
-
/* @__PURE__ */R(
|
|
53
|
-
/* @__PURE__ */R("button",{ref:o,type:"button","aria-expanded":n,"aria-controls":n?a:void 0,"aria-label":n?t.close:t.open,onClick:()=>l(!n),className:"fixed bottom-4 right-4 z-[var(--z-window,1000)] flex h-12 w-12 items-center justify-center rounded-full shadow-lg bg-[var(--assistant-launcher-bg,var(--color-blue-600))] text-[var(--assistant-launcher-ink,var(--color-white))] hover:bg-[var(--assistant-launcher-bg-hover,var(--color-blue-700))] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--assistant-launcher-bg,var(--color-blue-600))]",children:/* @__PURE__ */R(x,n?{name:"close",size:20}:{name:"chat-bubble-left-right",size:22})})]})}function Ve(e){if("bubble"===e.variant)/* @__PURE__ */return R(
|
|
54
|
-
return R(
|
|
47
|
+
/* @__PURE__ */R("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===C.length)return null;const I=/* @__PURE__ */T("div",{ref:w,className:"max-w-[92%] min-w-0 space-y-2 rounded-2xl bg-white px-3 py-2 text-gray-800 shadow-sm",children:["staff"===x&&/* @__PURE__ */R("div",{className:"text-xs font-medium text-blue-600",children:o.teamName}),C]}),_=c?null:/* @__PURE__ */R(Le,{message:r,labels:o,showCopy:!0===b,actions:v,answer:w}),M=i&&!x,z=r.metadata?.run_id,D=Boolean(y&&z&&!c&&!x);return M||D||_?/* @__PURE__ */T("div",{className:"flex flex-col items-start gap-1",children:[I,M&&/* @__PURE__ */R(De,{message:r,live:c,labels:o}),D&&y&&z&&/* @__PURE__ */R(we,{initial:r.metadata?.rating,labels:o,onRate:e=>y(z,e)}),_]}):/* @__PURE__ */R("div",{className:"flex justify-start",children:I})}function Pe(e){const{messages:t,status:n,error:r,history:a,labels:o}=e,l=N(null),i=O(()=>function(e){const t=/* @__PURE__ */new Map;for(const n of Q(e).values())t.set(n.approval_id,n);return t}(t),[t]),c=r?re(r,e.errorCode??null,o):null,d=t[t.length-1],p="ready"!==n||r||e.handedOver||"assistant"!==d?.role||!e.onAsk?[]:e.followups??[];return C(()=>{const e=l.current;e&&(e.scrollTop=e.scrollHeight)},[t,n]),/* @__PURE__ */T("div",{ref:l,role:"log","aria-label":e.title,"aria-live":"polite","aria-busy":"submitted"===n||"streaming"===n,className:"flex min-h-0 flex-1 flex-col gap-3 overflow-auto bg-gray-50 p-3",children:["loading"===a&&/* @__PURE__ */T("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
|
|
48
|
+
/* @__PURE__ */R(w,{className:"h-3 w-3"}),o.loadingHistory]}),"failed"===a&&/* @__PURE__ */R(s,{tone:"warning",children:o.historyFailed}),0===t.length&&"idle"===a&&/* @__PURE__ */R("p",{className:"m-auto text-center text-sm text-gray-500",children:o.emptyState}),t.map((r,a)=>/* @__PURE__ */R(We,{live:a===t.length-1&&("submitted"===n||"streaming"===n),message:r,toolLabels:e.toolLabels,labels:o,showReasoning:e.showReasoning,showToolOutput:e.showToolOutput,showUsage:e.showUsage,tableActions:e.tableActions,onApprove:e.onApprove,onLinkClick:e.onLinkClick,onOpenFile:e.onOpenFile,plans:i,userActions:e.userMessageActions,onOpenAttachment:e.onOpenAttachment,showCopy:e.showCopy,answerActions:e.answerActions,onRate:e.onRate},r.id)),e.onAsk&&/* @__PURE__ */R(xe,{questions:p,label:o.followups,onAsk:e.onAsk}),e.handedOver&&/* @__PURE__ */R("div",{role:"status",className:"text-center text-xs text-gray-500",children:o.teamJoined}),"submitted"===n&&/* @__PURE__ */T("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
|
|
49
|
+
/* @__PURE__ */R(w,{className:"h-3 w-3"}),o.thinking]}),c&&/* @__PURE__ */T("div",{role:"alert",className:"flex flex-col items-start gap-2",children:[
|
|
50
|
+
/* @__PURE__ */R(s,{tone:"danger",children:c.text}),c.retryable&&e.onRetry&&"error"===n&&/* @__PURE__ */R(y,{size:"sm",variant:"secondary",onClick:e.onRetry,children:o.retry})]})]})}var He={title:"Assistant",placeholder:"Ask a question…",inputLabel:"Message to the assistant",send:"Send",stop:"Stop",newChat:"New chat",open:"Open assistant",close:"Close assistant",thinking:"Thinking",loadingHistory:"Loading the conversation",historyFailed:"The earlier conversation could not be loaded.",emptyState:"Ask me anything to get started.",approvalNeeded:"Approval needed",approve:"Approve",deny:"Deny",approved:"Approved",declined:"Declined",toolFailed:"did not complete",toolDeclined:"was not approved",details:"Details",stepSources:"Where these figures came from",reasoning:"Reasoning",genericError:"Something went wrong. Please try again.",connectionDropped:"The connection dropped. Your question may still be answering; reopen the chat in a moment.",retry:"Retry",working:"Working",steps:"Steps",teamName:"Team",teamJoined:"A team member has joined",plan:"Plan",planSummary:"Plan: {done} of {total} done",planProposed:"waiting for your approval",planApproved:"approved, starting",planRunning:"in progress",planCompleted:"finished",planFailed:"stopped — not every step ran",planDenied:"not approved — nothing was changed",planExpired:"expired — nothing was changed",planApprovalHeading:"Approve this plan of {count} steps",approvePlan:"Approve plan",replyStats:"{tokens} tokens · {seconds} s · {rate} tok/s",replyTokens:"{tokens} tokens",streaming:"Streaming",streamingRate:"Streaming · ~{rate} tok/s",followups:"Suggested follow-up questions",attach:"Attach a file",attaching:"Uploading",removeAttachment:"Remove {name}",openAttachment:"Open {name}",copyAnswer:"Copy",copied:"Copied",readOnly:"You can read this chat but not continue it.",rateAnswer:"Rate this answer",rateUp:"Helpful",rateDown:"Not helpful",rateNote:"What was wrong? (optional)",rateNoteSend:"Send",rateNoteSkip:"Skip",rateThanks:"Thanks for telling us.",rateFailed:"Your rating could not be saved.",openFile:"Open {name}"},Je=(e,t)=>`${e.replace(/\/+$/,"")}/${t}`;function Ye(e){return Je(e,"assistant/chat/")}function qe(e,t){return Je(e,`assistant/chat/${encodeURIComponent(t)}/`)}function Ge(e){const t=N(e);t.current=e;const n=N(e.conversationId?{id:e.conversationId}:null),[r,a]=A("idle"),[o,s]=A(!1),[l,i]=A(null),[c,d]=A([]),[p,u]=A(n.current),m=S(e=>{n.current=e,u(e)},[]),h=S((e,n)=>(t.current.fetch??fetch)(e,n),[]),f=O(()=>new M({api:Ye(e.apiBase),fetch:h,prepareSendMessagesRequest:async({messages:e})=>{const{apiBase:r,getHeaders:a,credentials:o}=t.current;return{api:Ye(r),body:J(e,n.current?.id??null),headers:await(a?.())??{},...o?{credentials:o}:{}}}}),[h]),g=D({transport:f,sendAutomaticallyWhen:z,onData:e=>{if("data-error"===e.type)return void i(e.data.code);if("data-followups"===e.type)return void d(function(e){const t=e?.questions;if(!Array.isArray(t))return[];const n=[];for(const e of t){if("string"!=typeof e)continue;const t=e.trim();!t||t.includes("\n")||n.includes(t)||n.push(t)}return n.slice(0,3)}(e.data));if("data-conversation"!==e.type)return;const{id:r,guest_token:a}=e.data,o=n.current,s=a??(o?.id===r?o.guestToken:void 0);o&&o.id===r&&o.guestToken===s||(m(s?{id:r,guestToken:s}:{id:r}),t.current.onConversation?.(n.current))}}),{setMessages:b,stop:v}=g,y=S(async(e,n)=>{const{apiBase:r,getHeaders:o,credentials:l,onConversation:i}=t.current;a("loading"),d([]);try{const t=await h(qe(r,e),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},signal:n});if(n.aborted)return;if(404===t.status)return m(null),i?.(null),void a("idle");if(!t.ok)throw new Error(`history ${t.status}`);const c=await t.json();if(n.aborted)return;s(!0===c.handed_over),b(e=>e.length>0?e:X(c)),a("idle")}catch{n.aborted||a("failed")}},[h,b,m]),x=e.conversationId??null;C(()=>{if(x===(n.current?.id??null)&&g.messages.length>0)return;if(null===x)return n.current&&(m(null),v(),b([]),d([])),void a("idle");n.current?.id===x||m({id:x});const e=new AbortController;return y(x,e.signal),()=>e.abort()},[x,y,b,v,m]);const w=S(async e=>{const r=n.current?.id;if(r)try{const{apiBase:a,getHeaders:o,credentials:l}=t.current,i=await h(qe(a,r),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},...e?{signal:e}:{}});if(!i.ok||e?.aborted||n.current?.id!==r)return;const c=await i.json();s(!0===c.handed_over);const d=X(c).filter(e=>e.metadata?.source);if(0===d.length)return;b(e=>{const t=new Set(e.map(e=>e.id)),n=d.filter(e=>!t.has(e.id));return n.length>0?[...e,...n]:e})}catch{}},[h,b]),k=N(w);k.current=w;const{status:j}=g,R="submitted"===j||"streaming"===j,T=N(!1),$=N(!1),I=!!e.subscribe;C(()=>{const e=T.current&&!R;if(T.current=R,!e)return;if(I&&!$.current)return;$.current=!1;const t=new AbortController;return k.current(t.signal),()=>t.abort()},[R,I]);const _=N(R);_.current=R;const F=p?.id,U=p?.guestToken;C(()=>{const e=n.current,r=t.current.subscribe;if(e&&r)return r(e,()=>{_.current?$.current=!0:k.current()})??void 0},[F,U]);const E=S((e,t=[])=>{const n=e.trim();n&&(i(null),d([]),g.sendMessage(t.length>0?{text:n,files:t.map(P)}:{text:n}))},[g]),L=S(()=>{ae(g.messages)&&(i(null),d([]),g.regenerate())},[g]),B=S((e,t)=>{i(null),d([]),g.addToolApprovalResponse({id:e,approved:t})},[g]),W=S(()=>{v(),m(null),b([]),a("idle"),s(!1),i(null),d([]),t.current.onConversation?.(null)},[b,v,m]);return{conversationId:p?.id??null,messages:g.messages,status:g.status,error:g.error,errorCode:l,canRetry:ae(g.messages),retry:L,historyState:r,handedOver:o,followups:c,send:E,stop:v,approve:B,reset:W}}function Qe(e){const t={...He,...e.labels},n=e.variant??"panel",r=Ge(e),a="submitted"===r.status||"streaming"===r.status,o=N(e.onBusyChange);o.current=e.onBusyChange,C(()=>{o.current?.(a)},[a]);const s="window"===n,l=e.showHeader??"window"!==n,i=e.title??t.title,c=K(r.messages),p=!0===e.readOnly,{onRate:u}=e,{conversationId:m}=r,h=N(!1),{send:f}=r;return C(()=>{h.current||p||e.conversationId||!e.initialQuestion?.trim()||(h.current=!0,f(e.initialQuestion))},[]),/* @__PURE__ */T("section",{"aria-label":i,className:`flex h-full min-h-0 flex-col bg-white text-gray-900 ${e.className??""}`.trim(),children:[l&&/* @__PURE__ */T("header",{className:"flex items-center gap-2 border-b border-gray-200 px-3 py-2",children:[
|
|
51
|
+
/* @__PURE__ */R("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:i}),r.messages.length>0&&/* @__PURE__ */R(y,{size:"sm",variant:"ghost",onClick:r.reset,children:t.newChat}),e.onClose&&/* @__PURE__ */R(d,{size:"sm","aria-label":t.close,onClick:e.onClose,children:/* @__PURE__ */R(x,{name:"close"})})]}),
|
|
52
|
+
/* @__PURE__ */R(Pe,{messages:r.messages,status:r.status,error:r.error,errorCode:r.errorCode,history:r.historyState,handedOver:r.handedOver,labels:t,title:i,toolLabels:e.toolLabels,showReasoning:s&&!0===e.showReasoning,showToolOutput:s,showUsage:s&&!0===e.showUsage,tableActions:e.tableActions,onApprove:r.approve,onLinkClick:e.onLinkClick,onOpenFile:e.onOpenFile,userMessageActions:p?void 0:e.userMessageActions,showCopy:e.showCopy??s,answerActions:e.answerActions,onOpenAttachment:e.attachments?.onOpen,followups:r.followups,onAsk:p?void 0:r.send,onRetry:p?void 0:r.canRetry?r.retry:void 0,onRate:u&&m&&!p?(e,t)=>u({conversationId:m,runId:e,rating:t}):void 0}),c&&/* @__PURE__ */R(ve,{plan:c,labels:t},c.id),p?/* @__PURE__ */R("p",{role:"note",className:"border-t border-gray-200 px-3 py-2 text-xs text-gray-500",children:t.readOnly}):/* @__PURE__ */R(F,{labels:t,placeholder:e.placeholder??t.placeholder,busy:a,focusWhen:e.focusComposer,onSend:r.send,onStop:r.stop,onNewChat:!l&&!1!==e.showNewChat&&r.messages.length>0?r.reset:void 0,actions:e.composerActions,attachments:e.attachments})]})}function Ke(e){const t={...He,...e.labels},[n,r]=A(e.defaultOpen??!1),a=j(),o=N(null),s=N(n),l=t=>{r(t),e.onOpenChange?.(t)};return C(()=>{s.current&&!n&&o.current?.focus(),s.current=n},[n]),/* @__PURE__ */T("div",{className:"rosh-assistant",style:{display:"contents"},children:[n&&/* @__PURE__ */R("div",{id:a,role:"dialog","aria-label":e.title??t.title,onKeyDown:e=>{"Escape"===e.key&&l(!1)},className:"fixed inset-x-2 bottom-20 z-[var(--z-window,1000)] h-[min(34rem,calc(100dvh-6rem))] overflow-hidden rounded-xl border border-gray-200 shadow-xl sm:inset-x-auto sm:right-4 sm:w-96",children:/* @__PURE__ */R(Qe,{...e,onClose:()=>l(!1),focusComposer:!0})}),
|
|
53
|
+
/* @__PURE__ */R("button",{ref:o,type:"button","aria-expanded":n,"aria-controls":n?a:void 0,"aria-label":n?t.close:t.open,onClick:()=>l(!n),className:"fixed bottom-4 right-4 z-[var(--z-window,1000)] flex h-12 w-12 items-center justify-center rounded-full shadow-lg bg-[var(--assistant-launcher-bg,var(--color-blue-600))] text-[var(--assistant-launcher-ink,var(--color-white))] hover:bg-[var(--assistant-launcher-bg-hover,var(--color-blue-700))] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--assistant-launcher-bg,var(--color-blue-600))]",children:/* @__PURE__ */R(x,n?{name:"close",size:20}:{name:"chat-bubble-left-right",size:22})})]})}function Ve(e){if("bubble"===e.variant)/* @__PURE__ */return R(Ke,{...e});const t="window"!==e.variant;/* @__PURE__ */
|
|
54
|
+
return R(Qe,{...e,className:`${t?"border-l border-gray-200":""} ${e.className??""}`.trim()})}export{Ne as ApprovalCard,Ve as AssistantChat,We as AssistantMessage,He as DEFAULT_ASSISTANT_CHAT_LABELS,ye as PlanApprovalCard,ve as PlanChecklist,je as ToolStep,P as attachmentPart,H as attachmentsOf,J as buildRequestBody,Oe as estimateTokens,re as failureView,L as filesOf,$e as finishedStats,te as isDroppedConnection,Ie as liveStats,X as messagesFromHistory,K as pinnedPlan,Q as plansOf,Se as tokensPerSecond,E as toolSummariesOf};
|
package/dist/apps/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-TGLHJS3M.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-
|
|
2
|
+
export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-TGLHJS3M.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-Y37PBT4H.js";import"../chunk-GSBIJLTD.js";import{setPdfPreview as e}from"../chunk-ESL5TDNA.js";export{setPdfPreview}from"../chunk-ESL5TDNA.js";import{setSpreadsheetPreview as t}from"../chunk-VTVSMRFX.js";export{setSpreadsheetPreview}from"../chunk-VTVSMRFX.js";import"../chunk-KJY57QPT.js";import"../chunk-CY5N5OA3.js";import"../chunk-AW7TOB6N.js";import"../chunk-KNUR2UEG.js";import"../chunk-JDCM2VHG.js";import"../chunk-BMPBVI7P.js";import"../chunk-5A7MWTXX.js";import"../chunk-Y53KNQKL.js";import"../chunk-6WWAQC5V.js";import"../chunk-EGDJEY4K.js";import"../chunk-GNPTNAZH.js";import"../chunk-KC3EX26K.js";import"../chunk-4AJRHTTB.js";import"../chunk-VWGWZY7A.js";import"../chunk-PKXQDCNR.js";import{toast_default as o}from"../chunk-4NXMMWL6.js";import"../chunk-UGTRSRIW.js";import"../chunk-ET2EF5CI.js";import"../chunk-CDAJKLGL.js";import"../chunk-YAEUF3GP.js";import"../chunk-DXTKNHWG.js";import"../chunk-QR4RM7PO.js";import"../chunk-5QFPTDQF.js";import"../chunk-D323R2FT.js";import"../chunk-4IU5BSVE.js";import"../chunk-K7U4RWXJ.js";import"../chunk-VH6GB73Q.js";import"../chunk-FSPFV4MI.js";import"../chunk-J75ZT2JQ.js";import"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-6KO5VTL7.js";import"../chunk-22S6LG6D.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-GLUJS42B.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import{currentShellStrings as r}from"../chunk-E6UCGCOC.js";import"../chunk-C3QOHMR6.js";import{lazy as n}from"react";function i(e){const t=/\.([a-z0-9]+)(?:[?#].*)?$/i.exec((e||"").trim());return t?t[1].toLowerCase():""}var s=/* @__PURE__ */new Set(["csv","tsv"]),c=/* @__PURE__ */new Set(["xlsx","xls","xlsm","ods"]),m=/* @__PURE__ */new Set(["png","jpg","jpeg","gif","webp","bmp","svg","avif"]),p=/* @__PURE__ */new Set(["step","stp","stl","obj","gltf","glb","3mf","iges","igs"]);function l(e){const t=i(e);return"pdf"===t?"pdf":"dxf"===t?"dxf":s.has(t)?"csv":m.has(t)?"image":p.has(t)?"3d":null}function a(e){window.open(e,"_blank","noopener,noreferrer")}async function u(e,t,o){if(t.fetchBlob)return(await t.fetchBlob(o)).text();const r=await fetch(e);if(!r.ok)throw new Error(`fetch failed: ${r.status}`);return r.text()}function h(e,t){return(e instanceof Error?e.message:"")||t}async function j(n,s,m={}){const p=r().attachment,j=n?.url||"",k=n?.filename||p.fallbackName;if(!j&&!m.fetchBlob)return void o.error(p.noLink);const d=l(k)??l(j);if("csv"===d){try{t({csv:await u(j,m,n),filename:k}),s("/spreadsheet")}catch{o.error(p.spreadsheetFailed),j&&a(j)}return}if(c.has(i(k)||i(j)))return o.error(p.workbookUnavailable),void(j&&a(j));if(!d)return j?(o.info(p.noViewer),void a(j)):void o.error(p.noLink);if(!m.fetchBlob)return e({url:j,filename:k,kind:d}),void s("/preview");const f=e({filename:k,kind:d,converting:!0,convertingMessage:m.loadingMessage||p.loading});s("/preview");try{const e=await m.fetchBlob(n);f.update({url:URL.createObjectURL(e),filename:k,kind:d})}catch(e){f.update({filename:k,kind:d,converting:!1,convertingMessage:h(e,p.loadFailed)})}}var k=n(()=>import("../Calculator-7O7HXEKH.js")),d=n(()=>import("../Spreadsheet-SNLKLOLL.js")),f=n(()=>import("../Weather-YQA5CAFQ.js")),w=n(()=>import("../CurrencyConverter-IVJJCYZ7.js")),T=n(()=>import("../PomodoroTimer-ZCJBTFV5.js")),g=n(()=>import("../Notepad-KKKCTUB3.js")),C=n(()=>import("../WorldClock-J6L7FWI2.js")),v=n(()=>import("../Stock-PHY6Z26A.js")),b=n(()=>import("../Preview-CHV67AA7.js")),S=n(()=>import("../PdfViewer-KJCJ6EPG.js")),B=n(()=>import("../Documents-BOVXZFYC.js")),L=n(()=>import("../Files-YWBBU2FZ.js")),P=n(()=>import("../Browser-FTCJCMD3.js")),F={"/calculator":{component:k,label:"Calculator",size:"sm",allowPinOnTop:!0,utility:!0,widget:!0,dimensions:[280,420]},"/spreadsheet":{component:d,label:"Spreadsheets",size:"2xl",appStyle:!0,multiInstance:!0},"/notepad":{component:g,label:"Notepad",size:"lg",allowPinOnTop:!0,flushBody:!0},"/weather":{component:f,label:"Weather",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,400]},"/currency":{component:w,label:"Currency Converter",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/pomodoro":{component:T,label:"Pomodoro Timer",size:"sm",utility:!0,widget:!0,dimensions:[320,600]},"/world-clock":{component:C,label:"World Clock",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/stock":{component:v,label:"Stocks",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,360]}},J={"/preview":{component:b,label:"Preview",size:"2xl",appStyle:!0,multiInstance:!0},"/documents":{component:B,label:"Documents",size:"xl",appStyle:!0,multiInstance:!0},"/files":{component:L,label:"Files",size:"xl",appStyle:!0}},W={"/browser":{component:P,label:"Browser",size:"2xl",appStyle:!0,multiInstance:!0}},V={...F,...J,...W};export{P as Browser,k as Calculator,w as CurrencyConverter,B as Documents,L as Files,g as Notepad,S as PdfViewer,T as PomodoroTimer,b as Preview,d as Spreadsheet,v as Stock,f as Weather,C as WorldClock,l as attachmentKind,V as bundledApps,J as documentApps,j as openAttachment,F as utilityApps,W as webApps};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as e}from"module";import{join as n}from"path";import{existsSync as t,readFileSync as i,readdirSync as r}from"fs";var o=/[.+^$()|[\]\\]/g;function s(e){let n="",t=0;for(let i=0;i<e.length;i++){const r=e[i];"*"===r?"*"===e[i+1]?"/"===e[i+2]?(n+="(?:[^/]+/)*",i+=2):(n+=".*",i+=1):n+="[^/]*":"?"===r?n+="[^/]":"{"===r?(n+="(?:",t+=1):"}"===r&&t>0?(n+=")",t-=1):n+=","===r&&t>0?"|":r.replace(o,"\\$&")}if(0!==t)throw new Error(`unbalanced { in glob "${e}"`);return new RegExp(`^${n}$`)}function a(e){const n=e.map(s);return e=>n.some(n=>n.test(e))}var c=new Set(["node_modules",".git"]),g=new Set(["dist","coverage",".next",".turbo"]);function l(e){const n=e.search(/[*?{]/),t=-1===n?e:e.slice(0,n),i=t.lastIndexOf("/");return-1===i?"":t.slice(0,i)}function u(e,t){const i=a(t),o=[...new Set(t.map(l))].sort(),s=o.filter(e=>!o.some(n=>n!==e&&(""===n||e.startsWith(`${n}/`)))),u=new Set,d=t=>{let o;try{o=r(n(e,t),{withFileTypes:!0})}catch{return}for(const e of o){const n=t?`${t}/${e.name}`:e.name;e.isDirectory()?c.has(e.name)||""===t&&g.has(e.name)||d(n):e.isFile()&&i(n)&&u.add(n)}};for(const e of s)d(e);return[...u].sort(h)}var h=(e,n)=>e<n?-1:e>n?1:0,d={busy:{words:["Accepting","Adding","Applying","Approving","Arranging","Asking","Assigning","Booking","Building","Calculating","Cancelling","Capturing","Changing","Checking","Choosing","Closing","Combining","Comparing","Completing","Confirming","Connecting","Converting","Copying","Correcting","Counting","Creating","Deleting","Detaching","Downloading","Drawing","Duplicating","Emailing","Ending","Exporting","Fetching","Filing","Finding","Flushing","Generating","Grouping","Importing","Linking","Loading","Locating","Looking","Making","Marking","Matching","Measuring","Merging","Moving","Opening","Ordering","Paying","Pending","Posting","Preparing","Previewing","Pricing","Processing","Provisioning","Publishing","Purging","Pushing","Queued","Queuing","Quoting","Re-booking","Re-importing","Re-opening","Reading","Rebooting","Rebuilding","Receiving","Reconciling","Reconnecting","Recording","Refreshing","Refunding","Regenerating","Registering","Reinstating","Rejecting","Removing","Reopening","Requesting","Resending","Resetting","Resolving","Restarting","Restoring","Resuming","Retrying","Reversing","Reverting","Running","Saving","Searching","Sending","Setting","Settling","Sharing","Signing","Splitting","Starting","Submitting","Suggesting","Switching","Syncing","Taking","Testing","Transferring","Typing","Updating","Uploading","Verifying","Waiting","Withdrawing","Working"]}};new Set((d.busy?.words??[]).map(e=>e.toLowerCase()));var f=class extends Error{},m=new Set(["$schema","schema","include","exclude","allow"]),p=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),w=e=>"string"==typeof e&&""!==e.trim();var y="d3as2htf4hwbtr.cloudfront.net",S={dealer:{bucket:"inovit-dealer-portal-assets",hosts:["d201q0i87q901p.cloudfront.net"],key_pattern:"^marketing/"},media:{bucket:"regis-media-production",hosts:["media.regis.design","d21nnr9ivf9hcc.cloudfront.net"],key_pattern:"^[a-z0-9_]+/storefront/(?!uploads/thumbs/)"},site:{bucket:"inovit-ecommerce-media",hosts:["cdn.inovit.com","dhxlibd8r3td0.cloudfront.net"],key_pattern:"^images/"}},$=Object.values(S),R=Object.freeze([...new Set([...$.flatMap(e=>e.hosts),y,...$.map(e=>e.bucket)])].sort()),b=new RegExp([...R.map(e=>{return`(?<![\\w-])${n=e,n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![\\w-])`;var n}),"(?<![\\w-])[a-z0-9]+\\.cloudfront\\.net(?![\\w-])","(?<![\\w-])(?:[a-z0-9-]+\\.)*s3(?:[.-][a-z0-9-]+)*\\.amazonaws\\.com(?![\\w-])","s3://"].join("|"),"gi");function k(e,n,t){const i=e.createSourceFile(n,t,e.ScriptTarget.Latest,!0,function(e,n){return n.endsWith(".tsx")?e.ScriptKind.TSX:n.endsWith(".jsx")?e.ScriptKind.JSX:/\.[cm]?js$/.test(n)?e.ScriptKind.JS:e.ScriptKind.TS}(e,n)),r=[],o=(e,n)=>{const t=i.getLineAndCharacterOfPosition(e.getStart(i)).line+1;for(const e of function(e){return[...e.matchAll(b)].map(e=>({match:e[0],index:e.index??0}))}(n)){const i=n.slice(0,e.index);r.push({line:t+(i.match(/\n/g)?.length??0),match:e.match})}},s=n=>{e.isStringLiteral(n)||e.isNoSubstitutionTemplateLiteral(n)||e.isTemplateHead(n)||e.isTemplateMiddle(n)||e.isTemplateTail(n)?o(n,n.text):e.isRegularExpressionLiteral(n)&&o(n,n.text.replace(/\\(.)/g,"$1")),e.forEachChild(n,s)};return s(i),r}var v="media-host-check.config.json",x="efficient-shell-media-host-check",C=`${x}: no code writes a media origin; files are reached through the storage backend, the API's URL, media() or imageCopyUrl() (harness API-15, SSOT-2).\n\n ${x} check this repository; exits 1 on a finding\n ${x} --json print the result as JSON\n\nRefused in any string, template or regular expression: every host and bucket in\nthe image-copies contract, any *.cloudfront.net host, any S3 endpoint, and s3://.\nReads ${v} in the current directory.`;function A(e,t,r){const o=[],s=a(r.exclude);for(const e of r.include)0===u(t,[e]).length&&o.push(`include "${e}" matches no file; delete it`);const c=u(t,r.include).filter(e=>(e=>/\.(?:[cm]?[jt]s|[jt]sx)$/.test(e)&&!e.endsWith(".d.ts"))(e)&&!s(e)),g=[];for(const r of c)for(const o of k(e,r,i(n(t,r),"utf8")))g.push({file:r,...o});const l=(e,n)=>e.toLowerCase()===n.toLowerCase();for(const e of r.allow)g.some(n=>n.file===e.file&&l(e.match,n.match))||o.push(`allow ${e.file} "${e.match}" matches nothing any more; delete it`);return{files:c.length,findings:g.filter(e=>!(e=>r.allow.some(n=>n.file===e.file&&l(n.match,e.match)))(e)),problems:o}}process.exitCode=function(e,r){let o=!1;for(const n of e){if("--help"===n||"-h"===n)return r.out(C),0;if("--version"===n||"-v"===n)return r.out(r.version),0;if("--json"!==n)return r.err(`${x}: unknown argument "${n}"\n\n${C}`),2;o=!0}const s=n(r.cwd,v);if(!t(s))return r.err(`${x}: no ${v} in ${r.cwd}. Run it from the repository root.`),2;let a;try{const e=function(e,n="media-host-check.config.json"){const t=[];if(!p(e))throw new f(`${n}: expected an object`);for(const n of Object.keys(e))m.has(n)||t.push(`unknown key "${n}"`);1!==e.schema&&t.push('"schema" must be 1');const i=(n,i)=>{const r=e[n];return void 0!==r||i?!Array.isArray(r)||!r.every(w)||i&&0===r.length?(t.push(`"${n}" must be ${i?"a non-empty":"an"} array of globs`),[]):r:[]},r=i("include",!0),o=i("exclude",!1),s=[];void 0===e.allow||Array.isArray(e.allow)||t.push('"allow" must be an array');for(const[n,i]of(Array.isArray(e.allow)?e.allow:[]).entries()){if(!(p(i)&&w(i.file)&&w(i.match)&&w(i.reason))){t.push(`allow[${n}] needs "file", "match" and "reason", each a non-empty string`);continue}const e=Object.keys(i).filter(e=>!["file","match","reason"].includes(e));e.length&&t.push(`allow[${n}] has unknown keys: ${e.join(", ")}`),s.push({file:i.file,match:i.match,reason:i.reason})}if(t.length)throw new f(`${n}:\n ${t.join("\n ")}`);return{schema:1,include:r,exclude:o,allow:s}}(JSON.parse(i(s,"utf8")),v);a=A(r.loadTypeScript(),r.cwd,e)}catch(e){return r.err(`${x}: ${e instanceof f||e instanceof SyntaxError?e.message:String(e)}`),2}const c=a.findings.length>0||a.problems.length>0;if(o)return r.out(JSON.stringify({ok:!c,...a},null,2)),c?1:0;if(!c)return r.out(`${x}: ${a.files} files, no media origin written in code (harness API-15, SSOT-2).`),0;for(const e of a.findings)r.err(`${e.file}:${e.line} "${e.match}" is a media origin written in code.`);for(const e of a.problems)r.err(`${v}: ${e}`);return a.findings.length&&r.err(`\nReach the file through the storage backend, the URL the API returns, media() or imageCopyUrl() (harness API-15, SSOT-2). An origin that must stay goes in "allow" in ${v}, with its reason.`),1}(process.argv.slice(2),{cwd:process.cwd(),out:e=>console.log(e),err:e=>console.error(e),loadTypeScript:()=>function(t){for(const i of[n(process.cwd(),"package.json"),t])try{return e(i)("typescript")}catch{}throw new Error("typescript is not installed")}(import.meta.url),version:"
|
|
2
|
+
import{createRequire as e}from"module";import{join as n}from"path";import{existsSync as t,readFileSync as i,readdirSync as r}from"fs";var o=/[.+^$()|[\]\\]/g;function s(e){let n="",t=0;for(let i=0;i<e.length;i++){const r=e[i];"*"===r?"*"===e[i+1]?"/"===e[i+2]?(n+="(?:[^/]+/)*",i+=2):(n+=".*",i+=1):n+="[^/]*":"?"===r?n+="[^/]":"{"===r?(n+="(?:",t+=1):"}"===r&&t>0?(n+=")",t-=1):n+=","===r&&t>0?"|":r.replace(o,"\\$&")}if(0!==t)throw new Error(`unbalanced { in glob "${e}"`);return new RegExp(`^${n}$`)}function a(e){const n=e.map(s);return e=>n.some(n=>n.test(e))}var c=new Set(["node_modules",".git"]),g=new Set(["dist","coverage",".next",".turbo"]);function l(e){const n=e.search(/[*?{]/),t=-1===n?e:e.slice(0,n),i=t.lastIndexOf("/");return-1===i?"":t.slice(0,i)}function u(e,t){const i=a(t),o=[...new Set(t.map(l))].sort(),s=o.filter(e=>!o.some(n=>n!==e&&(""===n||e.startsWith(`${n}/`)))),u=new Set,d=t=>{let o;try{o=r(n(e,t),{withFileTypes:!0})}catch{return}for(const e of o){const n=t?`${t}/${e.name}`:e.name;e.isDirectory()?c.has(e.name)||""===t&&g.has(e.name)||d(n):e.isFile()&&i(n)&&u.add(n)}};for(const e of s)d(e);return[...u].sort(h)}var h=(e,n)=>e<n?-1:e>n?1:0,d={busy:{words:["Accepting","Adding","Applying","Approving","Arranging","Asking","Assigning","Booking","Building","Calculating","Cancelling","Capturing","Changing","Checking","Choosing","Closing","Combining","Comparing","Completing","Confirming","Connecting","Converting","Copying","Correcting","Counting","Creating","Deleting","Detaching","Downloading","Drawing","Duplicating","Emailing","Ending","Exporting","Fetching","Filing","Finding","Flushing","Generating","Grouping","Importing","Linking","Loading","Locating","Looking","Making","Marking","Matching","Measuring","Merging","Moving","Opening","Ordering","Paying","Pending","Posting","Preparing","Previewing","Pricing","Processing","Provisioning","Publishing","Purging","Pushing","Queued","Queuing","Quoting","Re-booking","Re-importing","Re-opening","Reading","Rebooting","Rebuilding","Receiving","Reconciling","Reconnecting","Recording","Refreshing","Refunding","Regenerating","Registering","Reinstating","Rejecting","Removing","Reopening","Requesting","Resending","Resetting","Resolving","Restarting","Restoring","Resuming","Retrying","Reversing","Reverting","Running","Saving","Searching","Sending","Setting","Settling","Sharing","Signing","Splitting","Starting","Submitting","Suggesting","Switching","Syncing","Taking","Testing","Transferring","Typing","Updating","Uploading","Verifying","Waiting","Withdrawing","Working"]}};new Set((d.busy?.words??[]).map(e=>e.toLowerCase()));var f=class extends Error{},m=new Set(["$schema","schema","include","exclude","allow"]),p=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),w=e=>"string"==typeof e&&""!==e.trim();var y="d3as2htf4hwbtr.cloudfront.net",S={dealer:{bucket:"inovit-dealer-portal-assets",hosts:["d201q0i87q901p.cloudfront.net"],key_pattern:"^marketing/"},media:{bucket:"regis-media-production",hosts:["media.regis.design","d21nnr9ivf9hcc.cloudfront.net"],key_pattern:"^[a-z0-9_]+/storefront/(?!uploads/thumbs/)"},site:{bucket:"inovit-ecommerce-media",hosts:["cdn.inovit.com","dhxlibd8r3td0.cloudfront.net"],key_pattern:"^images/"}},$=Object.values(S),R=Object.freeze([...new Set([...$.flatMap(e=>e.hosts),y,...$.map(e=>e.bucket)])].sort()),b=new RegExp([...R.map(e=>{return`(?<![\\w-])${n=e,n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?![\\w-])`;var n}),"(?<![\\w-])[a-z0-9]+\\.cloudfront\\.net(?![\\w-])","(?<![\\w-])(?:[a-z0-9-]+\\.)*s3(?:[.-][a-z0-9-]+)*\\.amazonaws\\.com(?![\\w-])","s3://"].join("|"),"gi");function k(e,n,t){const i=e.createSourceFile(n,t,e.ScriptTarget.Latest,!0,function(e,n){return n.endsWith(".tsx")?e.ScriptKind.TSX:n.endsWith(".jsx")?e.ScriptKind.JSX:/\.[cm]?js$/.test(n)?e.ScriptKind.JS:e.ScriptKind.TS}(e,n)),r=[],o=(e,n)=>{const t=i.getLineAndCharacterOfPosition(e.getStart(i)).line+1;for(const e of function(e){return[...e.matchAll(b)].map(e=>({match:e[0],index:e.index??0}))}(n)){const i=n.slice(0,e.index);r.push({line:t+(i.match(/\n/g)?.length??0),match:e.match})}},s=n=>{e.isStringLiteral(n)||e.isNoSubstitutionTemplateLiteral(n)||e.isTemplateHead(n)||e.isTemplateMiddle(n)||e.isTemplateTail(n)?o(n,n.text):e.isRegularExpressionLiteral(n)&&o(n,n.text.replace(/\\(.)/g,"$1")),e.forEachChild(n,s)};return s(i),r}var v="media-host-check.config.json",x="efficient-shell-media-host-check",C=`${x}: no code writes a media origin; files are reached through the storage backend, the API's URL, media() or imageCopyUrl() (harness API-15, SSOT-2).\n\n ${x} check this repository; exits 1 on a finding\n ${x} --json print the result as JSON\n\nRefused in any string, template or regular expression: every host and bucket in\nthe image-copies contract, any *.cloudfront.net host, any S3 endpoint, and s3://.\nReads ${v} in the current directory.`;function A(e,t,r){const o=[],s=a(r.exclude);for(const e of r.include)0===u(t,[e]).length&&o.push(`include "${e}" matches no file; delete it`);const c=u(t,r.include).filter(e=>(e=>/\.(?:[cm]?[jt]s|[jt]sx)$/.test(e)&&!e.endsWith(".d.ts"))(e)&&!s(e)),g=[];for(const r of c)for(const o of k(e,r,i(n(t,r),"utf8")))g.push({file:r,...o});const l=(e,n)=>e.toLowerCase()===n.toLowerCase();for(const e of r.allow)g.some(n=>n.file===e.file&&l(e.match,n.match))||o.push(`allow ${e.file} "${e.match}" matches nothing any more; delete it`);return{files:c.length,findings:g.filter(e=>!(e=>r.allow.some(n=>n.file===e.file&&l(n.match,e.match)))(e)),problems:o}}process.exitCode=function(e,r){let o=!1;for(const n of e){if("--help"===n||"-h"===n)return r.out(C),0;if("--version"===n||"-v"===n)return r.out(r.version),0;if("--json"!==n)return r.err(`${x}: unknown argument "${n}"\n\n${C}`),2;o=!0}const s=n(r.cwd,v);if(!t(s))return r.err(`${x}: no ${v} in ${r.cwd}. Run it from the repository root.`),2;let a;try{const e=function(e,n="media-host-check.config.json"){const t=[];if(!p(e))throw new f(`${n}: expected an object`);for(const n of Object.keys(e))m.has(n)||t.push(`unknown key "${n}"`);1!==e.schema&&t.push('"schema" must be 1');const i=(n,i)=>{const r=e[n];return void 0!==r||i?!Array.isArray(r)||!r.every(w)||i&&0===r.length?(t.push(`"${n}" must be ${i?"a non-empty":"an"} array of globs`),[]):r:[]},r=i("include",!0),o=i("exclude",!1),s=[];void 0===e.allow||Array.isArray(e.allow)||t.push('"allow" must be an array');for(const[n,i]of(Array.isArray(e.allow)?e.allow:[]).entries()){if(!(p(i)&&w(i.file)&&w(i.match)&&w(i.reason))){t.push(`allow[${n}] needs "file", "match" and "reason", each a non-empty string`);continue}const e=Object.keys(i).filter(e=>!["file","match","reason"].includes(e));e.length&&t.push(`allow[${n}] has unknown keys: ${e.join(", ")}`),s.push({file:i.file,match:i.match,reason:i.reason})}if(t.length)throw new f(`${n}:\n ${t.join("\n ")}`);return{schema:1,include:r,exclude:o,allow:s}}(JSON.parse(i(s,"utf8")),v);a=A(r.loadTypeScript(),r.cwd,e)}catch(e){return r.err(`${x}: ${e instanceof f||e instanceof SyntaxError?e.message:String(e)}`),2}const c=a.findings.length>0||a.problems.length>0;if(o)return r.out(JSON.stringify({ok:!c,...a},null,2)),c?1:0;if(!c)return r.out(`${x}: ${a.files} files, no media origin written in code (harness API-15, SSOT-2).`),0;for(const e of a.findings)r.err(`${e.file}:${e.line} "${e.match}" is a media origin written in code.`);for(const e of a.problems)r.err(`${v}: ${e}`);return a.findings.length&&r.err(`\nReach the file through the storage backend, the URL the API returns, media() or imageCopyUrl() (harness API-15, SSOT-2). An origin that must stay goes in "allow" in ${v}, with its reason.`),1}(process.argv.slice(2),{cwd:process.cwd(),out:e=>console.log(e),err:e=>console.error(e),loadTypeScript:()=>function(t){for(const i of[n(process.cwd(),"package.json"),t])try{return e(i)("typescript")}catch{}throw new Error("typescript is not installed")}(import.meta.url),version:"9.1.0"});
|