efficient-shell 8.14.0 → 8.16.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/README.md +1 -0
- package/dist/{Browser-26TOVDOP.js → Browser-MAMFQSXN.js} +14 -14
- package/dist/{Calculator-HGMW57YU.js → Calculator-NPBOUICN.js} +22 -22
- package/dist/{CurrencyConverter-T6TJDZZW.js → CurrencyConverter-NTJJAE7V.js} +6 -6
- package/dist/{Documents-OYR25EJW.js → Documents-BP24OP7L.js} +4 -4
- package/dist/{Files-TBNWVUGD.js → Files-4ZN6G2UJ.js} +77 -77
- package/dist/{Notepad-24DNVRUJ.js → Notepad-2IT72CDY.js} +9 -9
- package/dist/{PomodoroTimer-MOW3OPPP.js → PomodoroTimer-LBB7U6QS.js} +18 -18
- package/dist/{Preview-K7BU5P3L.js → Preview-YCOTMJKM.js} +30 -30
- package/dist/{Spreadsheet-LLBS5VAM.js → Spreadsheet-MJQZPWT5.js} +7 -7
- package/dist/{Stock-RMZ2KVZX.js → Stock-NBXKAAIF.js} +1 -1
- package/dist/{Weather-H4OYMT3J.js → Weather-M7NGMQFP.js} +12 -12
- package/dist/{WorldClock-NYIJMHX7.js → WorldClock-YQQJXAUG.js} +4 -4
- package/dist/ai/index.d.ts +57 -2
- package/dist/ai/index.js +20 -19
- package/dist/ai.css +1 -1
- 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/{chunk-TFDKULWU.js → chunk-3WUR24KP.js} +39 -39
- package/dist/{chunk-LES7RIWM.js → chunk-5PYRVXWN.js} +1 -1
- package/dist/{chunk-TBPB7HL3.js → chunk-5RQT6BCD.js} +3 -3
- package/dist/chunk-ON7Q5CKD.js +1 -0
- package/dist/{chunk-NMQOXQLH.js → chunk-RTOP3XUS.js} +1 -1
- package/dist/{chunk-7YM4CMWO.js → chunk-XNIMCECI.js} +1 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +694 -694
- package/dist/telemetry/index.js +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-MOJ2AKFM.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{AVAILABLE_CITIES as e,fetchCityWeather as t,getCondition as r,toFahrenheit as n}from"./chunk-FBDZGO3V.js";import{loadAppearance as a,WidgetSettingsModal as s}from"./chunk-
|
|
1
|
+
import{AVAILABLE_CITIES as e,fetchCityWeather as t,getCondition as r,toFahrenheit as n}from"./chunk-FBDZGO3V.js";import{loadAppearance as a,WidgetSettingsModal as s}from"./chunk-XNIMCECI.js";import{useWidgetSettings as i}from"./chunk-3WUR24KP.js";import"./chunk-TPDOOCFS.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-LR2X6MKB.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-JF45HC5H.js";import"./chunk-5GHLKEJQ.js";import"./chunk-LT2MMSHH.js";import"./chunk-ARC3R4I2.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import{useShellPrefs as c}from"./chunk-KC3EX26K.js";import"./chunk-7IF3RZF3.js";import"./chunk-GZCAFWWB.js";import"./chunk-UGTRSRIW.js";import"./chunk-QR4RM7PO.js";import"./chunk-BOGBLZKS.js";import"./chunk-CDAJKLGL.js";import"./chunk-QMQVOUIV.js";import"./chunk-FSP63GKK.js";import"./chunk-K7U4RWXJ.js";import"./chunk-ABJ4LWOW.js";import"./chunk-VJPJNCB4.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as o}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-Z3WKHMVB.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-T53TXXOC.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-OVNRVFWS.js";import"./chunk-C3QOHMR6.js";import{useState as l,useEffect as m,useCallback as h}from"react";import{jsxs as p,Fragment as u,jsx as d}from"react/jsx-runtime";var k="world_clock_appearance",g=["London","Shanghai","New York"];function x(){const{prefs:x,save:y}=c(),[b,j]=l(()=>a(k)),[f,N]=l(!1),[v,w]=l([]),[C,F]=l(b),W={useFahrenheit:!!x.weather_prefs?.useFahrenheit},[R,K]=l(W),[O,J]=l(()=>/* @__PURE__ */new Date);m(()=>{const e=setInterval(()=>J(/* @__PURE__ */new Date),3e4);return()=>clearInterval(e)},[]);const T=Object.fromEntries(Object.entries(e).map(([e,t])=>[t.tz,e])),D=x.world_clocks,S=(()=>{if(!Array.isArray(D)||0===D.length)return g;const t=[];for(const r of D){const n=e[r]?r:T[r];n&&!t.includes(n)&&t.push(n)}return t.length?t:g})(),[L,M]=l({}),[B,U]=l(!0);m(()=>{let e=!1;return U(!0),(async()=>{const r={};await Promise.all(S.map(async e=>{const n=await t(e);n&&(r[e]=n)})),e||(M(r),U(!1))})(),()=>{e=!0}},[S.join(",")]),i(h(()=>{w([...S]),F({...b}),K({...W}),N(!0)},[S.join(","),b,W.useFahrenheit]));const V=e=>W.useFahrenheit?`${n(e)}°`:`${e}°`;/* @__PURE__ */
|
|
2
2
|
return p(u,{children:[
|
|
3
|
-
/* @__PURE__ */d("div",{style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${b.activeOpacity/100})`,backdropFilter:b.activeBlur>0?`blur(${b.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:"divide-y divide-gray-200",children:[
|
|
3
|
+
/* @__PURE__ */d("div",{style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${b.activeOpacity/100})`,backdropFilter:b.activeBlur>0?`blur(${b.activeBlur}px)`:void 0},children:/* @__PURE__ */p("div",{className:"divide-y divide-gray-200",children:[B&&S.every(e=>!L[e])&&/* @__PURE__ */d(o,{size:"sm",padding:"py-6",label:"Loading"}),S.map(t=>{const n=L[t],a=e[t]?.tz??"UTC",{time:s,ampm:i}=function(e,t){try{const r=new Intl.DateTimeFormat("en-US",{timeZone:e,hour:"numeric",minute:"2-digit",hour12:!0}).formatToParts(t),n=r.find(e=>"hour"===e.type)?.value||"12";return{time:`${n}:${r.find(e=>"minute"===e.type)?.value||"00"}`,ampm:(r.find(e=>"dayPeriod"===e.type)?.value||"").toUpperCase()}}catch{return{time:"",ampm:""}}}(a,O);if(!n)/* @__PURE__ */
|
|
4
4
|
return p("div",{className:"px-4 py-3",children:[
|
|
5
5
|
/* @__PURE__ */p("div",{className:"flex items-baseline justify-between gap-2",children:[
|
|
6
6
|
/* @__PURE__ */d("span",{className:"text-base font-semibold tracking-tight text-gray-900 truncate",children:t}),
|
|
@@ -19,12 +19,12 @@ return p("div",{className:"px-4 py-3",children:[
|
|
|
19
19
|
/* @__PURE__ */d("span",{className:"text-gray-300 shrink-0",children:"·"}),
|
|
20
20
|
/* @__PURE__ */d("span",{className:"truncate",children:c})]}),
|
|
21
21
|
/* @__PURE__ */p("span",{className:"tabular-nums text-gray-500 shrink-0",children:["H:",V(n.high)," L:",V(n.low)]})]})]},t)})]})}),
|
|
22
|
-
/* @__PURE__ */p(s,{open:f,onClose:()=>N(!1),title:"World Clock Settings",appearance:C,onAppearanceChange:F,onSave:()=>{0!==v.length&&(y({world_clocks:v,weather_prefs:{...x.weather_prefs??{},useFahrenheit:
|
|
22
|
+
/* @__PURE__ */p(s,{open:f,onClose:()=>N(!1),title:"World Clock Settings",appearance:C,onAppearanceChange:F,onSave:()=>{0!==v.length&&(y({world_clocks:v,weather_prefs:{...x.weather_prefs??{},useFahrenheit:R.useFahrenheit}}),j(C),localStorage.setItem(k,JSON.stringify(C)),N(!1))},children:[
|
|
23
23
|
/* @__PURE__ */p("div",{children:[
|
|
24
24
|
/* @__PURE__ */d("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"Display"}),
|
|
25
25
|
/* @__PURE__ */p("div",{className:"flex items-center gap-3 mb-2",children:[
|
|
26
26
|
/* @__PURE__ */d("span",{className:"text-sm text-gray-600 w-24",children:"Temperature"}),
|
|
27
|
-
/* @__PURE__ */d("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */d("button",{onClick:()=>K(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(
|
|
27
|
+
/* @__PURE__ */d("div",{className:"flex gap-1",children:[{key:!1,label:"°C"},{key:!0,label:"°F"}].map(e=>/* @__PURE__ */d("button",{onClick:()=>K(t=>({...t,useFahrenheit:e.key})),className:"px-3 py-1 text-xs font-medium rounded-lg border transition-colors "+(R.useFahrenheit===e.key?"bg-blue-600 text-white border-blue-600":"bg-white text-gray-700 border-gray-300 hover:bg-gray-50"),children:e.label},String(e.key)))})]}),
|
|
28
28
|
/* @__PURE__ */d("p",{className:"text-2xs text-gray-400 mt-1",children:"Shared with the Weather widget."})]}),
|
|
29
29
|
/* @__PURE__ */p("div",{children:[
|
|
30
30
|
/* @__PURE__ */d("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:"Cities"}),
|
package/dist/ai/index.d.ts
CHANGED
|
@@ -15,8 +15,18 @@ interface ConversationDataPart {
|
|
|
15
15
|
/** Who wrote a restored message. `staff` is a teammate who took the thread over;
|
|
16
16
|
* `system` is a notice the server wrote. Streamed messages carry no source. */
|
|
17
17
|
type MessageSource = 'user' | 'assistant' | 'staff' | 'system';
|
|
18
|
+
/** What one turn cost, sent on the stream's `finish`. `generation_ms` is the
|
|
19
|
+
* model's writing time only (no wait for the first token, no tool calls), so
|
|
20
|
+
* `output_tokens / generation_ms` is its writing speed. */
|
|
21
|
+
interface AssistantTurnUsage {
|
|
22
|
+
input_tokens: number;
|
|
23
|
+
output_tokens: number;
|
|
24
|
+
generation_ms: number;
|
|
25
|
+
}
|
|
18
26
|
interface AssistantMessageMetadata {
|
|
19
27
|
source?: MessageSource;
|
|
28
|
+
/** Set on a reply streamed in this window; a restored thread has none. */
|
|
29
|
+
usage?: AssistantTurnUsage;
|
|
20
30
|
}
|
|
21
31
|
/** A step of a server-run plan. `status` is the server's record of what ran. */
|
|
22
32
|
interface PlanStepData {
|
|
@@ -103,6 +113,14 @@ interface AssistantChatLabels {
|
|
|
103
113
|
/** The plan approval card's heading; "{count}" is the number of steps. */
|
|
104
114
|
planApprovalHeading: string;
|
|
105
115
|
approvePlan: string;
|
|
116
|
+
/** Under a finished reply: "{tokens}", "{seconds}" and "{rate}" are filled in. */
|
|
117
|
+
replyStats: string;
|
|
118
|
+
/** Under a finished reply too short to time: "{tokens}" is filled in. */
|
|
119
|
+
replyTokens: string;
|
|
120
|
+
/** Under a reply being written, before there is a rate to show. */
|
|
121
|
+
streaming: string;
|
|
122
|
+
/** Under a reply being written: "{rate}" is an estimate, filled in. */
|
|
123
|
+
streamingRate: string;
|
|
106
124
|
}
|
|
107
125
|
type AssistantChatVariant = 'panel' | 'window' | 'bubble';
|
|
108
126
|
interface AssistantChatProps {
|
|
@@ -134,6 +152,15 @@ interface AssistantChatProps {
|
|
|
134
152
|
/** Show the model's reasoning as a collapsed step in the chain. Only `window`
|
|
135
153
|
* (staff) ever honours it; `panel` and `bubble` never show reasoning. */
|
|
136
154
|
showReasoning?: boolean;
|
|
155
|
+
/** Show tokens and tokens per second under each reply. Like
|
|
156
|
+
* `showReasoning`, only `window` (staff) ever honours it. */
|
|
157
|
+
showUsage?: boolean;
|
|
158
|
+
/** Without the header, "New chat" sits beside the composer. A host that
|
|
159
|
+
* offers its own (a session list) turns it off. Default: shown. */
|
|
160
|
+
showNewChat?: boolean;
|
|
161
|
+
/** Told when a turn starts and when it ends, so a host keeping several
|
|
162
|
+
* chats open can show which are still being written. */
|
|
163
|
+
onBusyChange?: (busy: boolean) => void;
|
|
137
164
|
/** Bubble only: start open. */
|
|
138
165
|
defaultOpen?: boolean;
|
|
139
166
|
/** Bubble only: told when the panel opens or closes. */
|
|
@@ -159,13 +186,15 @@ interface MessageProps {
|
|
|
159
186
|
labels: AssistantChatLabels;
|
|
160
187
|
showReasoning: boolean;
|
|
161
188
|
showToolOutput: boolean;
|
|
189
|
+
/** Tokens and tokens per second under the reply (staff only). */
|
|
190
|
+
showUsage?: boolean;
|
|
162
191
|
/** This message is the one being written right now. */
|
|
163
192
|
live: boolean;
|
|
164
193
|
onApprove: (approvalId: string, approved: boolean) => void;
|
|
165
194
|
/** Plans by approval id, for a plan's approval card. */
|
|
166
195
|
plans?: Map<string, PlanDataPart>;
|
|
167
196
|
}
|
|
168
|
-
declare function Message({ message, toolLabels, labels, showReasoning, showToolOutput, live, onApprove, plans }: MessageProps): react_jsx_runtime.JSX.Element | null;
|
|
197
|
+
declare function Message({ message, toolLabels, labels, showReasoning, showToolOutput, showUsage, live, onApprove, plans }: MessageProps): react_jsx_runtime.JSX.Element | null;
|
|
169
198
|
|
|
170
199
|
interface ApprovalDecision {
|
|
171
200
|
approval_id: string;
|
|
@@ -268,4 +297,30 @@ declare function PlanApprovalCard({ approvalId, plan, input, labels, toolLabels,
|
|
|
268
297
|
/** The chat's own words, English. Hosts translate through the `labels` prop. */
|
|
269
298
|
declare const DEFAULT_ASSISTANT_CHAT_LABELS: AssistantChatLabels;
|
|
270
299
|
|
|
271
|
-
|
|
300
|
+
/**
|
|
301
|
+
* Tokens per second for a reply, as pure functions.
|
|
302
|
+
*
|
|
303
|
+
* A finished reply has the server's counts (`AssistantTurnUsage`, on the
|
|
304
|
+
* stream's `finish`). While it is still being written there are none yet, so
|
|
305
|
+
* the rate is an ESTIMATE from the text so far, at four characters a token,
|
|
306
|
+
* the usual rule of thumb for English, over the time since the reply began
|
|
307
|
+
* (so it includes the wait for the first token, and reads a little low until
|
|
308
|
+
* the exact figure replaces it). The server releases text a sentence at a
|
|
309
|
+
* time, so it arrives in bursts; the estimate waits a second before it says
|
|
310
|
+
* anything.
|
|
311
|
+
*/
|
|
312
|
+
|
|
313
|
+
declare function tokensPerSecond(tokens: number, ms: number): number | null;
|
|
314
|
+
declare function estimateTokens(text: string): number;
|
|
315
|
+
interface StatsLabels {
|
|
316
|
+
replyStats: string;
|
|
317
|
+
replyTokens: string;
|
|
318
|
+
streaming: string;
|
|
319
|
+
streamingRate: string;
|
|
320
|
+
}
|
|
321
|
+
/** The line under a finished reply. */
|
|
322
|
+
declare function finishedStats(usage: AssistantTurnUsage, labels: StatsLabels): string;
|
|
323
|
+
/** The line under a reply being written: `elapsedMs` since the reply began. */
|
|
324
|
+
declare function liveStats(text: string, elapsedMs: number, labels: StatsLabels): string;
|
|
325
|
+
|
|
326
|
+
export { ApprovalCard, type ApprovalDecision, AssistantChat, type AssistantChatLabels, type AssistantChatProps, type AssistantChatRequestBody, type AssistantChatVariant, type AssistantConversation, Message as AssistantMessage, type AssistantMessageMetadata, type AssistantTurnUsage, type AssistantUIMessage, type ConversationHistory, DEFAULT_ASSISTANT_CHAT_LABELS, type MessageSource, PlanApprovalCard, PlanChecklist, type PlanDataPart, type PlanStatus, type PlanStepData, type ToolLabel, type ToolLabelSpec, type ToolLabels, ToolStep, buildRequestBody, estimateTokens, finishedStats, liveStats, messagesFromHistory, pinnedPlan, plansOf, tokensPerSecond };
|
package/dist/ai/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{StepChain as e,StepChainItem as t}from"../chunk-ZEDYXP2J.js";import{Markdown as n}from"../chunk-76YDO3KA.js";import{Banner as r}from"../chunk-UWNL4FO2.js";import{Textarea_default as a}from"../chunk-AWY3F6PV.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{IconButton_default as o}from"../chunk-JHDWTYZ4.js";import"../chunk-JFSYWEHD.js";import{Button_default as s}from"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import{Icon as l}from"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import{SpinnerRing as i}from"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{
|
|
2
|
+
import{StepChain as e,StepChainItem as t}from"../chunk-ZEDYXP2J.js";import{Markdown as n}from"../chunk-76YDO3KA.js";import{Banner as r}from"../chunk-UWNL4FO2.js";import{Textarea_default as a}from"../chunk-AWY3F6PV.js";import"../chunk-UJUTS6LJ.js";import"../chunk-PJPK2ADX.js";import{IconButton_default as o}from"../chunk-JHDWTYZ4.js";import"../chunk-JFSYWEHD.js";import{Button_default as s}from"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import{Icon as l}from"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import{SpinnerRing as i}from"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import"../chunk-OVNRVFWS.js";import"../chunk-C3QOHMR6.js";import{useRef as c,useState as p,useEffect as d,useId as u,useCallback as m,useMemo as h}from"react";import{jsx as g,jsxs as f}from"react/jsx-runtime";import{isToolUIPart as v,getToolName as b,DefaultChatTransport as y,lastAssistantMessageIsCompleteWithApprovalResponses as x}from"ai";import{useChat as w}from"@ai-sdk/react";function k({labels:e,placeholder:t,busy:n,focusWhen:r,onSend:i,onStop:u,onNewChat:m}){const[h,v]=p(""),b=c(null);d(()=>{r&&b.current?.focus()},[r]);const y=()=>{!n&&h.trim()&&(i(h),v(""))};/* @__PURE__ */
|
|
3
3
|
return f("form",{className:"flex items-end gap-2 border-t border-gray-200 p-3",onSubmit:e=>{e.preventDefault(),y()},children:[m&&/* @__PURE__ */g(o,{type:"button",variant:"ghost","aria-label":e.newChat,title:e.newChat,onClick:m,children:/* @__PURE__ */g(l,{name:"add"})}),
|
|
4
|
-
/* @__PURE__ */g("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */g(a,{ref:b,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:h,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),y())},className:"max-h-32"})}),/* @__PURE__ */g(s,n?{type:"button",variant:"secondary",onClick:
|
|
5
|
-
return g("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */g(e,{summary:
|
|
4
|
+
/* @__PURE__ */g("div",{className:"min-w-0 flex-1",children:/* @__PURE__ */g(a,{ref:b,"aria-label":e.inputLabel,placeholder:t,rows:1,autoGrow:!0,value:h,onChange:e=>v(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),y())},className:"max-h-32"})}),/* @__PURE__ */g(s,n?{type:"button",variant:"secondary",onClick:u,children:e.stop}:{type:"submit",disabled:!h.trim(),children:e.send})]})}function N(e){if(!v(e))return null;const t=e;return{toolName:b(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 C(e){return e.parts.map(e=>"text"===e.type?e.text:"").join("")}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=C(n).trim();if(!e)throw new Error("assistant chat: empty message");return{conversation_id:t,text:e,approvals:[]}}const r=function(e){const t=[];for(const n of e.parts){if(!v(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 A=/* @__PURE__ */new Set(["proposed","approved","running"]);function $(e){return A.has(e.status)}function S(e){const t=[];for(const n of e.parts)"data-plan"===n.type&&t.push(n.data);return t}function _(e){const t=/* @__PURE__ */new Map;for(const n of e)for(const e of S(n))t.delete(e.id),t.set(e.id,e);return t}function T(e){const t=[..._(e).values()],n=t[t.length-1];if(!n)return null;if($(n))return n;const r=e[e.length-1];return r&&"assistant"===r.role&&S(r).some(e=>e.id===n.id)?n:null}function O(e){const t=e.messages.filter(e=>e.text).map(e=>({id:e.id,role:e.role,parts:[{type:"text",text:e.text}],...e.source&&e.source!==e.role?{metadata:{source:e.source}}:{}})),n=(e.plans??[]).filter($);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 I(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}function D(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 J={propose_plan:{label:"Plan the changes",running:"Planning the changes",done:"Planned the changes"}};function L(e,t){const n=t?.[e]??J[e];return"string"==typeof n?{label:n}:n??{label:D(e)}}function W(e,t){return L(e,t).label}function R(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function E(e,t,n){const r=L(e,n).describe;if(!r)return"";try{return r(R(t))?.trim()??""}catch{return""}}function P(e,t){return null==e?"":"boolean"==typeof e?e?"Yes":"No":"object"!=typeof e?String(e):Array.isArray(e)?e.map(e=>P(e,t+1)).filter(Boolean).join(", "):t>=3?"…":Object.entries(e).map(([e,n])=>{const r=P(n,t+1);return r?`${D(e)}: ${r}`:""}).filter(Boolean).join("; ")}function M(e){const t=R(e),n=[];for(const[e,r]of Object.entries(t)){const t=P(r,0);t&&n.push({label:D(e),value:t})}return 0===n.length&&null!=e&&"object"!=typeof e&&n.push({label:"Value",value:P(e,0)}),n}var H={proposed:"planProposed",approved:"planApproved",running:"planRunning",completed:"planCompleted",failed:"planFailed",denied:"planDenied",expired:"planExpired"},U={pending:"pending",running:"active",done:"complete",failed:"failed",skipped:"skipped"};function z(e,t){const n=E(e.tool_name,e.input,t);return`${W(e.tool_name,t)}${n?` ${n}`:""}`}function F(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}function B(e,t){const n=e.steps.filter(e=>"done"===e.status).length;return`${F(t.planSummary,{done:n,total:e.steps.length})} · ${t[H[e.status]]}`}function K({plan:n,labels:r}){/* @__PURE__ */
|
|
5
|
+
return g("section",{"aria-label":r.plan,className:"border-t border-gray-200 bg-white px-3 py-2",children:/* @__PURE__ */g(e,{summary:B(n,r),busy:$(n),label:r.plan,children:n.steps.map(e=>/* @__PURE__ */g(t,{label:e.title,status:U[e.status],description:"done"!==e.status&&e.result_summary?e.result_summary:void 0},e.id))})})}function V({approvalId:e,plan:t,input:n,labels:r,toolLabels:a,onApprove:o}){const l=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),i=F(r.planApprovalHeading,{count:l.length});/* @__PURE__ */
|
|
6
6
|
return f("div",{role:"group","aria-label":i,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
|
|
7
7
|
/* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:i}),
|
|
8
|
-
/* @__PURE__ */g("ol",{className:"mt-2 list-decimal space-y-2 pl-5",children:l.map(e=>{const t=
|
|
8
|
+
/* @__PURE__ */g("ol",{className:"mt-2 list-decimal space-y-2 pl-5",children:l.map(e=>{const t=M(e.input);/* @__PURE__ */
|
|
9
9
|
return f("li",{children:[
|
|
10
|
-
/* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:
|
|
10
|
+
/* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:z(e,a)}),e.title&&/* @__PURE__ */g("div",{className:"text-xs text-gray-600",children:e.title}),t.length>0&&/* @__PURE__ */g("dl",{className:"mt-1 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:t.map(e=>/* @__PURE__ */f("div",{className:"contents",children:[
|
|
11
11
|
/* @__PURE__ */g("dt",{className:"text-gray-500",children:e.label}),
|
|
12
12
|
/* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})]},e.key)})}),
|
|
13
13
|
/* @__PURE__ */f("div",{className:"mt-3 flex gap-2",children:[
|
|
@@ -15,23 +15,24 @@ return f("li",{children:[
|
|
|
15
15
|
/* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>o(e,!1),children:r.deny})]})]})}function q({rows:e}){/* @__PURE__ */
|
|
16
16
|
return g("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs",children:e.map(e=>/* @__PURE__ */f("div",{className:"contents",children:[
|
|
17
17
|
/* @__PURE__ */g("dt",{className:"text-gray-500",children:e.label}),
|
|
18
|
-
/* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})}function Y({tool:e,toolLabels:t,labels:n,onApprove:r}){const a=
|
|
18
|
+
/* @__PURE__ */g("dd",{className:"min-w-0 break-words text-gray-800",children:e.value})]},e.label))})}function Y({tool:e,toolLabels:t,labels:n,onApprove:r}){const a=E(e.toolName,e.input,t),o=M(e.input),l=e.approvalId,i=`${n.approvalNeeded}: ${W(e.toolName,t)}${a?` ${a}`:""}`;/* @__PURE__ */
|
|
19
19
|
return f("div",{role:"group","aria-label":i,className:"rounded-lg border border-amber-300 bg-amber-50 p-3 text-sm",children:[
|
|
20
20
|
/* @__PURE__ */g("div",{className:"font-medium text-gray-900",children:i}),o.length>0&&/* @__PURE__ */g("div",{className:"mt-2",children:/* @__PURE__ */g(q,{rows:o})}),
|
|
21
21
|
/* @__PURE__ */f("div",{className:"mt-3 flex gap-2",children:[
|
|
22
22
|
/* @__PURE__ */g(s,{size:"sm",onClick:()=>r(l,!0),children:n.approve}),
|
|
23
|
-
/* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>r(l,!1),children:n.deny})]})]})}var Z={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function G(e,t,n){return function(e,t,n,r,a,o){const s=
|
|
23
|
+
/* @__PURE__ */g(s,{size:"sm",variant:"secondary",onClick:()=>r(l,!1),children:n.deny})]})]})}var Z={running:"active",done:"complete",failed:"failed",declined:"stopped",waiting:"waiting"};function G(e,t,n){return function(e,t,n,r,a,o){const s=L(n,a),l=E(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 X({tool:e,toolLabels:n,labels:r,showOutput:a}){const o=G(e,n,r),s=M(e.input),l=a&&"output-available"===e.state?M(e.output):[],i=a&&"output-error"===e.state&&e.errorText?e.errorText:"";let c=null;return(s.length>0||l.length>0||i)&&(c=/* @__PURE__ */f("details",{children:[
|
|
24
24
|
/* @__PURE__ */g("summary",{className:"cursor-pointer select-none",children:r.details}),
|
|
25
|
-
/* @__PURE__ */f("div",{className:"mt-1 space-y-2",children:[s.length>0&&/* @__PURE__ */g(q,{rows:s}),l.length>0&&/* @__PURE__ */g(q,{rows:l}),i&&/* @__PURE__ */g("div",{className:"text-red-600",children:i})]})]})),/* @__PURE__ */g(t,{label:o.base,description:o.subject||void 0,status:Z[o.kind],children:c})}function Q(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
|
|
26
|
-
/* @__PURE__ */g(V,{approvalId:r.approvalId,plan:d?.get(r.approvalId),input:r.input,labels:o,toolLabels:a,onApprove:
|
|
27
|
-
/* @__PURE__ */g(Y,{tool:r,toolLabels:a,labels:o,onApprove:
|
|
25
|
+
/* @__PURE__ */f("div",{className:"mt-1 space-y-2",children:[s.length>0&&/* @__PURE__ */g(q,{rows:s}),l.length>0&&/* @__PURE__ */g(q,{rows:l}),i&&/* @__PURE__ */g("div",{className:"text-red-600",children:i})]})]})),/* @__PURE__ */g(t,{label:o.base,description:o.subject||void 0,status:Z[o.kind],children:c})}function Q(e,t){return e>0&&t>=100?e/(t/1e3):null}function ee(e){return Math.ceil(e.length/4)}var te=(e,t)=>e.replace(/\{(\w+)\}/g,(e,n)=>t[n]??e),ne=e=>Math.round(e).toLocaleString();function re(e,t){const n=Q(e.output_tokens,e.generation_ms);return null===n?te(t.replyTokens,{tokens:ne(e.output_tokens)}):te(t.replyStats,{tokens:ne(e.output_tokens),seconds:(e.generation_ms/1e3).toFixed(1),rate:ne(n)})}function ae(e,t,n){const r=t>=1e3?Q(ee(e),t):null;return null===r?n.streaming:te(n.streamingRate,{rate:ne(r)})}function oe(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 se(e,t,n,r){const a=e.flatMap(e=>"tool"===e.kind?[G(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 le({message:e,live:t,labels:n}){const r=C(e),a=r.length>0,o=c(null),[s,l]=p(0);d(()=>{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 u=null;return t?u=a?ae(r,s,n):null:i&&(u=re(i,n)),u?/* @__PURE__ */g("div",{className:"px-1 text-xs tabular-nums text-gray-500",children:u}):null}function ie({message:r,toolLabels:a,labels:o,showReasoning:s,showToolOutput:l,showUsage:i,live:c,onApprove:p,plans:d}){const u=r.metadata?.source;if("system"===u){const e=C(r);return e?/* @__PURE__ */g("div",{className:"text-center text-xs text-gray-500",children:e}):null}if("user"===r.role){const e=C(r);return e?/* @__PURE__ */g("div",{className:"flex justify-end",children:/* @__PURE__ */g("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})}):null}const m=r.parts.map(N),h=[],v=[];let b=-1;const y=e=>{b<0&&(b=h.push(null)-1),v.push(e)};if(r.parts.forEach((e,t)=>{if("text"===e.type)return void(e.text.trim()&&h.push(/* @__PURE__ */g(n,{children:e.text},t)));if("reasoning"===e.type)return void(s&&e.text.trim()&&y({kind:"reasoning",key:`r${t}`,text:e.text}));const r=m[t];r&&(oe(r,m.slice(t+1).filter(e=>null!==e))||("approval-requested"===r.state&&r.approvalId&&"propose_plan"===r.toolName?h.push(
|
|
26
|
+
/* @__PURE__ */g(V,{approvalId:r.approvalId,plan:d?.get(r.approvalId),input:r.input,labels:o,toolLabels:a,onApprove:p},r.toolCallId)):"approval-requested"===r.state&&r.approvalId?h.push(
|
|
27
|
+
/* @__PURE__ */g(Y,{tool:r,toolLabels:a,labels:o,onApprove:p},r.toolCallId)):y({kind:"tool",key:r.toolCallId,tool:r})))}),b>=0&&(h[b]=/* @__PURE__ */g(e,{summary:se(v,c,a,o),busy:c,label:o.steps,children:v.map(e=>"tool"===e.kind?/* @__PURE__ */g(X,{tool:e.tool,toolLabels:a,labels:o,showOutput:l},e.key):/* @__PURE__ */g(t,{status:"complete",label:/* @__PURE__ */f("details",{children:[
|
|
28
28
|
/* @__PURE__ */g("summary",{className:"cursor-pointer select-none",children:o.reasoning}),
|
|
29
|
-
/* @__PURE__ */g("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===
|
|
30
|
-
/* @__PURE__ */g(
|
|
31
|
-
/* @__PURE__ */g(i,{className:"h-3 w-3"}),s.
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
/* @__PURE__ */g(
|
|
35
|
-
/* @__PURE__ */g(
|
|
36
|
-
/* @__PURE__ */g(
|
|
37
|
-
|
|
29
|
+
/* @__PURE__ */g("div",{className:"mt-1 whitespace-pre-wrap text-gray-500",children:e.text})]})},e.key))},"chain")),0===h.length)return null;const x=/* @__PURE__ */f("div",{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"===u&&/* @__PURE__ */g("div",{className:"text-xs font-medium text-blue-600",children:o.teamName}),h]});return!i||u?/* @__PURE__ */g("div",{className:"flex justify-start",children:x}):/* @__PURE__ */f("div",{className:"flex flex-col items-start gap-1",children:[x,
|
|
30
|
+
/* @__PURE__ */g(le,{message:r,live:c,labels:o})]})}function ce(e){const{messages:t,status:n,error:a,history:o,labels:s}=e,l=c(null),p=h(()=>function(e){const t=/* @__PURE__ */new Map;for(const n of _(e).values())t.set(n.approval_id,n);return t}(t),[t]);return d(()=>{const e=l.current;e&&(e.scrollTop=e.scrollHeight)},[t,n]),/* @__PURE__ */f("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"===o&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
|
|
31
|
+
/* @__PURE__ */g(i,{className:"h-3 w-3"}),s.loadingHistory]}),"failed"===o&&/* @__PURE__ */g(r,{tone:"warning",children:s.historyFailed}),0===t.length&&"idle"===o&&/* @__PURE__ */g("p",{className:"m-auto text-center text-sm text-gray-500",children:s.emptyState}),t.map((r,a)=>/* @__PURE__ */g(ie,{live:a===t.length-1&&("submitted"===n||"streaming"===n),message:r,toolLabels:e.toolLabels,labels:s,showReasoning:e.showReasoning,showToolOutput:e.showToolOutput,showUsage:e.showUsage,onApprove:e.onApprove,plans:p},r.id)),e.handedOver&&/* @__PURE__ */g("div",{role:"status",className:"text-center text-xs text-gray-500",children:s.teamJoined}),"submitted"===n&&/* @__PURE__ */f("div",{role:"status",className:"flex items-center gap-2 text-xs text-gray-500",children:[
|
|
32
|
+
/* @__PURE__ */g(i,{className:"h-3 w-3"}),s.thinking]}),a&&/* @__PURE__ */g("div",{role:"alert",children:/* @__PURE__ */g(r,{tone:"danger",children:I(a,s.genericError)})})]})}var pe={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",reasoning:"Reasoning",genericError:"Something went wrong. Please try again.",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"},de=(e,t)=>`${e.replace(/\/+$/,"")}/${t}`;function ue(e){return de(e,"assistant/chat/")}function me(e,t){return de(e,`assistant/chat/${encodeURIComponent(t)}/`)}function he(e){const t={...pe,...e.labels},n=e.variant??"panel",r=function(e){const t=c(e);t.current=e;const n=c(e.conversationId?{id:e.conversationId}:null),[r,a]=p("idle"),[o,s]=p(!1),[l,i]=p(n.current),u=m(e=>{n.current=e,i(e)},[]),g=m((e,n)=>(t.current.fetch??fetch)(e,n),[]),f=h(()=>new y({api:ue(e.apiBase),fetch:g,prepareSendMessagesRequest:async({messages:e})=>{const{apiBase:r,getHeaders:a,credentials:o}=t.current;return{api:ue(r),body:j(e,n.current?.id??null),headers:await(a?.())??{},...o?{credentials:o}:{}}}}),[g]),v=w({transport:f,sendAutomaticallyWhen:x,onData:e=>{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||(u(s?{id:r,guestToken:s}:{id:r}),t.current.onConversation?.(n.current))}}),{setMessages:b,stop:k}=v,N=m(async(e,n)=>{const{apiBase:r,getHeaders:o,credentials:l,onConversation:i}=t.current;a("loading");try{const t=await g(me(r,e),{method:"GET",headers:await(o?.())??{},...l?{credentials:l}:{},signal:n});if(n.aborted)return;if(404===t.status)return u(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:O(c)),a("idle")}catch{n.aborted||a("failed")}},[g,b,u]),C=e.conversationId??null;d(()=>{if(C===(n.current?.id??null)&&v.messages.length>0)return;if(null===C)return n.current&&(u(null),k(),b([])),void a("idle");n.current?.id===C||u({id:C});const e=new AbortController;return N(C,e.signal),()=>e.abort()},[C,N,b,k,u]);const A=m(async e=>{const r=n.current?.id;if(r)try{const{apiBase:a,getHeaders:o,credentials:l}=t.current,i=await g(me(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 p=O(c).filter(e=>e.metadata?.source);if(0===p.length)return;b(e=>{const t=new Set(e.map(e=>e.id)),n=p.filter(e=>!t.has(e.id));return n.length>0?[...e,...n]:e})}catch{}},[g,b]),$=c(A);$.current=A;const{status:S}=v,_="submitted"===S||"streaming"===S,T=c(!1),I=c(!1),D=!!e.subscribe;d(()=>{const e=T.current&&!_;if(T.current=_,!e)return;if(D&&!I.current)return;I.current=!1;const t=new AbortController;return $.current(t.signal),()=>t.abort()},[_,D]);const J=c(_);J.current=_;const L=l?.id,W=l?.guestToken;d(()=>{const e=n.current,r=t.current.subscribe;if(e&&r)return r(e,()=>{J.current?I.current=!0:$.current()})??void 0},[L,W]);const R=m(e=>{const t=e.trim();t&&v.sendMessage({text:t})},[v]),E=m((e,t)=>{v.addToolApprovalResponse({id:e,approved:t})},[v]),P=m(()=>{k(),u(null),b([]),a("idle"),s(!1),t.current.onConversation?.(null)},[b,k,u]);return{messages:v.messages,status:v.status,error:v.error,historyState:r,handedOver:o,send:R,stop:k,approve:E,reset:P}}(e),a="submitted"===r.status||"streaming"===r.status,i=c(e.onBusyChange);i.current=e.onBusyChange,d(()=>{i.current?.(a)},[a]);const u="window"===n,v=e.showHeader??"window"!==n,b=e.title??t.title,N=T(r.messages);/* @__PURE__ */
|
|
33
|
+
return f("section",{"aria-label":b,className:`flex h-full min-h-0 flex-col bg-white text-gray-900 ${e.className??""}`.trim(),children:[v&&/* @__PURE__ */f("header",{className:"flex items-center gap-2 border-b border-gray-200 px-3 py-2",children:[
|
|
34
|
+
/* @__PURE__ */g("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:b}),r.messages.length>0&&/* @__PURE__ */g(s,{size:"sm",variant:"ghost",onClick:r.reset,children:t.newChat}),e.onClose&&/* @__PURE__ */g(o,{size:"sm","aria-label":t.close,onClick:e.onClose,children:/* @__PURE__ */g(l,{name:"close"})})]}),
|
|
35
|
+
/* @__PURE__ */g(ce,{messages:r.messages,status:r.status,error:r.error,history:r.historyState,handedOver:r.handedOver,labels:t,title:b,toolLabels:e.toolLabels,showReasoning:u&&!0===e.showReasoning,showToolOutput:u,showUsage:u&&!0===e.showUsage,onApprove:r.approve}),N&&/* @__PURE__ */g(K,{plan:N,labels:t},N.id),
|
|
36
|
+
/* @__PURE__ */g(k,{labels:t,placeholder:e.placeholder??t.placeholder,busy:a,focusWhen:e.focusComposer,onSend:r.send,onStop:r.stop,onNewChat:!v&&!1!==e.showNewChat&&r.messages.length>0?r.reset:void 0})]})}function ge(e){const t={...pe,...e.labels},[n,r]=p(e.defaultOpen??!1),a=u(),o=c(null),s=c(n),i=t=>{r(t),e.onOpenChange?.(t)};return d(()=>{s.current&&!n&&o.current?.focus(),s.current=n},[n]),/* @__PURE__ */f("div",{className:"rosh-assistant",style:{display:"contents"},children:[n&&/* @__PURE__ */g("div",{id:a,role:"dialog","aria-label":e.title??t.title,onKeyDown:e=>{"Escape"===e.key&&i(!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__ */g(he,{...e,onClose:()=>i(!1),focusComposer:!0})}),
|
|
37
|
+
/* @__PURE__ */g("button",{ref:o,type:"button","aria-expanded":n,"aria-controls":n?a:void 0,"aria-label":n?t.close:t.open,onClick:()=>i(!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__ */g(l,n?{name:"close",size:20}:{name:"chat-bubble-left-right",size:22})})]})}function fe(e){if("bubble"===e.variant)/* @__PURE__ */return g(ge,{...e});const t="window"!==e.variant;/* @__PURE__ */
|
|
38
|
+
return g(he,{...e,className:`${t?"border-l border-gray-200":""} ${e.className??""}`.trim()})}export{Y as ApprovalCard,fe as AssistantChat,ie as AssistantMessage,pe as DEFAULT_ASSISTANT_CHAT_LABELS,V as PlanApprovalCard,K as PlanChecklist,X as ToolStep,j as buildRequestBody,ee as estimateTokens,re as finishedStats,ae as liveStats,O as messagesFromHistory,T as pinnedPlan,_ as plansOf,Q as tokensPerSecond};
|
package/dist/ai.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-white:#fff}}.rosh-assistant .sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.rosh-assistant .fixed{position:fixed}.rosh-assistant .sticky{position:sticky}.rosh-assistant .inset-x-2{inset-inline:.5rem}.rosh-assistant .top-0{top:0}.rosh-assistant .right-4{right:1rem}.rosh-assistant .bottom-4{bottom:1rem}.rosh-assistant .bottom-20{bottom:5rem}.rosh-assistant .z-30{z-index:30}.rosh-assistant .z-\[var\(--z-window\,1000\)\]{z-index:var(--z-window,1000)}.rosh-assistant .container{width:100%}@media (min-width:40rem){.rosh-assistant .container{max-width:40rem}}@media (min-width:48rem){.rosh-assistant .container{max-width:48rem}}@media (min-width:64rem){.rosh-assistant .container{max-width:64rem}}@media (min-width:80rem){.rosh-assistant .container{max-width:80rem}}@media (min-width:96rem){.rosh-assistant .container{max-width:96rem}}.rosh-assistant .m-auto{margin:auto}.rosh-assistant .my-1{margin-block:.25rem}.rosh-assistant .mt-0\.5{margin-top:.125rem}.rosh-assistant .mt-1{margin-top:.25rem}.rosh-assistant .mt-2{margin-top:.5rem}.rosh-assistant .mt-3{margin-top:.75rem}.rosh-assistant .ml-2{margin-left:.5rem}.rosh-assistant .block{display:block}.rosh-assistant .contents{display:contents}.rosh-assistant .flex{display:flex}.rosh-assistant .grid{display:grid}.rosh-assistant .hidden{display:none}.rosh-assistant .inline{display:inline}.rosh-assistant .inline-flex{display:inline-flex}.rosh-assistant .table{display:table}.rosh-assistant .size-3{width:.75rem;height:.75rem}.rosh-assistant .size-3\.5{width:.875rem;height:.875rem}.rosh-assistant .h-3{height:.75rem}.rosh-assistant .h-3\.5{height:.875rem}.rosh-assistant .h-4{height:1rem}.rosh-assistant .h-5{height:1.25rem}.rosh-assistant .h-6{height:1.5rem}.rosh-assistant .h-8{height:2rem}.rosh-assistant .h-10{height:2.5rem}.rosh-assistant .h-11{height:2.75rem}.rosh-assistant .h-12{height:3rem}.rosh-assistant .h-14{height:3.5rem}.rosh-assistant .h-16{height:4rem}.rosh-assistant .h-20{height:5rem}.rosh-assistant .h-\[min\(34rem\,calc\(100dvh-6rem\)\)\]{height:min(34rem,100dvh - 6rem)}.rosh-assistant .h-full{height:100%}.rosh-assistant .max-h-32{max-height:8rem}.rosh-assistant .min-h-0{min-height:0}.rosh-assistant .w-3{width:.75rem}.rosh-assistant .w-3\.5{width:.875rem}.rosh-assistant .w-4{width:1rem}.rosh-assistant .w-5{width:1.25rem}.rosh-assistant .w-6{width:1.5rem}.rosh-assistant .w-8{width:2rem}.rosh-assistant .w-10{width:2.5rem}.rosh-assistant .w-11{width:2.75rem}.rosh-assistant .w-12{width:3rem}.rosh-assistant .w-14{width:3.5rem}.rosh-assistant .w-16{width:4rem}.rosh-assistant .w-20{width:5rem}.rosh-assistant .w-full{width:100%}.rosh-assistant .max-w-\[85\%\]{max-width:85%}.rosh-assistant .max-w-\[92\%\]{max-width:92%}.rosh-assistant .min-w-0{min-width:0}.rosh-assistant .flex-1{flex:1}.rosh-assistant .shrink-0{flex-shrink:0}.rosh-assistant .grow{flex-grow:1}.rosh-assistant .basis-48{flex-basis:12rem}.rosh-assistant .border-collapse{border-collapse:collapse}.rosh-assistant .rotate-90{rotate:90deg}.rosh-assistant .cursor-pointer{cursor:pointer}.rosh-assistant .resize{resize:both}.rosh-assistant .resize-none{resize:none}.rosh-assistant .list-decimal{list-style-type:decimal}.rosh-assistant .list-disc{list-style-type:disc}.rosh-assistant .grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.rosh-assistant .flex-col{flex-direction:column}.rosh-assistant .flex-wrap{flex-wrap:wrap}.rosh-assistant .items-center{align-items:center}.rosh-assistant .items-end{align-items:flex-end}.rosh-assistant .items-start{align-items:flex-start}.rosh-assistant .justify-center{justify-content:center}.rosh-assistant .justify-end{justify-content:flex-end}.rosh-assistant .justify-start{justify-content:flex-start}.rosh-assistant .gap-1{gap:.25rem}.rosh-assistant .gap-2{gap:.5rem}.rosh-assistant .gap-3{gap:.75rem}:where(.rosh-assistant .space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}.rosh-assistant .gap-x-3{column-gap:.75rem}.rosh-assistant .gap-y-1{row-gap:.25rem}.rosh-assistant .gap-y-2{row-gap:.5rem}.rosh-assistant .self-center{align-self:center}.rosh-assistant .truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rosh-assistant .overflow-auto{overflow:auto}.rosh-assistant .overflow-hidden{overflow:hidden}.rosh-assistant .overflow-x-auto{overflow-x:auto}.rosh-assistant .rounded{border-radius:.25rem}.rosh-assistant .rounded-\(--radius-control\){border-radius:var(--radius-control)}.rosh-assistant .rounded-2xl{border-radius:1rem}.rosh-assistant .rounded-full{border-radius:3.40282e38px}.rosh-assistant .rounded-lg{border-radius:.5rem}.rosh-assistant .rounded-xl{border-radius:.75rem}.rosh-assistant .rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rosh-assistant .border{border-style:var(--tw-border-style);border-width:1px}.rosh-assistant .border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.rosh-assistant .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.rosh-assistant .border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.rosh-assistant .border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.rosh-assistant .border-dashed{--tw-border-style:dashed;border-style:dashed}.rosh-assistant .border-\[color\:var\(--line\)\]{border-color:var(--line)}.rosh-assistant .border-\[color\:var\(--status-neutral-solid\)\]{border-color:var(--status-neutral-solid)}.rosh-assistant .border-amber-200{border-color:oklch(92.4% .12 95.746)}.rosh-assistant .border-amber-300{border-color:oklch(87.9% .169 91.605)}.rosh-assistant .border-amber-700{border-color:oklch(55.5% .163 48.998)}.rosh-assistant .border-blue-200{border-color:oklch(88.2% .059 254.128)}.rosh-assistant .border-blue-300{border-color:oklch(80.9% .105 251.813)}.rosh-assistant .border-blue-700{border-color:oklch(48.8% .243 264.376)}.rosh-assistant .border-gray-100{border-color:oklch(96.7% .003 264.542)}.rosh-assistant .border-gray-200{border-color:oklch(92.8% .006 264.531)}.rosh-assistant .border-gray-300{border-color:oklch(87.2% .01 258.338)}.rosh-assistant .border-green-200{border-color:oklch(92.5% .084 155.995)}.rosh-assistant .border-green-700{border-color:oklch(52.7% .154 150.069)}.rosh-assistant .border-red-200{border-color:oklch(88.5% .062 18.334)}.rosh-assistant .border-red-300{border-color:oklch(80.8% .114 19.571)}.rosh-assistant .border-red-700{border-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]{background-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .bg-\[var\(--status-neutral-soft\)\]{background-color:var(--status-neutral-soft)}.rosh-assistant .bg-\[var\(--status-neutral-solid\)\]{background-color:var(--status-neutral-solid)}.rosh-assistant .bg-amber-50{background-color:oklch(98.7% .022 95.277)}.rosh-assistant .bg-amber-700{background-color:oklch(55.5% .163 48.998)}.rosh-assistant .bg-blue-50{background-color:oklch(97% .014 254.604)}.rosh-assistant .bg-blue-50\/60{background-color:oklab(97% -.00371685 -.0134976/.6)}.rosh-assistant .bg-blue-600{background-color:oklch(54.6% .245 262.881)}.rosh-assistant .bg-blue-700{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .bg-gray-50{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .bg-gray-100{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .bg-gray-200{background-color:oklch(92.8% .006 264.531)}.rosh-assistant .bg-green-50{background-color:oklch(98.2% .018 155.826)}.rosh-assistant .bg-green-700{background-color:oklch(52.7% .154 150.069)}.rosh-assistant .bg-red-50{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .bg-red-600{background-color:oklch(57.7% .245 27.325)}.rosh-assistant .bg-red-700{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-white{background-color:#fff}.rosh-assistant .p-0{padding:0}.rosh-assistant .p-3{padding:.75rem}.rosh-assistant .px-1{padding-inline:.25rem}.rosh-assistant .px-2{padding-inline:.5rem}.rosh-assistant .px-3{padding-inline:.75rem}.rosh-assistant .px-4{padding-inline:1rem}.rosh-assistant .px-5{padding-inline:1.25rem}.rosh-assistant .px-6{padding-inline:1.5rem}.rosh-assistant .px-8{padding-inline:2rem}.rosh-assistant .py-0\.5{padding-block:.125rem}.rosh-assistant .py-2{padding-block:.5rem}.rosh-assistant .py-3{padding-block:.75rem}.rosh-assistant .py-12{padding-block:3rem}.rosh-assistant .pl-1{padding-left:.25rem}.rosh-assistant .pl-3{padding-left:.75rem}.rosh-assistant .pl-5{padding-left:1.25rem}.rosh-assistant .text-center{text-align:center}.rosh-assistant .text-left{text-align:left}.rosh-assistant .align-top{vertical-align:top}.rosh-assistant .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rosh-assistant .text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.rosh-assistant .text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.rosh-assistant .text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.rosh-assistant .text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.rosh-assistant .text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.rosh-assistant .text-\[0\.85em\]{font-size:.85em}.rosh-assistant .leading-relaxed{--tw-leading:1.625;line-height:1.625}.rosh-assistant .font-medium{--tw-font-weight:500;font-weight:500}.rosh-assistant .font-semibold{--tw-font-weight:600;font-weight:600}.rosh-assistant .tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.rosh-assistant .break-words{overflow-wrap:break-word}.rosh-assistant .whitespace-pre-wrap{white-space:pre-wrap}.rosh-assistant .text-\[color\:var\(--status-neutral-soft-ink\)\]{color:var(--status-neutral-soft-ink)}.rosh-assistant .text-\[color\:var\(--status-on-solid\)\]{color:var(--status-on-solid)}.rosh-assistant .text-\[var\(--assistant-launcher-ink\,var\(--color-white\)\)\]{color:var(--assistant-launcher-ink,var(--color-white))}.rosh-assistant .text-amber-600{color:oklch(66.6% .179 58.318)}.rosh-assistant .text-amber-700{color:oklch(55.5% .163 48.998)}.rosh-assistant .text-blue-600{color:oklch(54.6% .245 262.881)}.rosh-assistant .text-blue-700{color:oklch(48.8% .243 264.376)}.rosh-assistant .text-gray-400{color:oklch(70.7% .022 261.325)}.rosh-assistant .text-gray-500{color:oklch(55.1% .027 264.364)}.rosh-assistant .text-gray-600{color:oklch(44.6% .03 256.802)}.rosh-assistant .text-gray-700{color:oklch(37.3% .034 259.733)}.rosh-assistant .text-gray-800{color:oklch(27.8% .033 256.848)}.rosh-assistant .text-gray-900{color:oklch(21% .034 264.665)}.rosh-assistant .text-green-600{color:oklch(62.7% .194 149.214)}.rosh-assistant .text-inherit{color:inherit}.rosh-assistant .text-red-600{color:oklch(57.7% .245 27.325)}.rosh-assistant .text-white{color:#fff}.rosh-assistant .uppercase{text-transform:uppercase}.rosh-assistant .no-underline{text-decoration-line:none}.rosh-assistant .underline{text-decoration-line:underline}.rosh-assistant .underline-offset-4{text-underline-offset:4px}.rosh-assistant .opacity-80{opacity:.8}.rosh-assistant .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.rosh-assistant .select-none{-webkit-user-select:none;user-select:none}.rosh-assistant .marker\:text-gray-400 ::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400 ::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .even\:bg-gray-50\/50:nth-child(2n){background-color:oklab(98.5% -.00075442 -.00185226/.5)}@media (hover:hover){.rosh-assistant .hover\:bg-\[var\(--assistant-launcher-bg-hover\,var\(--color-blue-700\)\)\]:hover{background-color:var(--assistant-launcher-bg-hover,var(--color-blue-700))}.rosh-assistant .hover\:text-gray-600:hover{color:oklch(44.6% .03 256.802)}.rosh-assistant .hover\:text-gray-700:hover{color:oklch(37.3% .034 259.733)}.rosh-assistant .hover\:underline:hover{text-decoration-line:underline}.rosh-assistant .hover\:opacity-100:hover{opacity:1}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-amber-800:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(47.3% .137 46.201)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(93.2% .032 255.585)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:underline:not(:disabled):not([aria-disabled=true]):hover{text-decoration-line:underline}}.rosh-assistant .focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid-strong)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-strong)}.rosh-assistant .focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.rosh-assistant .focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.rosh-assistant .focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rosh-assistant .focus-visible\:outline-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]:focus-visible{outline-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .focus-visible\:outline-blue-600:focus-visible{outline-color:oklch(54.6% .245 262.881)}.rosh-assistant .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.rosh-assistant .disabled\:opacity-60:disabled{opacity:.6}.rosh-assistant .aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.rosh-assistant .aria-disabled\:opacity-60[aria-disabled=true]{opacity:.6}@media (prefers-reduced-motion:no-preference){.rosh-assistant .motion-safe\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}}@media (prefers-reduced-motion:reduce){.rosh-assistant .motion-reduce\:animate-none{animation:none}}@media (min-width:40rem){.rosh-assistant .sm\:inset-x-auto{inset-inline:auto}.rosh-assistant .sm\:right-4{right:1rem}.rosh-assistant .sm\:w-96{width:24rem}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-white:#fff}}.rosh-assistant .sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.rosh-assistant .fixed{position:fixed}.rosh-assistant .sticky{position:sticky}.rosh-assistant .inset-x-2{inset-inline:.5rem}.rosh-assistant .top-0{top:0}.rosh-assistant .right-4{right:1rem}.rosh-assistant .bottom-4{bottom:1rem}.rosh-assistant .bottom-20{bottom:5rem}.rosh-assistant .z-30{z-index:30}.rosh-assistant .z-\[var\(--z-window\,1000\)\]{z-index:var(--z-window,1000)}.rosh-assistant .container{width:100%}@media (min-width:40rem){.rosh-assistant .container{max-width:40rem}}@media (min-width:48rem){.rosh-assistant .container{max-width:48rem}}@media (min-width:64rem){.rosh-assistant .container{max-width:64rem}}@media (min-width:80rem){.rosh-assistant .container{max-width:80rem}}@media (min-width:96rem){.rosh-assistant .container{max-width:96rem}}.rosh-assistant .m-auto{margin:auto}.rosh-assistant .my-1{margin-block:.25rem}.rosh-assistant .mt-0\.5{margin-top:.125rem}.rosh-assistant .mt-1{margin-top:.25rem}.rosh-assistant .mt-2{margin-top:.5rem}.rosh-assistant .mt-3{margin-top:.75rem}.rosh-assistant .ml-2{margin-left:.5rem}.rosh-assistant .block{display:block}.rosh-assistant .contents{display:contents}.rosh-assistant .flex{display:flex}.rosh-assistant .grid{display:grid}.rosh-assistant .hidden{display:none}.rosh-assistant .inline{display:inline}.rosh-assistant .inline-flex{display:inline-flex}.rosh-assistant .table{display:table}.rosh-assistant .size-3{width:.75rem;height:.75rem}.rosh-assistant .size-3\.5{width:.875rem;height:.875rem}.rosh-assistant .h-3{height:.75rem}.rosh-assistant .h-3\.5{height:.875rem}.rosh-assistant .h-4{height:1rem}.rosh-assistant .h-5{height:1.25rem}.rosh-assistant .h-6{height:1.5rem}.rosh-assistant .h-8{height:2rem}.rosh-assistant .h-10{height:2.5rem}.rosh-assistant .h-11{height:2.75rem}.rosh-assistant .h-12{height:3rem}.rosh-assistant .h-14{height:3.5rem}.rosh-assistant .h-16{height:4rem}.rosh-assistant .h-20{height:5rem}.rosh-assistant .h-\[min\(34rem\,calc\(100dvh-6rem\)\)\]{height:min(34rem,100dvh - 6rem)}.rosh-assistant .h-full{height:100%}.rosh-assistant .max-h-32{max-height:8rem}.rosh-assistant .min-h-0{min-height:0}.rosh-assistant .w-3{width:.75rem}.rosh-assistant .w-3\.5{width:.875rem}.rosh-assistant .w-4{width:1rem}.rosh-assistant .w-5{width:1.25rem}.rosh-assistant .w-6{width:1.5rem}.rosh-assistant .w-8{width:2rem}.rosh-assistant .w-10{width:2.5rem}.rosh-assistant .w-11{width:2.75rem}.rosh-assistant .w-12{width:3rem}.rosh-assistant .w-14{width:3.5rem}.rosh-assistant .w-16{width:4rem}.rosh-assistant .w-20{width:5rem}.rosh-assistant .w-full{width:100%}.rosh-assistant .max-w-\[85\%\]{max-width:85%}.rosh-assistant .max-w-\[92\%\]{max-width:92%}.rosh-assistant .min-w-0{min-width:0}.rosh-assistant .flex-1{flex:1}.rosh-assistant .shrink-0{flex-shrink:0}.rosh-assistant .grow{flex-grow:1}.rosh-assistant .basis-48{flex-basis:12rem}.rosh-assistant .border-collapse{border-collapse:collapse}.rosh-assistant .rotate-90{rotate:90deg}.rosh-assistant .cursor-pointer{cursor:pointer}.rosh-assistant .resize{resize:both}.rosh-assistant .resize-none{resize:none}.rosh-assistant .list-decimal{list-style-type:decimal}.rosh-assistant .list-disc{list-style-type:disc}.rosh-assistant .grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.rosh-assistant .flex-col{flex-direction:column}.rosh-assistant .flex-wrap{flex-wrap:wrap}.rosh-assistant .items-center{align-items:center}.rosh-assistant .items-end{align-items:flex-end}.rosh-assistant .items-start{align-items:flex-start}.rosh-assistant .justify-center{justify-content:center}.rosh-assistant .justify-end{justify-content:flex-end}.rosh-assistant .justify-start{justify-content:flex-start}.rosh-assistant .gap-1{gap:.25rem}.rosh-assistant .gap-2{gap:.5rem}.rosh-assistant .gap-3{gap:.75rem}:where(.rosh-assistant .space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.rosh-assistant .space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}.rosh-assistant .gap-x-3{column-gap:.75rem}.rosh-assistant .gap-y-1{row-gap:.25rem}.rosh-assistant .gap-y-2{row-gap:.5rem}.rosh-assistant .self-center{align-self:center}.rosh-assistant .truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rosh-assistant .overflow-auto{overflow:auto}.rosh-assistant .overflow-hidden{overflow:hidden}.rosh-assistant .overflow-x-auto{overflow-x:auto}.rosh-assistant .rounded{border-radius:.25rem}.rosh-assistant .rounded-\(--radius-control\){border-radius:var(--radius-control)}.rosh-assistant .rounded-2xl{border-radius:1rem}.rosh-assistant .rounded-full{border-radius:3.40282e38px}.rosh-assistant .rounded-lg{border-radius:.5rem}.rosh-assistant .rounded-xl{border-radius:.75rem}.rosh-assistant .rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rosh-assistant .border{border-style:var(--tw-border-style);border-width:1px}.rosh-assistant .border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.rosh-assistant .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.rosh-assistant .border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.rosh-assistant .border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.rosh-assistant .border-dashed{--tw-border-style:dashed;border-style:dashed}.rosh-assistant .border-\[color\:var\(--line\)\]{border-color:var(--line)}.rosh-assistant .border-\[color\:var\(--status-neutral-solid\)\]{border-color:var(--status-neutral-solid)}.rosh-assistant .border-amber-200{border-color:oklch(92.4% .12 95.746)}.rosh-assistant .border-amber-300{border-color:oklch(87.9% .169 91.605)}.rosh-assistant .border-amber-700{border-color:oklch(55.5% .163 48.998)}.rosh-assistant .border-blue-200{border-color:oklch(88.2% .059 254.128)}.rosh-assistant .border-blue-300{border-color:oklch(80.9% .105 251.813)}.rosh-assistant .border-blue-700{border-color:oklch(48.8% .243 264.376)}.rosh-assistant .border-gray-100{border-color:oklch(96.7% .003 264.542)}.rosh-assistant .border-gray-200{border-color:oklch(92.8% .006 264.531)}.rosh-assistant .border-gray-300{border-color:oklch(87.2% .01 258.338)}.rosh-assistant .border-green-200{border-color:oklch(92.5% .084 155.995)}.rosh-assistant .border-green-700{border-color:oklch(52.7% .154 150.069)}.rosh-assistant .border-red-200{border-color:oklch(88.5% .062 18.334)}.rosh-assistant .border-red-300{border-color:oklch(80.8% .114 19.571)}.rosh-assistant .border-red-700{border-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]{background-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .bg-\[var\(--status-neutral-soft\)\]{background-color:var(--status-neutral-soft)}.rosh-assistant .bg-\[var\(--status-neutral-solid\)\]{background-color:var(--status-neutral-solid)}.rosh-assistant .bg-amber-50{background-color:oklch(98.7% .022 95.277)}.rosh-assistant .bg-amber-700{background-color:oklch(55.5% .163 48.998)}.rosh-assistant .bg-blue-50{background-color:oklch(97% .014 254.604)}.rosh-assistant .bg-blue-50\/60{background-color:oklab(97% -.00371685 -.0134976/.6)}.rosh-assistant .bg-blue-600{background-color:oklch(54.6% .245 262.881)}.rosh-assistant .bg-blue-700{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .bg-gray-50{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .bg-gray-100{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .bg-gray-200{background-color:oklch(92.8% .006 264.531)}.rosh-assistant .bg-green-50{background-color:oklch(98.2% .018 155.826)}.rosh-assistant .bg-green-700{background-color:oklch(52.7% .154 150.069)}.rosh-assistant .bg-red-50{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .bg-red-600{background-color:oklch(57.7% .245 27.325)}.rosh-assistant .bg-red-700{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .bg-white{background-color:#fff}.rosh-assistant .p-0{padding:0}.rosh-assistant .p-3{padding:.75rem}.rosh-assistant .px-1{padding-inline:.25rem}.rosh-assistant .px-2{padding-inline:.5rem}.rosh-assistant .px-3{padding-inline:.75rem}.rosh-assistant .px-4{padding-inline:1rem}.rosh-assistant .px-5{padding-inline:1.25rem}.rosh-assistant .px-6{padding-inline:1.5rem}.rosh-assistant .px-8{padding-inline:2rem}.rosh-assistant .py-0\.5{padding-block:.125rem}.rosh-assistant .py-2{padding-block:.5rem}.rosh-assistant .py-3{padding-block:.75rem}.rosh-assistant .py-12{padding-block:3rem}.rosh-assistant .pl-1{padding-left:.25rem}.rosh-assistant .pl-3{padding-left:.75rem}.rosh-assistant .pl-5{padding-left:1.25rem}.rosh-assistant .text-center{text-align:center}.rosh-assistant .text-left{text-align:left}.rosh-assistant .align-top{vertical-align:top}.rosh-assistant .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rosh-assistant .text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.rosh-assistant .text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.rosh-assistant .text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.rosh-assistant .text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.rosh-assistant .text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.rosh-assistant .text-\[0\.85em\]{font-size:.85em}.rosh-assistant .leading-relaxed{--tw-leading:1.625;line-height:1.625}.rosh-assistant .font-medium{--tw-font-weight:500;font-weight:500}.rosh-assistant .font-semibold{--tw-font-weight:600;font-weight:600}.rosh-assistant .tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.rosh-assistant .break-words{overflow-wrap:break-word}.rosh-assistant .whitespace-pre-wrap{white-space:pre-wrap}.rosh-assistant .text-\[color\:var\(--status-neutral-soft-ink\)\]{color:var(--status-neutral-soft-ink)}.rosh-assistant .text-\[color\:var\(--status-on-solid\)\]{color:var(--status-on-solid)}.rosh-assistant .text-\[var\(--assistant-launcher-ink\,var\(--color-white\)\)\]{color:var(--assistant-launcher-ink,var(--color-white))}.rosh-assistant .text-amber-600{color:oklch(66.6% .179 58.318)}.rosh-assistant .text-amber-700{color:oklch(55.5% .163 48.998)}.rosh-assistant .text-blue-600{color:oklch(54.6% .245 262.881)}.rosh-assistant .text-blue-700{color:oklch(48.8% .243 264.376)}.rosh-assistant .text-gray-400{color:oklch(70.7% .022 261.325)}.rosh-assistant .text-gray-500{color:oklch(55.1% .027 264.364)}.rosh-assistant .text-gray-600{color:oklch(44.6% .03 256.802)}.rosh-assistant .text-gray-700{color:oklch(37.3% .034 259.733)}.rosh-assistant .text-gray-800{color:oklch(27.8% .033 256.848)}.rosh-assistant .text-gray-900{color:oklch(21% .034 264.665)}.rosh-assistant .text-green-600{color:oklch(62.7% .194 149.214)}.rosh-assistant .text-inherit{color:inherit}.rosh-assistant .text-red-600{color:oklch(57.7% .245 27.325)}.rosh-assistant .text-white{color:#fff}.rosh-assistant .uppercase{text-transform:uppercase}.rosh-assistant .tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.rosh-assistant .no-underline{text-decoration-line:none}.rosh-assistant .underline{text-decoration-line:underline}.rosh-assistant .underline-offset-4{text-underline-offset:4px}.rosh-assistant .opacity-80{opacity:.8}.rosh-assistant .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.rosh-assistant .select-none{-webkit-user-select:none;user-select:none}.rosh-assistant .marker\:text-gray-400 ::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400 ::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .marker\:text-gray-400::-webkit-details-marker{color:oklch(70.7% .022 261.325)}.rosh-assistant .even\:bg-gray-50\/50:nth-child(2n){background-color:oklab(98.5% -.00075442 -.00185226/.5)}@media (hover:hover){.rosh-assistant .hover\:bg-\[var\(--assistant-launcher-bg-hover\,var\(--color-blue-700\)\)\]:hover{background-color:var(--assistant-launcher-bg-hover,var(--color-blue-700))}.rosh-assistant .hover\:text-gray-600:hover{color:oklch(44.6% .03 256.802)}.rosh-assistant .hover\:text-gray-700:hover{color:oklch(37.3% .034 259.733)}.rosh-assistant .hover\:underline:hover{text-decoration-line:underline}.rosh-assistant .hover\:opacity-100:hover{opacity:1}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-amber-800:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(47.3% .137 46.201)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(93.2% .032 255.585)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-blue-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(48.8% .243 264.376)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(98.5% .002 247.839)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-gray-100:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(96.7% .003 264.542)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-50:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(97.1% .013 17.38)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:bg-red-700:not(:disabled):not([aria-disabled=true]):hover{background-color:oklch(50.5% .213 27.518)}.rosh-assistant .not-disabled\:not-aria-disabled\:hover\:underline:not(:disabled):not([aria-disabled=true]):hover{text-decoration-line:underline}}.rosh-assistant .focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-invalid-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-invalid-strong)}.rosh-assistant .focus-visible\:ring-\[color\:var\(--rosh-focus-ring-strong\)\]:focus-visible{--tw-ring-color:var(--rosh-focus-ring-strong)}.rosh-assistant .focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.rosh-assistant .focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.rosh-assistant .focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rosh-assistant .focus-visible\:outline-\[var\(--assistant-launcher-bg\,var\(--color-blue-600\)\)\]:focus-visible{outline-color:var(--assistant-launcher-bg,var(--color-blue-600))}.rosh-assistant .focus-visible\:outline-blue-600:focus-visible{outline-color:oklch(54.6% .245 262.881)}.rosh-assistant .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.rosh-assistant .disabled\:opacity-60:disabled{opacity:.6}.rosh-assistant .aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.rosh-assistant .aria-disabled\:opacity-60[aria-disabled=true]{opacity:.6}@media (prefers-reduced-motion:no-preference){.rosh-assistant .motion-safe\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}}@media (prefers-reduced-motion:reduce){.rosh-assistant .motion-reduce\:animate-none{animation:none}}@media (min-width:40rem){.rosh-assistant .sm\:inset-x-auto{inset-inline:auto}.rosh-assistant .sm\:right-4{right:1rem}.rosh-assistant .sm\:w-96{width:24rem}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|
package/dist/apps/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-PDPBIDHF.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-
|
|
2
|
+
export{openFilesInTrashMode,setFilesDemoTree}from"../chunk-PDPBIDHF.js";export{setBrowserStartUrl}from"../chunk-LWLCNQY7.js";export{BUILTIN_APP_INFO}from"../chunk-5RQT6BCD.js";import"../chunk-O3WSAR62.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-3WUR24KP.js";import"../chunk-TPDOOCFS.js";import"../chunk-AW7TOB6N.js";import"../chunk-KNUR2UEG.js";import"../chunk-JDCM2VHG.js";import"../chunk-LR2X6MKB.js";import"../chunk-5A7MWTXX.js";import"../chunk-Y53KNQKL.js";import"../chunk-JF45HC5H.js";import"../chunk-5GHLKEJQ.js";import"../chunk-LT2MMSHH.js";import"../chunk-ARC3R4I2.js";import"../chunk-VWGWZY7A.js";import"../chunk-PKXQDCNR.js";import"../chunk-KC3EX26K.js";import{toast_default as o}from"../chunk-2LKH6JM5.js";import"../chunk-7IF3RZF3.js";import"../chunk-GZCAFWWB.js";import"../chunk-UGTRSRIW.js";import"../chunk-QR4RM7PO.js";import"../chunk-BOGBLZKS.js";import"../chunk-CDAJKLGL.js";import"../chunk-QMQVOUIV.js";import"../chunk-ON7Q5CKD.js";import"../chunk-FSP63GKK.js";import"../chunk-K7U4RWXJ.js";import"../chunk-ABJ4LWOW.js";import"../chunk-VJPJNCB4.js";import"../chunk-J75ZT2JQ.js";import"../chunk-Q5MD3VY6.js";import"../chunk-MRJKZWWV.js";import"../chunk-Z3WKHMVB.js";import"../chunk-PGN5ME7B.js";import"../chunk-62LW225J.js";import"../chunk-T53TXXOC.js";import"../chunk-D65T4H6J.js";import"../chunk-DTJRIWFR.js";import"../chunk-TWVUQUUD.js";import{currentShellStrings as r}from"../chunk-OVNRVFWS.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-NPBOUICN.js")),d=n(()=>import("../Spreadsheet-MJQZPWT5.js")),f=n(()=>import("../Weather-M7NGMQFP.js")),w=n(()=>import("../CurrencyConverter-NTJJAE7V.js")),g=n(()=>import("../PomodoroTimer-LBB7U6QS.js")),S=n(()=>import("../Notepad-2IT72CDY.js")),v=n(()=>import("../WorldClock-YQQJXAUG.js")),b=n(()=>import("../Stock-NBXKAAIF.js")),T=n(()=>import("../Preview-YCOTMJKM.js")),B=n(()=>import("../PdfViewer-Q7IS273H.js")),C=n(()=>import("../Documents-BP24OP7L.js")),M=n(()=>import("../Files-4ZN6G2UJ.js")),P=n(()=>import("../Browser-MAMFQSXN.js")),W={"/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:S,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:g,label:"Pomodoro Timer",size:"sm",utility:!0,widget:!0,dimensions:[320,600]},"/world-clock":{component:v,label:"World Clock",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,480]},"/stock":{component:b,label:"Stocks",size:"sm",utility:!0,widget:!0,autoHeight:!0,dimensions:[320,360]}},N={"/preview":{component:T,label:"Preview",size:"2xl",appStyle:!0,multiInstance:!0},"/documents":{component:C,label:"Documents",size:"xl",appStyle:!0,multiInstance:!0},"/files":{component:M,label:"Files",size:"xl",appStyle:!0}},R={"/browser":{component:P,label:"Browser",size:"2xl",appStyle:!0,multiInstance:!0}},L={...W,...N,...R};export{P as Browser,k as Calculator,w as CurrencyConverter,C as Documents,M as Files,S as Notepad,B as PdfViewer,g as PomodoroTimer,T as Preview,d as Spreadsheet,b as Stock,f as Weather,v as WorldClock,l as attachmentKind,L as bundledApps,N as documentApps,j as openAttachment,W as utilityApps,R 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:"8.
|
|
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:"8.16.0"});
|