@ai4b-team/fsaos-gateway-sdk 4.0.0 → 4.2.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/ui.js CHANGED
@@ -1,3 +1,3 @@
1
- /* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-10-29T23:34:38.879Z */
1
+ /* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-10-31T01:05:49.771Z */
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
@@ -48,6 +48,8 @@ __export(src_exports, {
48
48
  InteractionTrackingError: () => InteractionTrackingError,
49
49
  KernelProvider: () => KernelProvider,
50
50
  QueryClientProvider: () => reactQuery.QueryClientProvider,
51
+ acceptInvite: () => acceptInvite,
52
+ answerInput: () => answerInput,
51
53
  assignPersonalSection: () => assignPersonalSection,
52
54
  auth: () => auth,
53
55
  awaitAnchorReady: () => awaitAnchorReady,
@@ -58,6 +60,7 @@ __export(src_exports, {
58
60
  clearCachedToken: () => clearCachedToken,
59
61
  clearSession: () => clearSession,
60
62
  configureGatewayReads: () => configureGatewayReads,
63
+ createAgent: () => createAgent,
61
64
  createItem: () => createItem,
62
65
  disconnectSSE: () => disconnectSSE,
63
66
  disposeVfsRealtimeWs: () => disposeVfsRealtimeWs,
@@ -114,6 +117,7 @@ __export(src_exports, {
114
117
  invalidatePathAndParent: () => invalidatePathAndParent,
115
118
  invalidateSubtree: () => invalidateSubtree,
116
119
  invalidateTypes: () => invalidateTypes,
120
+ inviteMember: () => inviteMember,
117
121
  isAnchorReady: () => isAnchorReady,
118
122
  isChannelPath: () => isChannelPath,
119
123
  isListableItemsFilter: () => isListableItemsFilter,
@@ -137,6 +141,7 @@ __export(src_exports, {
137
141
  resetAllSdkState: () => resetAllSdkState,
138
142
  resolvePrincipalId: () => resolvePrincipalId,
139
143
  resubscribePath: () => resubscribePath,
144
+ seatMember: () => seatMember,
140
145
  selectMount: () => selectMount,
141
146
  serverDeadlinePassed: () => serverDeadlinePassed,
142
147
  serverMsUntil: () => serverMsUntil,
@@ -163,9 +168,11 @@ __export(src_exports, {
163
168
  unmountRealtimeScope: () => unmountRealtimeScope,
164
169
  updateItem: () => updateItem,
165
170
  uploadFile: () => uploadFile,
171
+ useAcceptInvite: () => useAcceptInvite,
166
172
  useAccounts: () => useAccounts,
167
173
  useAgentTimeline: () => useAgentTimeline,
168
174
  useAllChannels: () => useAllChannels,
175
+ useAnswerInput: () => useAnswerInput,
169
176
  useArrangement: () => useArrangement,
170
177
  useArtifactStream: () => useArtifactStream,
171
178
  useAsset: () => useAsset,
@@ -175,6 +182,7 @@ __export(src_exports, {
175
182
  useChildren: () => useChildren,
176
183
  useComponent: () => useComponent,
177
184
  useCreate: () => useCreate,
185
+ useCreateAgent: () => useCreateAgent,
178
186
  useDelete: () => useDelete,
179
187
  useDmChannels: () => useDmChannels,
180
188
  useEdges: () => useEdges,
@@ -184,6 +192,7 @@ __export(src_exports, {
184
192
  useInfiniteChannelMessages: () => useInfiniteChannelMessages,
185
193
  useInfiniteChildren: () => useInfiniteChildren,
186
194
  useInfiniteItems: () => useInfiniteItems,
195
+ useInviteMember: () => useInviteMember,
187
196
  useItem: () => useItem,
188
197
  useItemById: () => useItemById,
189
198
  useItemHistory: () => useItemHistory,
@@ -211,6 +220,7 @@ __export(src_exports, {
211
220
  useScope: () => useScope,
212
221
  useScopeReady: () => useScopeReady,
213
222
  useSearch: () => useSearch,
223
+ useSeatMember: () => useSeatMember,
214
224
  useTheme: () => useTheme,
215
225
  useTimelineHistory: () => useTimelineHistory,
216
226
  useTool: () => useTool,
@@ -2080,6 +2090,7 @@ function parseChannelMessages(rawItems) {
2080
2090
  principal_id: td.principal_id,
2081
2091
  member_id: typeof td.member_id === "string" ? td.member_id : void 0,
2082
2092
  reply_count: td.reply_count || 0,
2093
+ member_count: td.member_count || 0,
2083
2094
  parent_message_id: td.parent_message_id,
2084
2095
  intent_card: metadata.intent_card,
2085
2096
  metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
@@ -3869,6 +3880,8 @@ function useChannelMessages(options) {
3869
3880
  /** Cards that are direct siblings of the channel (not nested under a message). */
3870
3881
  siblingCards,
3871
3882
  threads: React.useMemo(() => messages.filter((m) => m.reply_count > 0), [messages]),
3883
+ /** Top-level messages with members of their own: breakouts (Agent System Master Spec D21). */
3884
+ breakouts: React.useMemo(() => messages.filter((m) => m.member_count > 0), [messages]),
3872
3885
  isLoading: query.isLoading,
3873
3886
  isFetching: query.isFetching,
3874
3887
  error: query.error,
@@ -4067,6 +4080,8 @@ function useInfiniteChannelMessages(options) {
4067
4080
  /** Cards that are direct siblings of the channel (not nested under a message). */
4068
4081
  siblingCards,
4069
4082
  threads: messages.filter((m) => m.reply_count > 0),
4083
+ /** Top-level messages with members of their own: breakouts (Agent System Master Spec D21). */
4084
+ breakouts: messages.filter((m) => m.member_count > 0),
4070
4085
  isLoading: query.isLoading,
4071
4086
  isFetching: query.isFetching,
4072
4087
  error: query.error,
@@ -5474,6 +5489,71 @@ function setupRequireShim() {
5474
5489
  };
5475
5490
  window.__FSAOS_MOUNT__ = gateway.mount;
5476
5491
  }
5492
+ function inviteMember(params) {
5493
+ return gatewayCall("invite-member", params);
5494
+ }
5495
+ function acceptInvite(params) {
5496
+ return gatewayCall("accept-invite", params);
5497
+ }
5498
+ function seatMember(params) {
5499
+ const context = {};
5500
+ if (params.role) context.role = params.role;
5501
+ return gatewayCall("link", {
5502
+ source_id: params.chat_id,
5503
+ target_id: params.member_id,
5504
+ edge_type: "has_member",
5505
+ context
5506
+ });
5507
+ }
5508
+ function createAgent(params) {
5509
+ return gatewayCall("create-agent", params);
5510
+ }
5511
+ function answerInput(params) {
5512
+ if (!params.input_request_id && !params.input_request) {
5513
+ return Promise.reject(new Error("answerInput needs input_request_id or the input_request object read from the step."));
5514
+ }
5515
+ return gatewayCall("todo-control", { action: "answer_input", ...params });
5516
+ }
5517
+ function useInviteMember() {
5518
+ return reactQuery.useMutation({ mutationFn: inviteMember });
5519
+ }
5520
+ function useAcceptInvite() {
5521
+ const qc = reactQuery.useQueryClient();
5522
+ return reactQuery.useMutation({
5523
+ mutationFn: acceptInvite,
5524
+ onSuccess: () => {
5525
+ qc.invalidateQueries({ queryKey: ["memberships"] });
5526
+ }
5527
+ });
5528
+ }
5529
+ function useSeatMember() {
5530
+ const qc = reactQuery.useQueryClient();
5531
+ return reactQuery.useMutation({
5532
+ mutationFn: seatMember,
5533
+ onSuccess: (_data, variables) => {
5534
+ qc.invalidateQueries({ queryKey: vfsKeys.edges(variables.chat_id) });
5535
+ qc.invalidateQueries({ queryKey: vfsKeys.edges(variables.member_id) });
5536
+ }
5537
+ });
5538
+ }
5539
+ function useCreateAgent() {
5540
+ const qc = reactQuery.useQueryClient();
5541
+ return reactQuery.useMutation({
5542
+ mutationFn: createAgent,
5543
+ onSuccess: () => {
5544
+ qc.invalidateQueries({ queryKey: ["memberships"] });
5545
+ }
5546
+ });
5547
+ }
5548
+ function useAnswerInput() {
5549
+ const qc = reactQuery.useQueryClient();
5550
+ return reactQuery.useMutation({
5551
+ mutationFn: answerInput,
5552
+ onSuccess: (_data, variables) => {
5553
+ qc.invalidateQueries({ queryKey: vfsKeys.itemById(variables.step_id) });
5554
+ }
5555
+ });
5556
+ }
5477
5557
 
5478
5558
  // src/schema-utils.ts
5479
5559
  function keyToLabel(key) {
@@ -6284,6 +6364,8 @@ exports.FormSubmissionError = FormSubmissionError;
6284
6364
  exports.GatewayRequestError = GatewayRequestError;
6285
6365
  exports.InteractionTrackingError = InteractionTrackingError;
6286
6366
  exports.KernelProvider = KernelProvider;
6367
+ exports.acceptInvite = acceptInvite;
6368
+ exports.answerInput = answerInput;
6287
6369
  exports.assignPersonalSection = assignPersonalSection;
6288
6370
  exports.auth = auth;
6289
6371
  exports.awaitAnchorReady = awaitAnchorReady;
@@ -6294,6 +6376,7 @@ exports.cancelTurn = cancelTurn;
6294
6376
  exports.clearCachedToken = clearCachedToken;
6295
6377
  exports.clearSession = clearSession;
6296
6378
  exports.configureGatewayReads = configureGatewayReads;
6379
+ exports.createAgent = createAgent;
6297
6380
  exports.createItem = createItem;
6298
6381
  exports.disconnectSSE = disconnectSSE;
6299
6382
  exports.disposeVfsRealtimeWs = disposeVfsRealtimeWs;
@@ -6350,6 +6433,7 @@ exports.invalidateOpenEnvelope = invalidateOpenEnvelope;
6350
6433
  exports.invalidatePathAndParent = invalidatePathAndParent;
6351
6434
  exports.invalidateSubtree = invalidateSubtree;
6352
6435
  exports.invalidateTypes = invalidateTypes;
6436
+ exports.inviteMember = inviteMember;
6353
6437
  exports.isAnchorReady = isAnchorReady;
6354
6438
  exports.isChannelPath = isChannelPath;
6355
6439
  exports.isListableItemsFilter = isListableItemsFilter;
@@ -6373,6 +6457,7 @@ exports.replaceMounts = replaceMounts;
6373
6457
  exports.resetAllSdkState = resetAllSdkState;
6374
6458
  exports.resolvePrincipalId = resolvePrincipalId;
6375
6459
  exports.resubscribePath = resubscribePath;
6460
+ exports.seatMember = seatMember;
6376
6461
  exports.selectMount = selectMount;
6377
6462
  exports.serverDeadlinePassed = serverDeadlinePassed;
6378
6463
  exports.serverMsUntil = serverMsUntil;
@@ -6399,9 +6484,11 @@ exports.trackPageView = trackPageView;
6399
6484
  exports.unmountRealtimeScope = unmountRealtimeScope;
6400
6485
  exports.updateItem = updateItem;
6401
6486
  exports.uploadFile = uploadFile;
6487
+ exports.useAcceptInvite = useAcceptInvite;
6402
6488
  exports.useAccounts = useAccounts;
6403
6489
  exports.useAgentTimeline = useAgentTimeline;
6404
6490
  exports.useAllChannels = useAllChannels;
6491
+ exports.useAnswerInput = useAnswerInput;
6405
6492
  exports.useArrangement = useArrangement;
6406
6493
  exports.useArtifactStream = useArtifactStream;
6407
6494
  exports.useAsset = useAsset;
@@ -6411,6 +6498,7 @@ exports.useChannels = useChannels;
6411
6498
  exports.useChildren = useChildren;
6412
6499
  exports.useComponent = useComponent;
6413
6500
  exports.useCreate = useCreate;
6501
+ exports.useCreateAgent = useCreateAgent;
6414
6502
  exports.useDelete = useDelete;
6415
6503
  exports.useDmChannels = useDmChannels;
6416
6504
  exports.useEdges = useEdges;
@@ -6420,6 +6508,7 @@ exports.useIncrementalItems = useIncrementalItems;
6420
6508
  exports.useInfiniteChannelMessages = useInfiniteChannelMessages;
6421
6509
  exports.useInfiniteChildren = useInfiniteChildren;
6422
6510
  exports.useInfiniteItems = useInfiniteItems;
6511
+ exports.useInviteMember = useInviteMember;
6423
6512
  exports.useItem = useItem;
6424
6513
  exports.useItemById = useItemById;
6425
6514
  exports.useItemHistory = useItemHistory;
@@ -6447,6 +6536,7 @@ exports.useResolvedItems = useResolvedItems;
6447
6536
  exports.useScope = useScope;
6448
6537
  exports.useScopeReady = useScopeReady;
6449
6538
  exports.useSearch = useSearch;
6539
+ exports.useSeatMember = useSeatMember;
6450
6540
  exports.useTheme = useTheme;
6451
6541
  exports.useTimelineHistory = useTimelineHistory;
6452
6542
  exports.useTool = useTool;