@urun-sh/react 0.1.35 → 0.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +115 -1
- package/dist/index.d.ts +115 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -82,6 +82,120 @@ type ReactApp = Record<string, (args?: Record<string, unknown>) => ReactSession>
|
|
|
82
82
|
|
|
83
83
|
declare function useApp(): ReactApp;
|
|
84
84
|
|
|
85
|
+
interface SessionRequestOptions {
|
|
86
|
+
|
|
87
|
+
signal?: AbortSignal;
|
|
88
|
+
|
|
89
|
+
channel?: string;
|
|
90
|
+
|
|
91
|
+
metadata?: Record<string, unknown>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
interface RequestStream<TChunk = unknown> extends AsyncIterable<TChunk> {
|
|
95
|
+
|
|
96
|
+
readonly id: string;
|
|
97
|
+
|
|
98
|
+
cancel(): void;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
interface RequestCapableSession {
|
|
102
|
+
|
|
103
|
+
request<TRes = unknown, TReq = unknown>(payload: TReq, options?: SessionRequestOptions): Promise<TRes>;
|
|
104
|
+
|
|
105
|
+
requestStream<TChunk = unknown, TReq = unknown>(payload: TReq, options?: SessionRequestOptions): RequestStream<TChunk>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
interface UseRequestOptions extends Omit<SessionRequestOptions, 'signal'> {
|
|
109
|
+
|
|
110
|
+
onSuccess?: (data: unknown) => void;
|
|
111
|
+
|
|
112
|
+
onError?: (error: Error) => void;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
interface UseRequestResult<TRes, TReq> {
|
|
116
|
+
|
|
117
|
+
mutate: (payload: TReq) => void;
|
|
118
|
+
|
|
119
|
+
mutateAsync: (payload: TReq) => Promise<TRes>;
|
|
120
|
+
|
|
121
|
+
data: TRes | undefined;
|
|
122
|
+
|
|
123
|
+
error: Error | null;
|
|
124
|
+
|
|
125
|
+
isPending: boolean;
|
|
126
|
+
|
|
127
|
+
reset: () => void;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare function useRequest<TRes = unknown, TReq = unknown>(session: RequestCapableSession, options?: UseRequestOptions): UseRequestResult<TRes, TReq>;
|
|
131
|
+
|
|
132
|
+
interface UseCompletionOptions<TChunk = string> extends Omit<SessionRequestOptions, 'signal'> {
|
|
133
|
+
|
|
134
|
+
parseChunk?: (chunk: TChunk) => string;
|
|
135
|
+
|
|
136
|
+
buildPayload?: (prompt: string) => unknown;
|
|
137
|
+
|
|
138
|
+
onFinish?: (completion: string) => void;
|
|
139
|
+
|
|
140
|
+
onError?: (error: Error) => void;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
interface UseCompletionResult {
|
|
144
|
+
|
|
145
|
+
completion: string;
|
|
146
|
+
|
|
147
|
+
complete: (prompt: string) => Promise<void>;
|
|
148
|
+
|
|
149
|
+
stop: () => void;
|
|
150
|
+
|
|
151
|
+
isStreaming: boolean;
|
|
152
|
+
|
|
153
|
+
error: Error | null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
declare function useCompletion<TChunk = string>(session: RequestCapableSession, options?: UseCompletionOptions<TChunk>): UseCompletionResult;
|
|
157
|
+
|
|
158
|
+
type ChatRole = 'system' | 'user' | 'assistant';
|
|
159
|
+
|
|
160
|
+
interface ChatMessage {
|
|
161
|
+
|
|
162
|
+
id: string;
|
|
163
|
+
role: ChatRole;
|
|
164
|
+
content: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface UseChatOptions<TChunk = string> extends Omit<SessionRequestOptions, 'signal'> {
|
|
168
|
+
|
|
169
|
+
initialMessages?: Array<Omit<ChatMessage, 'id'> & {
|
|
170
|
+
id?: string;
|
|
171
|
+
}>;
|
|
172
|
+
|
|
173
|
+
parseChunk?: (chunk: TChunk) => string;
|
|
174
|
+
|
|
175
|
+
buildPayload?: (messages: Array<{
|
|
176
|
+
role: ChatRole;
|
|
177
|
+
content: string;
|
|
178
|
+
}>) => unknown;
|
|
179
|
+
|
|
180
|
+
onFinish?: (message: ChatMessage) => void;
|
|
181
|
+
|
|
182
|
+
onError?: (error: Error) => void;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
interface UseChatResult {
|
|
186
|
+
messages: ChatMessage[];
|
|
187
|
+
input: string;
|
|
188
|
+
setInput: (value: string) => void;
|
|
189
|
+
|
|
190
|
+
sendMessage: (message?: string) => Promise<void>;
|
|
191
|
+
|
|
192
|
+
stop: () => void;
|
|
193
|
+
isStreaming: boolean;
|
|
194
|
+
error: Error | null;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
declare function useChat<TChunk = string>(session: RequestCapableSession, options?: UseChatOptions<TChunk>): UseChatResult;
|
|
198
|
+
|
|
85
199
|
interface RegisteredComponent {
|
|
86
200
|
component: ComponentType<any>;
|
|
87
201
|
schema: ZodSchema;
|
|
@@ -218,4 +332,4 @@ declare function useMetricsPanel(props: MetricsPanelProps): {
|
|
|
218
332
|
};
|
|
219
333
|
declare function MetricsPanel(props: MetricsPanelProps): react_jsx_runtime.JSX.Element;
|
|
220
334
|
|
|
221
|
-
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAccessToken, type UrunAccessTokenProvider, type UrunAuthContextValue, type UrunAuthMode, UrunAuthProvider, type UrunAuthProviderProps, UrunErrorBoundary, UrunJwtProvider, UrunProvider, authMode, registerComponent, urunPublicEnv, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream, useUrunAuth, usesWorkOSAuth };
|
|
335
|
+
export { type ChatMessage, type ChatRole, ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, type RequestCapableSession, type RequestStream, type SessionRequestOptions, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAccessToken, type UrunAccessTokenProvider, type UrunAuthContextValue, type UrunAuthMode, UrunAuthProvider, type UrunAuthProviderProps, UrunErrorBoundary, UrunJwtProvider, UrunProvider, type UseChatOptions, type UseChatResult, type UseCompletionOptions, type UseCompletionResult, type UseRequestOptions, type UseRequestResult, authMode, registerComponent, urunPublicEnv, useApp, useChat, useCompletion, useImageFrame, useMetricsPanel, useProgressCard, useRequest, useStatusBadge, useTextStream, useUrunAuth, usesWorkOSAuth };
|
package/dist/index.d.ts
CHANGED
|
@@ -82,6 +82,120 @@ type ReactApp = Record<string, (args?: Record<string, unknown>) => ReactSession>
|
|
|
82
82
|
|
|
83
83
|
declare function useApp(): ReactApp;
|
|
84
84
|
|
|
85
|
+
interface SessionRequestOptions {
|
|
86
|
+
|
|
87
|
+
signal?: AbortSignal;
|
|
88
|
+
|
|
89
|
+
channel?: string;
|
|
90
|
+
|
|
91
|
+
metadata?: Record<string, unknown>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
interface RequestStream<TChunk = unknown> extends AsyncIterable<TChunk> {
|
|
95
|
+
|
|
96
|
+
readonly id: string;
|
|
97
|
+
|
|
98
|
+
cancel(): void;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
interface RequestCapableSession {
|
|
102
|
+
|
|
103
|
+
request<TRes = unknown, TReq = unknown>(payload: TReq, options?: SessionRequestOptions): Promise<TRes>;
|
|
104
|
+
|
|
105
|
+
requestStream<TChunk = unknown, TReq = unknown>(payload: TReq, options?: SessionRequestOptions): RequestStream<TChunk>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
interface UseRequestOptions extends Omit<SessionRequestOptions, 'signal'> {
|
|
109
|
+
|
|
110
|
+
onSuccess?: (data: unknown) => void;
|
|
111
|
+
|
|
112
|
+
onError?: (error: Error) => void;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
interface UseRequestResult<TRes, TReq> {
|
|
116
|
+
|
|
117
|
+
mutate: (payload: TReq) => void;
|
|
118
|
+
|
|
119
|
+
mutateAsync: (payload: TReq) => Promise<TRes>;
|
|
120
|
+
|
|
121
|
+
data: TRes | undefined;
|
|
122
|
+
|
|
123
|
+
error: Error | null;
|
|
124
|
+
|
|
125
|
+
isPending: boolean;
|
|
126
|
+
|
|
127
|
+
reset: () => void;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare function useRequest<TRes = unknown, TReq = unknown>(session: RequestCapableSession, options?: UseRequestOptions): UseRequestResult<TRes, TReq>;
|
|
131
|
+
|
|
132
|
+
interface UseCompletionOptions<TChunk = string> extends Omit<SessionRequestOptions, 'signal'> {
|
|
133
|
+
|
|
134
|
+
parseChunk?: (chunk: TChunk) => string;
|
|
135
|
+
|
|
136
|
+
buildPayload?: (prompt: string) => unknown;
|
|
137
|
+
|
|
138
|
+
onFinish?: (completion: string) => void;
|
|
139
|
+
|
|
140
|
+
onError?: (error: Error) => void;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
interface UseCompletionResult {
|
|
144
|
+
|
|
145
|
+
completion: string;
|
|
146
|
+
|
|
147
|
+
complete: (prompt: string) => Promise<void>;
|
|
148
|
+
|
|
149
|
+
stop: () => void;
|
|
150
|
+
|
|
151
|
+
isStreaming: boolean;
|
|
152
|
+
|
|
153
|
+
error: Error | null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
declare function useCompletion<TChunk = string>(session: RequestCapableSession, options?: UseCompletionOptions<TChunk>): UseCompletionResult;
|
|
157
|
+
|
|
158
|
+
type ChatRole = 'system' | 'user' | 'assistant';
|
|
159
|
+
|
|
160
|
+
interface ChatMessage {
|
|
161
|
+
|
|
162
|
+
id: string;
|
|
163
|
+
role: ChatRole;
|
|
164
|
+
content: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface UseChatOptions<TChunk = string> extends Omit<SessionRequestOptions, 'signal'> {
|
|
168
|
+
|
|
169
|
+
initialMessages?: Array<Omit<ChatMessage, 'id'> & {
|
|
170
|
+
id?: string;
|
|
171
|
+
}>;
|
|
172
|
+
|
|
173
|
+
parseChunk?: (chunk: TChunk) => string;
|
|
174
|
+
|
|
175
|
+
buildPayload?: (messages: Array<{
|
|
176
|
+
role: ChatRole;
|
|
177
|
+
content: string;
|
|
178
|
+
}>) => unknown;
|
|
179
|
+
|
|
180
|
+
onFinish?: (message: ChatMessage) => void;
|
|
181
|
+
|
|
182
|
+
onError?: (error: Error) => void;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
interface UseChatResult {
|
|
186
|
+
messages: ChatMessage[];
|
|
187
|
+
input: string;
|
|
188
|
+
setInput: (value: string) => void;
|
|
189
|
+
|
|
190
|
+
sendMessage: (message?: string) => Promise<void>;
|
|
191
|
+
|
|
192
|
+
stop: () => void;
|
|
193
|
+
isStreaming: boolean;
|
|
194
|
+
error: Error | null;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
declare function useChat<TChunk = string>(session: RequestCapableSession, options?: UseChatOptions<TChunk>): UseChatResult;
|
|
198
|
+
|
|
85
199
|
interface RegisteredComponent {
|
|
86
200
|
component: ComponentType<any>;
|
|
87
201
|
schema: ZodSchema;
|
|
@@ -218,4 +332,4 @@ declare function useMetricsPanel(props: MetricsPanelProps): {
|
|
|
218
332
|
};
|
|
219
333
|
declare function MetricsPanel(props: MetricsPanelProps): react_jsx_runtime.JSX.Element;
|
|
220
334
|
|
|
221
|
-
export { ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAccessToken, type UrunAccessTokenProvider, type UrunAuthContextValue, type UrunAuthMode, UrunAuthProvider, type UrunAuthProviderProps, UrunErrorBoundary, UrunJwtProvider, UrunProvider, authMode, registerComponent, urunPublicEnv, useApp, useImageFrame, useMetricsPanel, useProgressCard, useStatusBadge, useTextStream, useUrunAuth, usesWorkOSAuth };
|
|
335
|
+
export { type ChatMessage, type ChatRole, ComponentRenderer, ImageFrame, ImageFrameSchema, MetricsPanel, MetricsPanelSchema, ProgressCard, ProgressCardSchema, type ReactApp, type ReactSession, type ReactSessionDocument, type ReactSessionStream, type RegisteredComponent, type RequestCapableSession, type RequestStream, type SessionRequestOptions, StatusBadge, StatusBadgeSchema, TextStream, TextStreamSchema, type UrunAccessToken, type UrunAccessTokenProvider, type UrunAuthContextValue, type UrunAuthMode, UrunAuthProvider, type UrunAuthProviderProps, UrunErrorBoundary, UrunJwtProvider, UrunProvider, type UseChatOptions, type UseChatResult, type UseCompletionOptions, type UseCompletionResult, type UseRequestOptions, type UseRequestResult, authMode, registerComponent, urunPublicEnv, useApp, useChat, useCompletion, useImageFrame, useMetricsPanel, useProgressCard, useRequest, useStatusBadge, useTextStream, useUrunAuth, usesWorkOSAuth };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var L=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Re=Object.prototype.hasOwnProperty;var be=(r,e)=>{for(var t in e)L(r,t,{get:e[t],enumerable:!0})},ke=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ue(e))!Re.call(r,o)&&o!==t&&L(r,o,{get:()=>e[o],enumerable:!(n=Ce(e,o))||n.enumerable});return r};var Ee=r=>ke(L({},"__esModule",{value:!0}),r);var Ne={};be(Ne,{ComponentRenderer:()=>ae,ImageFrame:()=>ge,ImageFrameSchema:()=>le,MetricsPanel:()=>ve,MetricsPanelSchema:()=>he,ProgressCard:()=>ue,ProgressCardSchema:()=>ce,StatusBadge:()=>de,StatusBadgeSchema:()=>pe,TextStream:()=>fe,TextStreamSchema:()=>me,UrunAuthProvider:()=>O,UrunErrorBoundary:()=>l,UrunJwtProvider:()=>Y,UrunProvider:()=>re,authMode:()=>_,registerComponent:()=>se,urunPublicEnv:()=>i,useApp:()=>ne,useImageFrame:()=>$,useMetricsPanel:()=>H,useProgressCard:()=>F,useStatusBadge:()=>j,useTextStream:()=>z,useUrunAuth:()=>A,usesWorkOSAuth:()=>G});module.exports=Ee(Ne);var h=require("react");var Z=require("react"),y=require("react/jsx-runtime"),l=class extends Z.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,y.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,y.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,y.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var q=require("react"),E=(0,q.createContext)(null);function p(r){return r&&r.trim()?r.trim():void 0}function i(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return p(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return p(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return p(typeof process<"u"?process.env?.[r]:void 0)}}function _(){let r=i("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||i("VERCEL_ENV")==="production"?"workos":i("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function G(){return _()==="workos"}var g=require("react"),ee=require("react/jsx-runtime"),Q=(0,g.createContext)(null);function O({getAccessToken:r,children:e}){let t=(0,g.useMemo)(()=>({getAccessToken:r}),[r]);return(0,ee.jsx)(Q.Provider,{value:t,children:e})}var Y=O;function A(){return(0,g.useContext)(Q)}var w=require("react/jsx-runtime");function re({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:s,children:f}){let[k,S]=(0,h.useState)(),u=A(),Pe=i("NEXT_PUBLIC_SESSION_TOKEN")??i("NEXT_PUBLIC_URUN_JWT"),J=_(),x=J==="workos"&&!n,M=n??(J==="jwt"?Pe:void 0)??k,W=o??i("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),Se=x&&!M,xe=(0,h.useMemo)(()=>({appId:t,baseUrl:r,orgId:e,jwt:M,getAccessToken:x?u?.getAccessToken:void 0,authProvider:W}),[t,u,r,W,M,e,x]);return(0,h.useEffect)(()=>{if(!x||!u)return;let B=!1,ye=u;async function K(){try{let Te=await ye.getAccessToken();B||S(Te??void 0)}catch{B||S(void 0)}}K();let _e=window.setInterval(()=>{K()},6e4);return()=>{B=!0,window.clearInterval(_e)}},[u,x]),(0,w.jsx)(l,{fallback:s,children:Se?(0,w.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,w.jsx)(E.Provider,{value:xe,children:f})})}var a=require("react"),te=require("@urun-sh/core");function Ae(r,e){return`${r}:${JSON.stringify(e??{})}`}var D=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}dispose(){this._unsubscribeChange()}},V=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}dispose(){this._unsubscribeTrack()}},X=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}doc(e){let t=this._docs.get(e);return t||(t=new D(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new V(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function ne(){let r=(0,a.useContext)(E);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,a.useReducer)(o=>o+1,0),t=(0,a.useRef)(new Map),n=(0,a.useMemo)(()=>(0,te.App)(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return(0,a.useMemo)(()=>new Proxy({},{get(o,s){if(typeof s=="string")return f=>{let k=Ae(s,f),S=t.current.get(k);if(S)return S;let u=new X(n[s](f),e);return t.current.set(k,u),u}}}),[n])}var oe=new Map;function se(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);oe.set(r,{component:e,schema:t})}function ie(r,e){let t=oe.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}var d=require("react/jsx-runtime");function ae({name:r,props:e,fallback:t}){let n=ie(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?(0,d.jsx)(d.Fragment,{children:t}):(0,d.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,d.jsx)("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return(0,d.jsx)(o,{...n.validatedProps})}var v=require("zod"),m=require("react/jsx-runtime"),ce=v.z.object({step:v.z.number().min(0),total:v.z.number().min(1),label:v.z.string().optional(),variant:v.z.enum(["default","success","error"]).default("default")});function F(r){let{step:e,total:t,label:n,variant:o="default"}=r,s=Math.min(e/t*100,100),f=e>=t;return{step:e,total:t,label:n,variant:o,percentage:s,isComplete:f}}function ue(r){let{step:e,total:t,label:n,variant:o,percentage:s}=F(r);return(0,m.jsxs)("div",{className:"urun-progress-card","data-variant":o,children:[n&&(0,m.jsx)("div",{className:"urun-progress-label",children:n}),(0,m.jsx)("div",{className:"urun-progress-bar",children:(0,m.jsx)("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),(0,m.jsxs)("div",{className:"urun-progress-text",children:[e,"/",t]})]})}var N=require("zod"),T=require("react/jsx-runtime"),pe=N.z.object({state:N.z.enum(["thinking","generating","idle","error"]),message:N.z.string().optional()}),we={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function j(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??we[e]??e;return{state:e,message:o,isActive:n}}function de(r){let{state:e,message:t,isActive:n}=j(r);return(0,T.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,T.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,T.jsx)("span",{className:"urun-status-message",children:t})]})}var C=require("react"),I=require("zod"),U=require("react/jsx-runtime"),me=I.z.object({text:I.z.string(),streaming:I.z.boolean().default(!1)});function z(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function fe(r){let{text:e,streaming:t}=z(r),n=(0,C.useRef)(null),o=(0,C.useRef)(0);return(0,C.useEffect)(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),(0,U.jsxs)("div",{className:"urun-text-stream",children:[(0,U.jsx)("span",{ref:n,className:"urun-text-content"}),t&&(0,U.jsx)("span",{className:"urun-text-cursor"})]})}var R=require("zod"),b=require("react/jsx-runtime"),le=R.z.object({src:R.z.string().url(),alt:R.z.string().optional(),caption:R.z.string().optional()});function $(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function ge(r){let{src:e,alt:t,caption:n}=$(r);return(0,b.jsxs)("figure",{className:"urun-image-frame",children:[(0,b.jsx)("img",{className:"urun-image",src:e,alt:t}),n&&(0,b.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var c=require("zod"),P=require("react/jsx-runtime"),he=c.z.object({metrics:c.z.array(c.z.object({label:c.z.string(),value:c.z.union([c.z.string(),c.z.number()]),unit:c.z.string().optional()}))});function H(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function ve(r){let{metrics:e}=H(r);return(0,P.jsx)("div",{className:"urun-metrics-panel",children:e.map((t,n)=>(0,P.jsxs)("div",{className:"urun-metric-card",children:[(0,P.jsx)("div",{className:"urun-metric-label",children:t.label}),(0,P.jsx)("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunAuthProvider,UrunErrorBoundary,UrunJwtProvider,UrunProvider,authMode,registerComponent,urunPublicEnv,useApp,useImageFrame,useMetricsPanel,useProgressCard,useStatusBadge,useTextStream,useUrunAuth,usesWorkOSAuth});
|
|
1
|
+
"use strict";var ae=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var et=Object.prototype.hasOwnProperty;var tt=(t,e)=>{for(var r in e)ae(t,r,{get:e[r],enumerable:!0})},rt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ye(e))!et.call(t,s)&&s!==r&&ae(t,s,{get:()=>e[s],enumerable:!(n=Qe(e,s))||n.enumerable});return t};var nt=t=>rt(ae({},"__esModule",{value:!0}),t);var ct={};tt(ct,{ComponentRenderer:()=>Be,ImageFrame:()=>ze,ImageFrameSchema:()=>je,MetricsPanel:()=>Je,MetricsPanelSchema:()=>He,ProgressCard:()=>De,ProgressCardSchema:()=>Le,StatusBadge:()=>Ve,StatusBadgeSchema:()=>Fe,TextStream:()=>$e,TextStreamSchema:()=>Xe,UrunAuthProvider:()=>ue,UrunErrorBoundary:()=>B,UrunJwtProvider:()=>Te,UrunProvider:()=>ke,authMode:()=>H,registerComponent:()=>Me,urunPublicEnv:()=>E,useApp:()=>Ee,useChat:()=>Ie,useCompletion:()=>we,useImageFrame:()=>he,useMetricsPanel:()=>Se,useProgressCard:()=>me,useRequest:()=>_e,useStatusBadge:()=>fe,useTextStream:()=>ge,useUrunAuth:()=>ee,usesWorkOSAuth:()=>ye});module.exports=nt(ct);var D=require("react");var Ce=require("react"),z=require("react/jsx-runtime"),B=class extends Ce.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||(0,z.jsxs)("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[(0,z.jsx)("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),(0,z.jsx)("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};var ve=require("react"),Y=(0,ve.createContext)(null);function N(t){return t&&t.trim()?t.trim():void 0}function E(t){switch(t){case"NEXT_PUBLIC_AUTH_MODE":return N(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return N(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return N(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return N(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return N(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return N(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return N(typeof process<"u"?process.env?.[t]:void 0)}}function H(){let t=E("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"||E("VERCEL_ENV")==="production"?"workos":E("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function ye(){return H()==="workos"}var L=require("react"),xe=require("react/jsx-runtime"),Pe=(0,L.createContext)(null);function ue({getAccessToken:t,children:e}){let r=(0,L.useMemo)(()=>({getAccessToken:t}),[t]);return(0,xe.jsx)(Pe.Provider,{value:r,children:e})}var Te=ue;function ee(){return(0,L.useContext)(Pe)}var te=require("react/jsx-runtime");function ke({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:s,fallback:o,children:i}){let[k,a]=(0,D.useState)(),d=ee(),g=E("NEXT_PUBLIC_SESSION_TOKEN")??E("NEXT_PUBLIC_URUN_JWT"),u=H(),c=u==="workos"&&!n,C=n??(u==="jwt"?g:void 0)??k,T=s??E("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),h=c&&!C,R=(0,D.useMemo)(()=>({appId:r,baseUrl:t,orgId:e,jwt:C,getAccessToken:c?d?.getAccessToken:void 0,authProvider:T}),[r,d,t,T,C,e,c]);return(0,D.useEffect)(()=>{if(!c||!d)return;let S=!1,v=d;async function f(){try{let b=await v.getAccessToken();S||a(b??void 0)}catch{S||a(void 0)}}f();let y=window.setInterval(()=>{f()},6e4);return()=>{S=!0,window.clearInterval(y)}},[d,c]),(0,te.jsx)(B,{fallback:o,children:h?(0,te.jsx)("div",{role:"status","aria-live":"polite",children:"Signing in..."}):(0,te.jsx)(Y.Provider,{value:R,children:i})})}var _=require("react"),be=require("@urun-sh/core");function st(t,e){return`${t}:${JSON.stringify(e??{})}`}var ce=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}text(e){let r=this._doc.text(e),n=this._notify;return{append(s){r.append(s),n()},toString:()=>r.toString(),get length(){return r.length},on:(s,o)=>r.on(s,i=>{o(i),n()})}}dispose(){this._unsubscribeChange()}},pe=class{constructor(e,r){this._stream=e;this._notify=r;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},de=class{constructor(e,r){this._session=e;this._notify=r;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,r){return this._session.request(e,r)}requestStream(e,r){return this._session.requestStream(e,r)}doc(e){let r=this._docs.get(e);return r||(r=new ce(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new pe(this._session.stream(e),this._notify),this._streams.set(e,r)),r}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function Ee(){let t=(0,_.useContext)(Y);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=(0,_.useReducer)(s=>s+1,0),r=(0,_.useRef)(new Map),n=(0,_.useMemo)(()=>(0,be.App)(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,getAccessToken:t.getAccessToken,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.getAccessToken,t.authProvider]);return(0,_.useMemo)(()=>new Proxy({},{get(s,o){if(typeof o=="string")return i=>{let k=st(o,i),a=r.current.get(k);if(a)return a;let d=new de(n[o](i),e);return r.current.set(k,d),d}}}),[n])}var l=require("react");function F(t){let e=t;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function ot(t){return t instanceof Error?t:new Error(String(t))}function _e(t,e){let r=(0,l.useMemo)(()=>F(t),[t]),[n,s]=(0,l.useState)(void 0),[o,i]=(0,l.useState)(null),[k,a]=(0,l.useState)(!1),d=(0,l.useRef)(e);d.current=e;let g=(0,l.useRef)(0),u=(0,l.useRef)(null),c=(0,l.useRef)(!0);(0,l.useEffect)(()=>(c.current=!0,()=>{c.current=!1,u.current?.abort()}),[]);let C=(0,l.useCallback)(async R=>{u.current?.abort();let S=new AbortController;u.current=S;let v=++g.current,f=()=>c.current&&g.current===v;f()&&(a(!0),i(null));try{let y=await r.request(R,{...d.current,signal:S.signal});return f()&&(s(y),a(!1),d.current?.onSuccess?.(y)),y}catch(y){let b=ot(y);throw f()&&(i(b),a(!1),d.current?.onError?.(b)),b}},[r]),T=(0,l.useCallback)(R=>{C(R).catch(()=>{})},[C]),h=(0,l.useCallback)(()=>{g.current++,u.current?.abort(),u.current=null,s(void 0),i(null),a(!1)},[]);return{mutate:T,mutateAsync:C,data:n,error:o,isPending:k,reset:h}}var m=require("react");function Ue(t){return t instanceof Error?t:new Error(String(t))}var it=t=>typeof t=="string"?t:String(t);function we(t,e){let r=(0,m.useMemo)(()=>F(t),[t]),[n,s]=(0,m.useState)(""),[o,i]=(0,m.useState)(!1),[k,a]=(0,m.useState)(null),d=(0,m.useRef)(e);d.current=e;let g=(0,m.useRef)(0),u=(0,m.useRef)(null),c=(0,m.useRef)(!0);(0,m.useEffect)(()=>(c.current=!0,()=>{c.current=!1,u.current?.cancel(),u.current=null}),[]);let C=(0,m.useCallback)(()=>{g.current++,u.current?.cancel(),u.current=null,c.current&&i(!1)},[]),T=(0,m.useCallback)(async h=>{u.current?.cancel();let R=++g.current,S=()=>c.current&&g.current===R,v=d.current,f=v?.parseChunk??it,y=v?.buildPayload??(x=>({prompt:x}));S()&&(s(""),a(null),i(!0));let{parseChunk:b,buildPayload:We,onFinish:se,onError:$,...w}=v??{},j="",A;try{A=r.requestStream(y(h),w),u.current=A}catch(x){let q=Ue(x);S()&&(a(q),i(!1),v?.onError?.(q));return}try{for await(let x of A){if(g.current!==R)break;j+=f(x),S()&&s(j)}S()&&(i(!1),v?.onFinish?.(j))}catch(x){let q=Ue(x);S()&&(a(q),i(!1),v?.onError?.(q))}finally{u.current===A&&(u.current=null)}},[r]);return{completion:n,complete:T,stop:C,isStreaming:o,error:k}}var p=require("react");function Ae(t){return t instanceof Error?t:new Error(String(t))}var at=t=>typeof t=="string"?t:String(t),qe=0;function le(t){return qe+=1,`${t}-${qe}`}function Ie(t,e){let r=(0,p.useMemo)(()=>F(t),[t]),[n,s]=(0,p.useState)(()=>(e?.initialMessages??[]).map(f=>({id:f.id??le("msg"),role:f.role,content:f.content}))),[o,i]=(0,p.useState)(""),[k,a]=(0,p.useState)(!1),[d,g]=(0,p.useState)(null),u=(0,p.useRef)(e);u.current=e;let c=(0,p.useRef)(n);c.current=n;let C=(0,p.useRef)(o);C.current=o;let T=(0,p.useRef)(0),h=(0,p.useRef)(null),R=(0,p.useRef)(!0);(0,p.useEffect)(()=>(R.current=!0,()=>{R.current=!1,h.current?.cancel(),h.current=null}),[]);let S=(0,p.useCallback)(()=>{T.current++,h.current?.cancel(),h.current=null,R.current&&a(!1)},[]),v=(0,p.useCallback)(async f=>{let y=f===void 0,b=(y?C.current:f)??"";if(!b.trim())return;h.current?.cancel();let se=++T.current,$=()=>R.current&&T.current===se,w=u.current,j=w?.parseChunk??at,A={id:le("msg"),role:"user",content:b},x={id:le("msg"),role:"assistant",content:""},q=[...c.current,A].map(P=>({role:P.role,content:P.content})),Re=[...c.current,A,x];c.current=Re,s(Re),y&&i(""),g(null),a(!0);let Ke=w?.buildPayload??(P=>({messages:P})),{initialMessages:pt,parseChunk:dt,buildPayload:lt,onFinish:mt,onError:ft,...Ze}=w??{},Ge=P=>{s(I=>I.map(ie=>ie.id===x.id?{...ie,content:P}:ie))},oe="",Q;try{Q=r.requestStream(Ke(q),Ze),h.current=Q}catch(P){let I=Ae(P);$()&&(g(I),a(!1),w?.onError?.(I));return}try{for await(let P of Q){if(T.current!==se)break;oe+=j(P),$()&&Ge(oe)}$()&&(a(!1),w?.onFinish?.({...x,content:oe}))}catch(P){let I=Ae(P);$()&&(g(I),a(!1),w?.onError?.(I))}finally{h.current===Q&&(h.current=null)}},[r]);return{messages:n,input:o,setInput:i,sendMessage:v,stop:S,isStreaming:k,error:d}}var Ne=new Map;function Me(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);Ne.set(t,{component:e,schema:r})}function Oe(t,e){let r=Ne.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}var M=require("react/jsx-runtime");function Be({name:t,props:e,fallback:r}){let n=Oe(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?(0,M.jsx)(M.Fragment,{children:r}):(0,M.jsx)("div",{className:"urun-component-error",role:"alert",children:(0,M.jsx)("span",{className:"urun-component-error-text",children:n.error})});let s=n.Component;return(0,M.jsx)(s,{...n.validatedProps})}var V=require("zod"),O=require("react/jsx-runtime"),Le=V.z.object({step:V.z.number().min(0),total:V.z.number().min(1),label:V.z.string().optional(),variant:V.z.enum(["default","success","error"]).default("default")});function me(t){let{step:e,total:r,label:n,variant:s="default"}=t,o=Math.min(e/r*100,100),i=e>=r;return{step:e,total:r,label:n,variant:s,percentage:o,isComplete:i}}function De(t){let{step:e,total:r,label:n,variant:s,percentage:o}=me(t);return(0,O.jsxs)("div",{className:"urun-progress-card","data-variant":s,children:[n&&(0,O.jsx)("div",{className:"urun-progress-label",children:n}),(0,O.jsx)("div",{className:"urun-progress-bar",children:(0,O.jsx)("div",{className:"urun-progress-fill",style:{width:`${o}%`}})}),(0,O.jsxs)("div",{className:"urun-progress-text",children:[e,"/",r]})]})}var re=require("zod"),J=require("react/jsx-runtime"),Fe=re.z.object({state:re.z.enum(["thinking","generating","idle","error"]),message:re.z.string().optional()}),ut={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function fe(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",s=r??ut[e]??e;return{state:e,message:s,isActive:n}}function Ve(t){let{state:e,message:r,isActive:n}=fe(t);return(0,J.jsxs)("span",{className:"urun-status-badge","data-state":e,children:[(0,J.jsx)("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),(0,J.jsx)("span",{className:"urun-status-message",children:r})]})}var W=require("react"),ne=require("zod"),K=require("react/jsx-runtime"),Xe=ne.z.object({text:ne.z.string(),streaming:ne.z.boolean().default(!1)});function ge(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function $e(t){let{text:e,streaming:r}=ge(t),n=(0,W.useRef)(null),s=(0,W.useRef)(0);return(0,W.useEffect)(()=>{let o=n.current;o&&e.length!==s.current&&(o.textContent=e,s.current=e.length)},[e]),(0,K.jsxs)("div",{className:"urun-text-stream",children:[(0,K.jsx)("span",{ref:n,className:"urun-text-content"}),r&&(0,K.jsx)("span",{className:"urun-text-cursor"})]})}var Z=require("zod"),G=require("react/jsx-runtime"),je=Z.z.object({src:Z.z.string().url(),alt:Z.z.string().optional(),caption:Z.z.string().optional()});function he(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function ze(t){let{src:e,alt:r,caption:n}=he(t);return(0,G.jsxs)("figure",{className:"urun-image-frame",children:[(0,G.jsx)("img",{className:"urun-image",src:e,alt:r}),n&&(0,G.jsx)("figcaption",{className:"urun-image-caption",children:n})]})}var U=require("zod"),X=require("react/jsx-runtime"),He=U.z.object({metrics:U.z.array(U.z.object({label:U.z.string(),value:U.z.union([U.z.string(),U.z.number()]),unit:U.z.string().optional()}))});function Se(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function Je(t){let{metrics:e}=Se(t);return(0,X.jsx)("div",{className:"urun-metrics-panel",children:e.map((r,n)=>(0,X.jsxs)("div",{className:"urun-metric-card",children:[(0,X.jsx)("div",{className:"urun-metric-label",children:r.label}),(0,X.jsx)("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}0&&(module.exports={ComponentRenderer,ImageFrame,ImageFrameSchema,MetricsPanel,MetricsPanelSchema,ProgressCard,ProgressCardSchema,StatusBadge,StatusBadgeSchema,TextStream,TextStreamSchema,UrunAuthProvider,UrunErrorBoundary,UrunJwtProvider,UrunProvider,authMode,registerComponent,urunPublicEnv,useApp,useChat,useCompletion,useImageFrame,useMetricsPanel,useProgressCard,useRequest,useStatusBadge,useTextStream,useUrunAuth,usesWorkOSAuth});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as ee,b as re,c as x}from"./chunk-QAEWAWV4.mjs";import{useEffect as ie,useMemo as ae,useState as ce}from"react";import{Component as te}from"react";import{jsx as B,jsxs as ne}from"react/jsx-runtime";var f=class extends te{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("[urun] Error caught by UrunErrorBoundary:",e,t)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||ne("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[B("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),B("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as oe}from"react";var h=oe(null);function u(r){return r&&r.trim()?r.trim():void 0}function a(r){switch(r){case"NEXT_PUBLIC_AUTH_MODE":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return u(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return u(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return u(typeof process<"u"?process.env?.[r]:void 0)}}function v(){let r=a("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return r==="jwt"||r==="customer-jwt"||r==="test-jwt"?"jwt":r==="workos"||a("VERCEL_ENV")==="production"?"workos":a("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function se(){return v()==="workos"}import{jsx as C}from"react/jsx-runtime";function ue({baseUrl:r,orgId:e,appId:t,jwt:n,authProvider:o,fallback:s,children:p}){let[l,d]=ce(),i=x(),K=a("NEXT_PUBLIC_SESSION_TOKEN")??a("NEXT_PUBLIC_URUN_JWT"),N=v(),m=N==="workos"&&!n,y=n??(N==="jwt"?K:void 0)??l,A=o??a("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),Z=m&&!y,q=ae(()=>({appId:t,baseUrl:r,orgId:e,jwt:y,getAccessToken:m?i?.getAccessToken:void 0,authProvider:A}),[t,i,r,A,y,e,m]);return ie(()=>{if(!m||!i)return;let _=!1,G=i;async function I(){try{let Y=await G.getAccessToken();_||d(Y??void 0)}catch{_||d(void 0)}}I();let Q=window.setInterval(()=>{I()},6e4);return()=>{_=!0,window.clearInterval(Q)}},[i,m]),C(f,{fallback:s,children:Z?C("div",{role:"status","aria-live":"polite",children:"Signing in..."}):C(h.Provider,{value:q,children:p})})}import{useContext as pe,useMemo as M,useReducer as de,useRef as me}from"react";import{App as fe}from"@urun-sh/core";function ge(r,e){return`${r}:${JSON.stringify(e??{})}`}var T=class{constructor(e,t){this._doc=e;this._notify=t;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,t){return this._doc.get(e,t)}set(e){this._doc.set(e),this._notify()}on(e,t){return this._doc.on(e,n=>t(n))}dispose(){this._unsubscribeChange()}},b=class{constructor(e,t){this._stream=e;this._notify=t;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,t){return this._stream.on(e,t)}dispose(){this._unsubscribeTrack()}},E=class{constructor(e,t){this._session=e;this._notify=t;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}doc(e){let t=this._docs.get(e);return t||(t=new T(this._session.doc(e),this._notify),this._docs.set(e,t)),t}stream(e){let t=this._streams.get(e);return t||(t=new b(this._session.stream(e),this._notify),this._streams.set(e,t)),t}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function le(){let r=pe(h);if(!r)throw new Error("useApp must be used within <UrunProvider>");if(!r.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=de(o=>o+1,0),t=me(new Map),n=M(()=>fe(r.appId,{baseUrl:r.baseUrl,orgId:r.orgId,jwt:r.jwt,getAccessToken:r.getAccessToken,authProvider:r.authProvider}),[r.appId,r.baseUrl,r.orgId,r.jwt,r.getAccessToken,r.authProvider]);return M(()=>new Proxy({},{get(o,s){if(typeof s=="string")return p=>{let l=ge(s,p),d=t.current.get(l);if(d)return d;let i=new E(n[s](p),e);return t.current.set(l,i),i}}}),[n])}var L=new Map;function he(r,e,t){if(!t||typeof t.safeParse!="function")throw new Error(`registerComponent("${r}"): schema must be a valid Zod schema`);L.set(r,{component:e,schema:t})}function D(r,e){let t=L.get(r);if(!t)return{error:`Unknown component: "${r}"`};let n=t.schema.safeParse(e);return n.success?{Component:t.component,validatedProps:n.data}:{error:`Validation failed for "${r}": ${n.error.message}`}}import{Fragment as Se,jsx as S}from"react/jsx-runtime";function ve({name:r,props:e,fallback:t}){let n=D(r,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),t?S(Se,{children:t}):S("div",{className:"urun-component-error",role:"alert",children:S("span",{className:"urun-component-error-text",children:n.error})});let o=n.Component;return S(o,{...n.validatedProps})}import{z as g}from"zod";import{jsx as R,jsxs as O}from"react/jsx-runtime";var Pe=g.object({step:g.number().min(0),total:g.number().min(1),label:g.string().optional(),variant:g.enum(["default","success","error"]).default("default")});function V(r){let{step:e,total:t,label:n,variant:o="default"}=r,s=Math.min(e/t*100,100),p=e>=t;return{step:e,total:t,label:n,variant:o,percentage:s,isComplete:p}}function ye(r){let{step:e,total:t,label:n,variant:o,percentage:s}=V(r);return O("div",{className:"urun-progress-card","data-variant":o,children:[n&&R("div",{className:"urun-progress-label",children:n}),R("div",{className:"urun-progress-bar",children:R("div",{className:"urun-progress-fill",style:{width:`${s}%`}})}),O("div",{className:"urun-progress-text",children:[e,"/",t]})]})}import{z as U}from"zod";import{jsx as X,jsxs as Te}from"react/jsx-runtime";var _e=U.object({state:U.enum(["thinking","generating","idle","error"]),message:U.string().optional()}),xe={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function F(r){let{state:e,message:t}=r,n=e==="thinking"||e==="generating",o=t??xe[e]??e;return{state:e,message:o,isActive:n}}function Ce(r){let{state:e,message:t,isActive:n}=F(r);return Te("span",{className:"urun-status-badge","data-state":e,children:[X("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),X("span",{className:"urun-status-message",children:t})]})}import{useRef as j,useEffect as be}from"react";import{z as k}from"zod";import{jsx as z,jsxs as Ue}from"react/jsx-runtime";var Ee=k.object({text:k.string(),streaming:k.boolean().default(!1)});function $(r){let{text:e,streaming:t=!1}=r,n=e.length===0;return{text:e,streaming:t,isEmpty:n}}function Re(r){let{text:e,streaming:t}=$(r),n=j(null),o=j(0);return be(()=>{let s=n.current;s&&e.length!==o.current&&(s.textContent=e,o.current=e.length)},[e]),Ue("div",{className:"urun-text-stream",children:[z("span",{ref:n,className:"urun-text-content"}),t&&z("span",{className:"urun-text-cursor"})]})}import{z as P}from"zod";import{jsx as H,jsxs as Ne}from"react/jsx-runtime";var ke=P.object({src:P.string().url(),alt:P.string().optional(),caption:P.string().optional()});function J(r){let{src:e,alt:t,caption:n}=r;return{src:e,alt:t??"",caption:n}}function we(r){let{src:e,alt:t,caption:n}=J(r);return Ne("figure",{className:"urun-image-frame",children:[H("img",{className:"urun-image",src:e,alt:t}),n&&H("figcaption",{className:"urun-image-caption",children:n})]})}import{z as c}from"zod";import{jsx as w,jsxs as Be}from"react/jsx-runtime";var Ae=c.object({metrics:c.array(c.object({label:c.string(),value:c.union([c.string(),c.number()]),unit:c.string().optional()}))});function W(r){return{metrics:r.metrics.map(t=>({...t,displayValue:t.unit?`${t.value} ${t.unit}`:String(t.value)}))}}function Ie(r){let{metrics:e}=W(r);return w("div",{className:"urun-metrics-panel",children:e.map((t,n)=>Be("div",{className:"urun-metric-card",children:[w("div",{className:"urun-metric-label",children:t.label}),w("div",{className:"urun-metric-value",children:t.displayValue})]},n))})}export{ve as ComponentRenderer,we as ImageFrame,ke as ImageFrameSchema,Ie as MetricsPanel,Ae as MetricsPanelSchema,ye as ProgressCard,Pe as ProgressCardSchema,Ce as StatusBadge,_e as StatusBadgeSchema,Re as TextStream,Ee as TextStreamSchema,ee as UrunAuthProvider,f as UrunErrorBoundary,re as UrunJwtProvider,ue as UrunProvider,v as authMode,he as registerComponent,a as urunPublicEnv,le as useApp,J as useImageFrame,W as useMetricsPanel,V as useProgressCard,F as useStatusBadge,$ as useTextStream,x as useUrunAuth,se as usesWorkOSAuth};
|
|
1
|
+
import{a as qe,b as Ae,c as W}from"./chunk-QAEWAWV4.mjs";import{useEffect as Be,useMemo as Le,useState as De}from"react";import{Component as Ie}from"react";import{jsx as ue,jsxs as Ne}from"react/jsx-runtime";var M=class extends Ie{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,r){console.error("[urun] Error caught by UrunErrorBoundary:",e,r)}render(){if(this.state.error){let{fallback:e}=this.props;return typeof e=="function"?e(this.state.error):e||Ne("div",{role:"status","aria-live":"polite",style:{padding:"16px",border:"1px solid rgba(17, 24, 39, 0.12)",borderRadius:"8px",background:"#ffffff",color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',maxWidth:"360px"},children:[ue("p",{style:{margin:0,fontWeight:600},children:"Connection interrupted"}),ue("p",{style:{margin:"6px 0 0",color:"#4b5563"},children:"Reconnecting automatically."})]})}return this.props.children}};import{createContext as Me}from"react";var L=Me(null);function U(t){return t&&t.trim()?t.trim():void 0}function x(t){switch(t){case"NEXT_PUBLIC_AUTH_MODE":return U(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_MODE:void 0);case"NEXT_PUBLIC_AUTH_ENABLED":return U(typeof process<"u"?process.env?.NEXT_PUBLIC_AUTH_ENABLED:void 0);case"NEXT_PUBLIC_SESSION_AUTH_PROVIDER":return U(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_AUTH_PROVIDER:void 0);case"NEXT_PUBLIC_SESSION_TOKEN":return U(typeof process<"u"?process.env?.NEXT_PUBLIC_SESSION_TOKEN:void 0);case"NEXT_PUBLIC_URUN_JWT":return U(typeof process<"u"?process.env?.NEXT_PUBLIC_URUN_JWT:void 0);case"VERCEL_ENV":return U(typeof process<"u"?process.env?.VERCEL_ENV:void 0);default:return U(typeof process<"u"?process.env?.[t]:void 0)}}function D(){let t=x("NEXT_PUBLIC_AUTH_MODE")?.toLowerCase();return t==="jwt"||t==="customer-jwt"||t==="test-jwt"?"jwt":t==="workos"||x("VERCEL_ENV")==="production"?"workos":x("NEXT_PUBLIC_AUTH_ENABLED")==="false"?"jwt":"workos"}function Oe(){return D()==="workos"}import{jsx as K}from"react/jsx-runtime";function Fe({baseUrl:t,orgId:e,appId:r,jwt:n,authProvider:s,fallback:o,children:i}){let[P,a]=De(),p=W(),l=x("NEXT_PUBLIC_SESSION_TOKEN")??x("NEXT_PUBLIC_URUN_JWT"),u=D(),c=u==="workos"&&!n,h=n??(u==="jwt"?l:void 0)??P,y=s??x("NEXT_PUBLIC_SESSION_AUTH_PROVIDER"),m=c&&!h,g=Le(()=>({appId:r,baseUrl:t,orgId:e,jwt:h,getAccessToken:c?p?.getAccessToken:void 0,authProvider:y}),[r,p,t,y,h,e,c]);return Be(()=>{if(!c||!p)return;let f=!1,S=p;async function d(){try{let T=await S.getAccessToken();f||a(T??void 0)}catch{f||a(void 0)}}d();let R=window.setInterval(()=>{d()},6e4);return()=>{f=!0,window.clearInterval(R)}},[p,c]),K(M,{fallback:o,children:m?K("div",{role:"status","aria-live":"polite",children:"Signing in..."}):K(L.Provider,{value:g,children:i})})}import{useContext as Ve,useMemo as ce,useReducer as Xe,useRef as je}from"react";import{App as $e}from"@urun-sh/core";function ze(t,e){return`${t}:${JSON.stringify(e??{})}`}var Z=class{constructor(e,r){this._doc=e;this._notify=r;this._unsubscribeChange=this._doc.on("change",()=>this._notify())}_doc;_notify;_unsubscribeChange;get(e,r){return this._doc.get(e,r)}set(e){this._doc.set(e),this._notify()}on(e,r){return this._doc.on(e,n=>r(n))}text(e){let r=this._doc.text(e),n=this._notify;return{append(s){r.append(s),n()},toString:()=>r.toString(),get length(){return r.length},on:(s,o)=>r.on(s,i=>{o(i),n()})}}dispose(){this._unsubscribeChange()}},G=class{constructor(e,r){this._stream=e;this._notify=r;this._unsubscribeTrack=this._stream.on("track",()=>this._notify())}_stream;_notify;_unsubscribeTrack;get track(){return this._stream.track}attach(e){return this._stream.attach(e)}detach(){return this._stream.detach()}seek(e){return this._stream.seek(e)}on(e,r){return this._stream.on(e,r)}dispose(){this._unsubscribeTrack()}},Q=class{constructor(e,r){this._session=e;this._notify=r;this._unsubscribePhase=this._session.onPhase(()=>this._notify())}_session;_notify;_docs=new Map;_streams=new Map;_unsubscribePhase;get id(){return this._session.id}get phase(){return this._session.phase}onPhase(e){return this._session.onPhase(e)}request(e,r){return this._session.request(e,r)}requestStream(e,r){return this._session.requestStream(e,r)}doc(e){let r=this._docs.get(e);return r||(r=new Z(this._session.doc(e),this._notify),this._docs.set(e,r)),r}stream(e){let r=this._streams.get(e);return r||(r=new G(this._session.stream(e),this._notify),this._streams.set(e,r)),r}disconnect(){for(let e of this._docs.values())e.dispose();for(let e of this._streams.values())e.dispose();this._docs.clear(),this._streams.clear(),this._unsubscribePhase(),this._session.disconnect(),this._notify()}};function He(){let t=Ve(L);if(!t)throw new Error("useApp must be used within <UrunProvider>");if(!t.appId)throw new Error('useApp requires <UrunProvider appId="...">');let[,e]=Xe(s=>s+1,0),r=je(new Map),n=ce(()=>$e(t.appId,{baseUrl:t.baseUrl,orgId:t.orgId,jwt:t.jwt,getAccessToken:t.getAccessToken,authProvider:t.authProvider}),[t.appId,t.baseUrl,t.orgId,t.jwt,t.getAccessToken,t.authProvider]);return ce(()=>new Proxy({},{get(s,o){if(typeof o=="string")return i=>{let P=ze(o,i),a=r.current.get(P);if(a)return a;let p=new Q(n[o](i),e);return r.current.set(P,p),p}}}),[n])}import{useCallback as Y,useEffect as Je,useMemo as We,useRef as F,useState as ee}from"react";function q(t){let e=t;if(!e||typeof e.request!="function"||typeof e.requestStream!="function")throw new Error("This session does not support request/requestStream. Upgrade @urun-sh/core to a version that ships the request/response primitive.");return e}function Ke(t){return t instanceof Error?t:new Error(String(t))}function Ze(t,e){let r=We(()=>q(t),[t]),[n,s]=ee(void 0),[o,i]=ee(null),[P,a]=ee(!1),p=F(e);p.current=e;let l=F(0),u=F(null),c=F(!0);Je(()=>(c.current=!0,()=>{c.current=!1,u.current?.abort()}),[]);let h=Y(async g=>{u.current?.abort();let f=new AbortController;u.current=f;let S=++l.current,d=()=>c.current&&l.current===S;d()&&(a(!0),i(null));try{let R=await r.request(g,{...p.current,signal:f.signal});return d()&&(s(R),a(!1),p.current?.onSuccess?.(R)),R}catch(R){let T=Ke(R);throw d()&&(i(T),a(!1),p.current?.onError?.(T)),T}},[r]),y=Y(g=>{h(g).catch(()=>{})},[h]),m=Y(()=>{l.current++,u.current?.abort(),u.current=null,s(void 0),i(null),a(!1)},[]);return{mutate:y,mutateAsync:h,data:n,error:o,isPending:P,reset:m}}import{useCallback as pe,useEffect as Ge,useMemo as Qe,useRef as V,useState as te}from"react";function de(t){return t instanceof Error?t:new Error(String(t))}var Ye=t=>typeof t=="string"?t:String(t);function et(t,e){let r=Qe(()=>q(t),[t]),[n,s]=te(""),[o,i]=te(!1),[P,a]=te(null),p=V(e);p.current=e;let l=V(0),u=V(null),c=V(!0);Ge(()=>(c.current=!0,()=>{c.current=!1,u.current?.cancel(),u.current=null}),[]);let h=pe(()=>{l.current++,u.current?.cancel(),u.current=null,c.current&&i(!1)},[]),y=pe(async m=>{u.current?.cancel();let g=++l.current,f=()=>c.current&&l.current===g,S=p.current,d=S?.parseChunk??Ye,R=S?.buildPayload??(v=>({prompt:v}));f()&&(s(""),a(null),i(!0));let{parseChunk:T,buildPayload:be,onFinish:z,onError:I,...k}=S??{},N="",b;try{b=r.requestStream(R(m),k),u.current=b}catch(v){let _=de(v);f()&&(a(_),i(!1),S?.onError?.(_));return}try{for await(let v of b){if(l.current!==g)break;N+=d(v),f()&&s(N)}f()&&(i(!1),S?.onFinish?.(N))}catch(v){let _=de(v);f()&&(a(_),i(!1),S?.onError?.(_))}finally{u.current===b&&(u.current=null)}},[r]);return{completion:n,complete:y,stop:h,isStreaming:o,error:P}}import{useCallback as le,useEffect as tt,useMemo as rt,useRef as A,useState as X}from"react";function me(t){return t instanceof Error?t:new Error(String(t))}var nt=t=>typeof t=="string"?t:String(t),fe=0;function re(t){return fe+=1,`${t}-${fe}`}function st(t,e){let r=rt(()=>q(t),[t]),[n,s]=X(()=>(e?.initialMessages??[]).map(d=>({id:d.id??re("msg"),role:d.role,content:d.content}))),[o,i]=X(""),[P,a]=X(!1),[p,l]=X(null),u=A(e);u.current=e;let c=A(n);c.current=n;let h=A(o);h.current=o;let y=A(0),m=A(null),g=A(!0);tt(()=>(g.current=!0,()=>{g.current=!1,m.current?.cancel(),m.current=null}),[]);let f=le(()=>{y.current++,m.current?.cancel(),m.current=null,g.current&&a(!1)},[]),S=le(async d=>{let R=d===void 0,T=(R?h.current:d)??"";if(!T.trim())return;m.current?.cancel();let z=++y.current,I=()=>g.current&&y.current===z,k=u.current,N=k?.parseChunk??nt,b={id:re("msg"),role:"user",content:T},v={id:re("msg"),role:"assistant",content:""},_=[...c.current,b].map(C=>({role:C.role,content:C.content})),ae=[...c.current,b,v];c.current=ae,s(ae),R&&i(""),l(null),a(!0);let _e=k?.buildPayload??(C=>({messages:C})),{initialMessages:kt,parseChunk:xt,buildPayload:Et,onFinish:bt,onError:_t,...we}=k??{},Ue=C=>{s(w=>w.map(J=>J.id===v.id?{...J,content:C}:J))},H="",B;try{B=r.requestStream(_e(_),we),m.current=B}catch(C){let w=me(C);I()&&(l(w),a(!1),k?.onError?.(w));return}try{for await(let C of B){if(y.current!==z)break;H+=N(C),I()&&Ue(H)}I()&&(a(!1),k?.onFinish?.({...v,content:H}))}catch(C){let w=me(C);I()&&(l(w),a(!1),k?.onError?.(w))}finally{m.current===B&&(m.current=null)}},[r]);return{messages:n,input:o,setInput:i,sendMessage:S,stop:f,isStreaming:P,error:p}}var ge=new Map;function ot(t,e,r){if(!r||typeof r.safeParse!="function")throw new Error(`registerComponent("${t}"): schema must be a valid Zod schema`);ge.set(t,{component:e,schema:r})}function he(t,e){let r=ge.get(t);if(!r)return{error:`Unknown component: "${t}"`};let n=r.schema.safeParse(e);return n.success?{Component:r.component,validatedProps:n.data}:{error:`Validation failed for "${t}": ${n.error.message}`}}import{Fragment as at,jsx as j}from"react/jsx-runtime";function it({name:t,props:e,fallback:r}){let n=he(t,e);if(n.error)return console.warn(`[urun] ComponentRenderer: ${n.error}`),r?j(at,{children:r}):j("div",{className:"urun-component-error",role:"alert",children:j("span",{className:"urun-component-error-text",children:n.error})});let s=n.Component;return j(s,{...n.validatedProps})}import{z as O}from"zod";import{jsx as ne,jsxs as Se}from"react/jsx-runtime";var ut=O.object({step:O.number().min(0),total:O.number().min(1),label:O.string().optional(),variant:O.enum(["default","success","error"]).default("default")});function Re(t){let{step:e,total:r,label:n,variant:s="default"}=t,o=Math.min(e/r*100,100),i=e>=r;return{step:e,total:r,label:n,variant:s,percentage:o,isComplete:i}}function ct(t){let{step:e,total:r,label:n,variant:s,percentage:o}=Re(t);return Se("div",{className:"urun-progress-card","data-variant":s,children:[n&&ne("div",{className:"urun-progress-label",children:n}),ne("div",{className:"urun-progress-bar",children:ne("div",{className:"urun-progress-fill",style:{width:`${o}%`}})}),Se("div",{className:"urun-progress-text",children:[e,"/",r]})]})}import{z as se}from"zod";import{jsx as Ce,jsxs as mt}from"react/jsx-runtime";var pt=se.object({state:se.enum(["thinking","generating","idle","error"]),message:se.string().optional()}),dt={thinking:"Thinking...",generating:"Generating...",idle:"Idle",error:"Error"};function ye(t){let{state:e,message:r}=t,n=e==="thinking"||e==="generating",s=r??dt[e]??e;return{state:e,message:s,isActive:n}}function lt(t){let{state:e,message:r,isActive:n}=ye(t);return mt("span",{className:"urun-status-badge","data-state":e,children:[Ce("span",{className:`urun-status-indicator${n?" urun-status-pulse":""}`}),Ce("span",{className:"urun-status-message",children:r})]})}import{useRef as ve,useEffect as ft}from"react";import{z as oe}from"zod";import{jsx as Pe,jsxs as St}from"react/jsx-runtime";var gt=oe.object({text:oe.string(),streaming:oe.boolean().default(!1)});function Te(t){let{text:e,streaming:r=!1}=t,n=e.length===0;return{text:e,streaming:r,isEmpty:n}}function ht(t){let{text:e,streaming:r}=Te(t),n=ve(null),s=ve(0);return ft(()=>{let o=n.current;o&&e.length!==s.current&&(o.textContent=e,s.current=e.length)},[e]),St("div",{className:"urun-text-stream",children:[Pe("span",{ref:n,className:"urun-text-content"}),r&&Pe("span",{className:"urun-text-cursor"})]})}import{z as $}from"zod";import{jsx as ke,jsxs as yt}from"react/jsx-runtime";var Rt=$.object({src:$.string().url(),alt:$.string().optional(),caption:$.string().optional()});function xe(t){let{src:e,alt:r,caption:n}=t;return{src:e,alt:r??"",caption:n}}function Ct(t){let{src:e,alt:r,caption:n}=xe(t);return yt("figure",{className:"urun-image-frame",children:[ke("img",{className:"urun-image",src:e,alt:r}),n&&ke("figcaption",{className:"urun-image-caption",children:n})]})}import{z as E}from"zod";import{jsx as ie,jsxs as Tt}from"react/jsx-runtime";var vt=E.object({metrics:E.array(E.object({label:E.string(),value:E.union([E.string(),E.number()]),unit:E.string().optional()}))});function Ee(t){return{metrics:t.metrics.map(r=>({...r,displayValue:r.unit?`${r.value} ${r.unit}`:String(r.value)}))}}function Pt(t){let{metrics:e}=Ee(t);return ie("div",{className:"urun-metrics-panel",children:e.map((r,n)=>Tt("div",{className:"urun-metric-card",children:[ie("div",{className:"urun-metric-label",children:r.label}),ie("div",{className:"urun-metric-value",children:r.displayValue})]},n))})}export{it as ComponentRenderer,Ct as ImageFrame,Rt as ImageFrameSchema,Pt as MetricsPanel,vt as MetricsPanelSchema,ct as ProgressCard,ut as ProgressCardSchema,lt as StatusBadge,pt as StatusBadgeSchema,ht as TextStream,gt as TextStreamSchema,qe as UrunAuthProvider,M as UrunErrorBoundary,Ae as UrunJwtProvider,Fe as UrunProvider,D as authMode,ot as registerComponent,x as urunPublicEnv,He as useApp,st as useChat,et as useCompletion,xe as useImageFrame,Ee as useMetricsPanel,Re as useProgressCard,Ze as useRequest,ye as useStatusBadge,Te as useTextStream,W as useUrunAuth,Oe as usesWorkOSAuth};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urun-sh/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.37",
|
|
4
4
|
"description": "React bindings for the urun TypeScript SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"react": "^18.2.0 || ^19.0.0",
|
|
49
|
-
"@urun-sh/core": "^0.1.
|
|
49
|
+
"@urun-sh/core": "^0.1.37",
|
|
50
50
|
"@workos-inc/authkit-react": "^0.15.0 || ^0.16.0",
|
|
51
51
|
"@workos-inc/authkit-nextjs": "^3.0.0",
|
|
52
52
|
"next": "^15.0.0 || ^16.0.0"
|