@ai4b-team/fsaos-gateway-sdk 2.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/iife/gateway.js +3 -3
- package/dist/iife/gateway.js.map +3 -3
- package/dist/iife/ui.js +1 -1
- package/dist/index.cjs +66 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +51 -3
- package/dist/index.d.ts +51 -3
- package/dist/index.js +66 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/iife/ui.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-
|
|
1
|
+
/* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-27T18:30:24.764Z */
|
|
2
2
|
"use strict";var __FSAOS_UI__=(()=>{var m=Object.create;var r=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports),N=(e,i)=>{for(var a in i)r(e,a,{get:i[a],enumerable:!0})},s=(e,i,a,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of u(i))!h.call(e,t)&&t!==a&&r(e,t,{get:()=>i[t],enumerable:!(l=g(i,t))||l.enumerable});return e};var x=(e,i,a)=>(a=e!=null?m(f(e)):{},s(i||!e||!e.__esModule?r(a,"default",{value:e,enumerable:!0}):a,e)),b=e=>s(r({},"__esModule",{value:!0}),e);var d=y((V,c)=>{c.exports=React});var P={};N(P,{Badge:()=>z,Breadcrumbs:()=>A,Button:()=>D,Card:()=>w,DataView:()=>R,Detail:()=>_,Empty:()=>I,FilePreview:()=>O,Form:()=>F,Grid:()=>k,Image:()=>G,Link:()=>E,Page:()=>v,Router:()=>T,Sidebar:()=>S,Spinner:()=>B,Stack:()=>C,Table:()=>j,Tabs:()=>W,Video:()=>H});var n=x(d(),1);function o(){return(typeof window<"u"&&window.__FSAOS_CONFIG__||{}).edgeBaseUrl||""}function v(e){return(0,n.createElement)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column"},className:e.className||""},e.children)}function C(e){let i=e.direction||"vertical";return(0,n.createElement)("div",{style:{display:"flex",flexDirection:i==="horizontal"?"row":"column",gap:e.gap||"0.5rem",padding:e.padding||"0",alignItems:e.align||"stretch",justifyContent:e.justify||"flex-start",flex:e.flex||"initial"},className:e.className||""},e.children)}function k(e){return(0,n.createElement)("div",{style:{display:"grid",gridTemplateColumns:"repeat("+(e.columns||3)+", 1fr)",gap:e.gap||"1rem",padding:e.padding||"0"},className:e.className||""},e.children)}function S(e){return(0,n.createElement)("div",{style:{display:"flex",flexDirection:"row",minHeight:"100vh"},className:e.className||""},e.children)}function w(e){return(0,n.createElement)("div",{style:{border:"1px solid var(--color-border, #e5e7eb)",borderRadius:"var(--border-radius, 0.5rem)",padding:e.padding||"1rem",background:"var(--color-surface, #fff)"},className:e.className||"",onClick:e.onClick},e.children)}function z(e){return(0,n.createElement)("span",{style:{display:"inline-flex",alignItems:"center",padding:"0.125rem 0.5rem",fontSize:"0.75rem",fontWeight:"500",borderRadius:"9999px",background:e.color||"#e5e7eb",color:e.textColor||"#374151"},className:e.className||""},e.children||e.label)}function B(e){let i=e.size||"1.5rem";return(0,n.createElement)("div",{style:{width:i,height:i,border:"2px solid #e5e7eb",borderTopColor:"var(--color-primary, #3b82f6)",borderRadius:"50%",animation:"fsaos-spin 0.6s linear infinite"}})}function D(e){return(0,n.createElement)("button",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:"500",borderRadius:"var(--border-radius, 0.375rem)",border:e.variant==="outline"?"1px solid var(--color-border, #d1d5db)":"none",background:e.variant==="outline"||e.variant==="ghost"?"transparent":"var(--color-primary, #3b82f6)",color:e.variant==="outline"||e.variant==="ghost"?"var(--color-text, #1a1a1a)":"#fff",cursor:e.disabled?"not-allowed":"pointer",opacity:e.disabled?"0.5":"1",gap:"0.5rem"},className:e.className||"",onClick:e.onClick,disabled:e.disabled},e.children||e.label)}function I(e){return(0,n.createElement)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"3rem",color:"var(--color-text-secondary, #6b7280)",textAlign:"center"}},e.icon?(0,n.createElement)("div",{style:{fontSize:"2rem",marginBottom:"0.5rem"}},e.icon):null,(0,n.createElement)("div",{style:{fontWeight:500,marginBottom:"0.25rem"}},e.title||e.message||e.children||"No items"),e.description?(0,n.createElement)("div",{style:{fontSize:"0.875rem",opacity:.7}},e.description):null)}function R(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function j(e){return(0,n.createElement)("table",{className:e.className||""},e.children)}function F(e){return(0,n.createElement)("form",{className:e.className||"",onSubmit:e.onSubmit},e.children)}function _(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function T(e){return(0,n.createElement)("div",null,e.children)}function E(e){return(0,n.createElement)("a",{href:e.href||e.to,className:e.className||"",onClick:e.onClick},e.children)}function W(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function A(e){return(0,n.createElement)("nav",{className:e.className||""},e.children)}function G(e){return(0,n.createElement)("img",{src:e.src||(e.path?o()+e.path:""),alt:e.alt||"",className:e.className||"",style:e.style})}function H(e){return(0,n.createElement)("video",{src:e.src||(e.path?o()+e.path:""),controls:!0,className:e.className||""})}function O(e){return(0,n.createElement)("div",{className:e.className||""},e.children||"File preview")}return b(P);})();
|
|
3
3
|
//# sourceMappingURL=ui.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -55,6 +55,7 @@ __export(src_exports, {
|
|
|
55
55
|
emitEvent: () => emitEvent,
|
|
56
56
|
fetchChannelMessages: () => fetchChannelMessages,
|
|
57
57
|
fetchChannelMessagesPage: () => fetchChannelMessagesPage,
|
|
58
|
+
fetchChannelMessagesWithCards: () => fetchChannelMessagesWithCards,
|
|
58
59
|
fetchEdgesForItem: () => fetchEdgesForItem,
|
|
59
60
|
fetchItemHistory: () => fetchItemHistory,
|
|
60
61
|
fetchItemVersions: () => fetchItemVersions,
|
|
@@ -790,6 +791,26 @@ async function fetchItems(filter) {
|
|
|
790
791
|
return { items: [], total_hint: 0 };
|
|
791
792
|
}
|
|
792
793
|
}
|
|
794
|
+
function parseChannelCards(rawItems) {
|
|
795
|
+
return rawItems.filter((i) => i.item_type === "card").map((i) => {
|
|
796
|
+
const td = i.type_data || {};
|
|
797
|
+
return {
|
|
798
|
+
id: i.id || "",
|
|
799
|
+
path: i.path || "",
|
|
800
|
+
name: i.name || (i.path || "").split("/").pop() || "",
|
|
801
|
+
createdAt: i.created_at || "",
|
|
802
|
+
action: td.action || "created",
|
|
803
|
+
targetId: td.target_id || void 0,
|
|
804
|
+
targetPath: td.target_path || "",
|
|
805
|
+
targetDisplayName: td.target_display_name || "",
|
|
806
|
+
targetDescription: td.target_description || "",
|
|
807
|
+
targetItemType: td.target_item_type || "",
|
|
808
|
+
toolId: (i.name || "").startsWith("card-") ? (i.name || "").substring(5) : void 0,
|
|
809
|
+
parentMessagePath: i.parent_message_path || void 0,
|
|
810
|
+
visibility: td.visibility || "private"
|
|
811
|
+
};
|
|
812
|
+
}).sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
813
|
+
}
|
|
793
814
|
function parseChannelMessages(rawItems) {
|
|
794
815
|
return rawItems.filter((i) => i.item_type === "message").map((i) => {
|
|
795
816
|
const td = i.type_data || {};
|
|
@@ -828,6 +849,40 @@ async function fetchChannelMessages(channelPath, parentMessageId) {
|
|
|
828
849
|
return [];
|
|
829
850
|
}
|
|
830
851
|
}
|
|
852
|
+
async function fetchChannelMessagesWithCards(channelPath, parentMessageId) {
|
|
853
|
+
try {
|
|
854
|
+
const params = { channel_path: channelPath };
|
|
855
|
+
if (parentMessageId) params.parent_message_id = parentMessageId;
|
|
856
|
+
const response = await gatewayCall("get-channel-messages", params);
|
|
857
|
+
const raw = response;
|
|
858
|
+
const items = raw.messages || [];
|
|
859
|
+
const messages = parseChannelMessages(items);
|
|
860
|
+
const cards = parseChannelCards(items);
|
|
861
|
+
const messageCards = /* @__PURE__ */ new Map();
|
|
862
|
+
const siblingCards = [];
|
|
863
|
+
for (const card of cards) {
|
|
864
|
+
if (card.parentMessagePath) {
|
|
865
|
+
const existing = messageCards.get(card.parentMessagePath) || [];
|
|
866
|
+
existing.push(card);
|
|
867
|
+
messageCards.set(card.parentMessagePath, existing);
|
|
868
|
+
} else {
|
|
869
|
+
siblingCards.push(card);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
return {
|
|
873
|
+
messages,
|
|
874
|
+
messageCards,
|
|
875
|
+
siblingCards,
|
|
876
|
+
mode: raw.mode || "top_level"
|
|
877
|
+
};
|
|
878
|
+
} catch (err) {
|
|
879
|
+
console.error(
|
|
880
|
+
`[gateway] Failed to fetch channel messages with cards for ${channelPath}:`,
|
|
881
|
+
err
|
|
882
|
+
);
|
|
883
|
+
return { messages: [], messageCards: /* @__PURE__ */ new Map(), siblingCards: [], mode: "top_level" };
|
|
884
|
+
}
|
|
885
|
+
}
|
|
831
886
|
async function fetchChannelMessagesPage(channelPath, options) {
|
|
832
887
|
try {
|
|
833
888
|
const params = { channel_path: channelPath };
|
|
@@ -2287,7 +2342,7 @@ function useChannelMessages(options) {
|
|
|
2287
2342
|
const debounceRef = React.useRef(null);
|
|
2288
2343
|
const query = reactQuery.useQuery({
|
|
2289
2344
|
queryKey: stableKey,
|
|
2290
|
-
queryFn: () =>
|
|
2345
|
+
queryFn: () => fetchChannelMessagesWithCards(channelPath, parentMessageId),
|
|
2291
2346
|
enabled: isEnabled
|
|
2292
2347
|
});
|
|
2293
2348
|
React.useEffect(() => {
|
|
@@ -2301,7 +2356,7 @@ function useChannelMessages(options) {
|
|
|
2301
2356
|
}, 500);
|
|
2302
2357
|
},
|
|
2303
2358
|
(data) => {
|
|
2304
|
-
return data.item_type === "message" && typeof data.path === "string" && data.path.startsWith(channelPath);
|
|
2359
|
+
return (data.item_type === "message" || data.item_type === "card") && typeof data.path === "string" && data.path.startsWith(channelPath);
|
|
2305
2360
|
}
|
|
2306
2361
|
);
|
|
2307
2362
|
return () => {
|
|
@@ -2309,9 +2364,16 @@ function useChannelMessages(options) {
|
|
|
2309
2364
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
2310
2365
|
};
|
|
2311
2366
|
}, [realtime, isEnabled, channelPath, stableKey, qc]);
|
|
2312
|
-
const
|
|
2367
|
+
const response = query.data;
|
|
2368
|
+
const messages = response?.messages ?? [];
|
|
2369
|
+
const messageCards = response?.messageCards ?? /* @__PURE__ */ new Map();
|
|
2370
|
+
const siblingCards = response?.siblingCards ?? [];
|
|
2313
2371
|
return {
|
|
2314
2372
|
messages,
|
|
2373
|
+
/** Cards grouped by parent message path (child cards of messages). */
|
|
2374
|
+
messageCards,
|
|
2375
|
+
/** Cards that are direct siblings of the channel (not nested under a message). */
|
|
2376
|
+
siblingCards,
|
|
2315
2377
|
threads: React.useMemo(() => messages.filter((m) => m.reply_count > 0), [messages]),
|
|
2316
2378
|
isLoading: query.isLoading,
|
|
2317
2379
|
isFetching: query.isFetching,
|
|
@@ -3158,6 +3220,7 @@ exports.disposeVfsRealtimeWs = disposeVfsRealtimeWs;
|
|
|
3158
3220
|
exports.emitEvent = emitEvent;
|
|
3159
3221
|
exports.fetchChannelMessages = fetchChannelMessages;
|
|
3160
3222
|
exports.fetchChannelMessagesPage = fetchChannelMessagesPage;
|
|
3223
|
+
exports.fetchChannelMessagesWithCards = fetchChannelMessagesWithCards;
|
|
3161
3224
|
exports.fetchEdgesForItem = fetchEdgesForItem;
|
|
3162
3225
|
exports.fetchItemHistory = fetchItemHistory;
|
|
3163
3226
|
exports.fetchItemVersions = fetchItemVersions;
|