@fusebase/fusebase-gate-sdk 2.10.1-sdk.0 → 2.11.1

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.
@@ -5,7 +5,7 @@
5
5
  * Domain: app-apis
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { AppApiOperationContract, AppApiOperationListResponseContract, CallAppApiRequestContract, CallAppApiResponseContract, orgIdInPathRequired, PublishedAppListResponseContract, VerifyAppApiContractsRequestContract, VerifyAppApiContractsResponseContract } from "../types";
8
+ import type { AppApiOperationContract, AppApiOperationListResponseContract, CallAppApiRequestContract, CallAppApiResponseContract, orgIdInPathRequired, PublishedAppApiManifestContract, PublishedAppListResponseContract, VerifyAppApiContractsRequestContract, VerifyAppApiContractsResponseContract } from "../types";
9
9
  export declare class AppApisApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -48,6 +48,17 @@ export declare class AppApisApi {
48
48
  };
49
49
  headers?: Record<string, string>;
50
50
  }): Promise<AppApiOperationContract>;
51
+ /**
52
+ * Get a published app API manifest
53
+ * Returns the selected app's published app-api-registry manifest, including the complete parsed OpenAPI document. The caller must have org.read access and user-bound context.
54
+ */
55
+ getPublishedAppApiManifest(params: {
56
+ path: {
57
+ orgId: orgIdInPathRequired;
58
+ appId: string;
59
+ };
60
+ headers?: Record<string, string>;
61
+ }): Promise<PublishedAppApiManifestContract>;
51
62
  /**
52
63
  * List app API operations
53
64
  * Returns published app API operations visible inside the organization. Optional filters narrow the result by app, feature, visibility, and limit.
@@ -55,6 +55,20 @@ class AppApisApi {
55
55
  expectedContentType: "application/json",
56
56
  });
57
57
  }
58
+ /**
59
+ * Get a published app API manifest
60
+ * Returns the selected app's published app-api-registry manifest, including the complete parsed OpenAPI document. The caller must have org.read access and user-bound context.
61
+ */
62
+ async getPublishedAppApiManifest(params) {
63
+ return this.client.request({
64
+ method: "GET",
65
+ path: "/:orgId/apps/:appId/app-api-manifest",
66
+ pathParams: params.path,
67
+ headers: params.headers,
68
+ opId: "getPublishedAppApiManifest",
69
+ expectedContentType: "application/json",
70
+ });
71
+ }
58
72
  /**
59
73
  * List app API operations
60
74
  * Returns published app API operations visible inside the organization. Optional filters narrow the result by app, feature, visibility, and limit.
@@ -11,7 +11,7 @@ export declare class OrgUsersApi {
11
11
  constructor(client: Client);
12
12
  /**
13
13
  * Add user to organization
14
- * Invites a user into the organization. Without workspaceId it performs an org invite. With workspaceId it performs a workspace-aware invite and can resolve `default` to the organization's default workspace. For org-only instant client onboarding, send orgRole=`client` with autoConfirmClientInvite=`true`. A successful write does not prove that the current session already has org access; confirm access with getMyOrgAccess. Requires org.members.write and org access.
14
+ * Invites a user into the organization. Without workspaceId it performs an org invite. With workspaceId it performs a workspace-aware invite and can resolve `default` to the organization's default workspace. For org-only instant client onboarding, send orgRole=`client` with autoConfirmClientInvite=`true`. For service accounts (bots) that cannot click an invite email, send autoConfirmInvite=`true` to add an existing Fusebase account as a member of the path org right away with the requested orgRole. A successful write does not prove that the current session already has org access; confirm access with getMyOrgAccess. Requires org.members.write and org access.
15
15
  */
16
16
  addOrgUser(params: {
17
17
  path: {
@@ -13,7 +13,7 @@ class OrgUsersApi {
13
13
  }
14
14
  /**
15
15
  * Add user to organization
16
- * Invites a user into the organization. Without workspaceId it performs an org invite. With workspaceId it performs a workspace-aware invite and can resolve `default` to the organization's default workspace. For org-only instant client onboarding, send orgRole=`client` with autoConfirmClientInvite=`true`. A successful write does not prove that the current session already has org access; confirm access with getMyOrgAccess. Requires org.members.write and org access.
16
+ * Invites a user into the organization. Without workspaceId it performs an org invite. With workspaceId it performs a workspace-aware invite and can resolve `default` to the organization's default workspace. For org-only instant client onboarding, send orgRole=`client` with autoConfirmClientInvite=`true`. For service accounts (bots) that cannot click an invite email, send autoConfirmInvite=`true` to add an existing Fusebase account as a member of the path org right away with the requested orgRole. A successful write does not prove that the current session already has org access; confirm access with getMyOrgAccess. Requires org.members.write and org access.
17
17
  */
18
18
  async addOrgUser(params) {
19
19
  return this.client.request({
@@ -0,0 +1,44 @@
1
+ /**
2
+ * PaperclipAgents API
3
+ *
4
+ * Generated from contract introspection
5
+ * Domain: paperclip-agents
6
+ */
7
+ import type { Client } from "../runtime/transport";
8
+ import type { CreatePaperclipAgentTaskRequestContract, orgIdInPathRequired, PaperclipAgentTaskAcceptedContract, PaperclipAgentTaskIdInPathRequired, PaperclipAgentTaskStatusContract, PaperclipCallableAgentListContract } from "../types";
9
+ export declare class PaperclipAgentsApi {
10
+ private client;
11
+ constructor(client: Client);
12
+ /**
13
+ * Create a FuseBase Work agent task
14
+ * Creates an asynchronous issue assigned to an agent in the caller's organization. Supply externalRef for idempotent retries.
15
+ */
16
+ createPaperclipAgentTask(params: {
17
+ path: {
18
+ orgId: orgIdInPathRequired;
19
+ };
20
+ headers?: Record<string, string>;
21
+ body: CreatePaperclipAgentTaskRequestContract;
22
+ }): Promise<PaperclipAgentTaskAcceptedContract>;
23
+ /**
24
+ * Get a FuseBase Work agent task
25
+ * Returns task state, the associated run, comments, and produced work products.
26
+ */
27
+ getPaperclipAgentTask(params: {
28
+ path: {
29
+ orgId: orgIdInPathRequired;
30
+ taskId: PaperclipAgentTaskIdInPathRequired;
31
+ };
32
+ headers?: Record<string, string>;
33
+ }): Promise<PaperclipAgentTaskStatusContract>;
34
+ /**
35
+ * List callable FuseBase Work agents
36
+ * Lists agents from the caller's organization-scoped FuseBase Work runtime.
37
+ */
38
+ listPaperclipCallableAgents(params: {
39
+ path: {
40
+ orgId: orgIdInPathRequired;
41
+ };
42
+ headers?: Record<string, string>;
43
+ }): Promise<PaperclipCallableAgentListContract>;
44
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * PaperclipAgents API
4
+ *
5
+ * Generated from contract introspection
6
+ * Domain: paperclip-agents
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PaperclipAgentsApi = void 0;
10
+ class PaperclipAgentsApi {
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ /**
15
+ * Create a FuseBase Work agent task
16
+ * Creates an asynchronous issue assigned to an agent in the caller's organization. Supply externalRef for idempotent retries.
17
+ */
18
+ async createPaperclipAgentTask(params) {
19
+ return this.client.request({
20
+ method: "POST",
21
+ path: "/:orgId/paperclip-agents/tasks",
22
+ pathParams: params.path,
23
+ headers: params.headers,
24
+ body: params.body,
25
+ opId: "createPaperclipAgentTask",
26
+ expectedContentType: "application/json",
27
+ });
28
+ }
29
+ /**
30
+ * Get a FuseBase Work agent task
31
+ * Returns task state, the associated run, comments, and produced work products.
32
+ */
33
+ async getPaperclipAgentTask(params) {
34
+ return this.client.request({
35
+ method: "GET",
36
+ path: "/:orgId/paperclip-agents/tasks/:taskId",
37
+ pathParams: params.path,
38
+ headers: params.headers,
39
+ opId: "getPaperclipAgentTask",
40
+ expectedContentType: "application/json",
41
+ });
42
+ }
43
+ /**
44
+ * List callable FuseBase Work agents
45
+ * Lists agents from the caller's organization-scoped FuseBase Work runtime.
46
+ */
47
+ async listPaperclipCallableAgents(params) {
48
+ return this.client.request({
49
+ method: "GET",
50
+ path: "/:orgId/paperclip-agents",
51
+ pathParams: params.path,
52
+ headers: params.headers,
53
+ opId: "listPaperclipCallableAgents",
54
+ expectedContentType: "application/json",
55
+ });
56
+ }
57
+ }
58
+ exports.PaperclipAgentsApi = PaperclipAgentsApi;
@@ -5,7 +5,7 @@
5
5
  * Domain: portals
6
6
  */
7
7
  import type { Client } from "../runtime/transport";
8
- import type { AddPortalAiAgentBlockRequestContract, AddPortalAiAgentBlockResponseContract, AddPortalAppBlockRequestContract, AddPortalAppBlockResponseContract, AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlankNoteBlockRequestContract, AddPortalBlankNoteBlockResponseContract, AddPortalBpmnDiagramBlockRequestContract, AddPortalBpmnDiagramBlockResponseContract, AddPortalCardBlockRequestContract, AddPortalCardBlockResponseContract, AddPortalCardGroupBlockRequestContract, AddPortalCardGroupBlockResponseContract, AddPortalCarouselBlockRequestContract, AddPortalCarouselBlockResponseContract, AddPortalChatBlockRequestContract, AddPortalChatBlockResponseContract, AddPortalChatsDashboardMenuItemRequestContract, AddPortalChatsDashboardMenuItemResponseContract, AddPortalCountdownBlockRequestContract, AddPortalCountdownBlockResponseContract, AddPortalCustomWidgetBlockRequestContract, AddPortalCustomWidgetBlockResponseContract, AddPortalDatabaseBlockRequestContract, AddPortalDatabaseBlockResponseContract, AddPortalDynamicTableBlockRequestContract, AddPortalDynamicTableBlockResponseContract, AddPortalEmbedBlockRequestContract, AddPortalEmbedBlockResponseContract, AddPortalFilesDashboardMenuItemRequestContract, AddPortalFilesDashboardMenuItemResponseContract, AddPortalFileUploaderBlockRequestContract, AddPortalFileUploaderBlockResponseContract, AddPortalFormBlockRequestContract, AddPortalFormBlockResponseContract, AddPortalHeadingBlockRequestContract, AddPortalHtmlCssBlockRequestContract, AddPortalHtmlCssBlockResponseContract, AddPortalImageBlockRequestContract, AddPortalInfoBlockRequestContract, AddPortalInfoBlockResponseContract, AddPortalInternalSpacePageRequestContract, AddPortalInternalSpacePageResponseContract, AddPortalKanbanBlockRequestContract, AddPortalKanbanBlockResponseContract, AddPortalLinkedBlockRequestContract, AddPortalLinkedBlockResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, AddPortalRecentFilesBlockRequestContract, AddPortalRecentFilesBlockResponseContract, AddPortalTaskListBlockRequestContract, AddPortalTaskListBlockResponseContract, AddPortalTasksDashboardMenuItemRequestContract, AddPortalTasksDashboardMenuItemResponseContract, AddPortalTextBlockRequestContract, AddPortalTimelineBlockRequestContract, AddPortalTimelineBlockResponseContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalLinkRequestContract, CreatePortalLinkResponseContract, CreatePortalPageRequestContract, CreatePortalPageResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DeletePortalItemResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, GetPortalBlockResponseContract, GetPortalPageBlockCountResponseContract, globalIdInPathRequired, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalAiAgentsResponseContract, ListPortalChatChannelsResponseContract, ListPortalChatUsersResponseContract, ListPortalContentResponseContract, ListPortalDatabaseBlockSourcesResponseContract, ListPortalLinkableBlocksResponseContract, ListPortalPageBlocksResponseContract, MovePortalBlockRequestContract, orgIdInPathRequired, OrgPortalListResponseContract, PortalDetailContract, PortalTextAndMediaBlockResponseContract, PublishPortalDraftResponseContract, SearchPortalInfoBlockIconsResponseContract, SetDashboardViewReadonlyRequestContract, SetDashboardViewReadonlyResponseContract, StagedPortalBlockResponseContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalAiAgentBlockRequestContract, UpdatePortalAppBlockRequestContract, UpdatePortalBpmnDiagramBlockRequestContract, UpdatePortalCardBlockRequestContract, UpdatePortalCardGroupBlockRequestContract, UpdatePortalCarouselBlockRequestContract, UpdatePortalChatBlockRequestContract, UpdatePortalContentPermissionsRequestContract, UpdatePortalContentPermissionsResponseContract, UpdatePortalCountdownBlockRequestContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract, UpdatePortalCustomWidgetBlockRequestContract, UpdatePortalDatabaseBlockRequestContract, UpdatePortalDynamicTableBlockRequestContract, UpdatePortalEmbedBlockRequestContract, UpdatePortalFileUploaderBlockRequestContract, UpdatePortalFormBlockRequestContract, UpdatePortalHomepageRequestContract, UpdatePortalHomepageResponseContract, UpdatePortalHtmlCssBlockRequestContract, UpdatePortalImageBlockRequestContract, UpdatePortalInfoBlockRequestContract, UpdatePortalItemRequestContract, UpdatePortalItemResponseContract, UpdatePortalLinkedBlockRequestContract, UpdatePortalNoteBlockRequestContract, UpdatePortalRecentFilesBlockRequestContract, UpdatePortalStyleRequestContract, UpdatePortalStyleResponseContract, UpdatePortalTextBlockRequestContract, UpdatePortalTimelineBlockRequestContract } from "../types";
8
+ import type { AddPortalAiAgentBlockRequestContract, AddPortalAiAgentBlockResponseContract, AddPortalAppBlockRequestContract, AddPortalAppBlockResponseContract, AddPortalAppPageRequestContract, AddPortalAppPageResponseContract, AddPortalBlankNoteBlockRequestContract, AddPortalBlankNoteBlockResponseContract, AddPortalBpmnDiagramBlockRequestContract, AddPortalBpmnDiagramBlockResponseContract, AddPortalCardBlockRequestContract, AddPortalCardBlockResponseContract, AddPortalCardGroupBlockRequestContract, AddPortalCardGroupBlockResponseContract, AddPortalCarouselBlockRequestContract, AddPortalCarouselBlockResponseContract, AddPortalChatBlockRequestContract, AddPortalChatBlockResponseContract, AddPortalChatsDashboardMenuItemRequestContract, AddPortalChatsDashboardMenuItemResponseContract, AddPortalCountdownBlockRequestContract, AddPortalCountdownBlockResponseContract, AddPortalCustomWidgetBlockRequestContract, AddPortalCustomWidgetBlockResponseContract, AddPortalDatabaseBlockRequestContract, AddPortalDatabaseBlockResponseContract, AddPortalDynamicTableBlockRequestContract, AddPortalDynamicTableBlockResponseContract, AddPortalEmbedBlockRequestContract, AddPortalEmbedBlockResponseContract, AddPortalFilesDashboardMenuItemRequestContract, AddPortalFilesDashboardMenuItemResponseContract, AddPortalFileUploaderBlockRequestContract, AddPortalFileUploaderBlockResponseContract, AddPortalFormBlockRequestContract, AddPortalFormBlockResponseContract, AddPortalHeadingBlockRequestContract, AddPortalHtmlCssBlockRequestContract, AddPortalHtmlCssBlockResponseContract, AddPortalImageBlockRequestContract, AddPortalInfoBlockRequestContract, AddPortalInfoBlockResponseContract, AddPortalInternalSpacePageRequestContract, AddPortalInternalSpacePageResponseContract, AddPortalKanbanBlockRequestContract, AddPortalKanbanBlockResponseContract, AddPortalLinkedBlockRequestContract, AddPortalLinkedBlockResponseContract, AddPortalNoteBlockRequestContract, AddPortalNoteBlockResponseContract, AddPortalRecentFilesBlockRequestContract, AddPortalRecentFilesBlockResponseContract, AddPortalTaskListBlockRequestContract, AddPortalTaskListBlockResponseContract, AddPortalTasksDashboardMenuItemRequestContract, AddPortalTasksDashboardMenuItemResponseContract, AddPortalTextBlockRequestContract, AddPortalTimelineBlockRequestContract, AddPortalTimelineBlockResponseContract, BulkInviteToPortalRequestContract, BulkInviteToPortalResponseContract, CreatePortalFolderRequestContract, CreatePortalFolderResponseContract, CreatePortalLinkRequestContract, CreatePortalLinkResponseContract, CreatePortalPageRequestContract, CreatePortalPageResponseContract, CreatePortalPageWithNoteRequestContract, CreatePortalPageWithNoteResponseContract, CreatePortalRequestContract, CreatePortalResponseContract, DeletePortalItemResponseContract, DuplicatePortalItemRequestContract, DuplicatePortalItemResponseContract, DuplicatePortalRequestContract, GetPortalBlockResponseContract, GetPortalPageBlockCountResponseContract, globalIdInPathRequired, InvitePortalManagerRequestContract, InvitePortalManagerResponseContract, InviteToPortalRequestContract, InviteToPortalResponseContract, ListPortalAiAgentsResponseContract, ListPortalChatChannelsResponseContract, ListPortalChatUsersResponseContract, ListPortalContentResponseContract, ListPortalDatabaseBlockSourcesResponseContract, ListPortalLinkableBlocksResponseContract, ListPortalPageBlocksResponseContract, MovePortalBlockRequestContract, orgIdInPathRequired, OrgPortalListResponseContract, PortalDetailContract, PortalStyleContractResponseContract, PortalTextAndMediaBlockResponseContract, PublishPortalDraftResponseContract, SearchPortalInfoBlockIconsResponseContract, SetDashboardViewReadonlyRequestContract, SetDashboardViewReadonlyResponseContract, StagedPortalBlockResponseContract, UpdatePortalAccessRequestContract, UpdatePortalAccessResponseContract, UpdatePortalAiAgentBlockRequestContract, UpdatePortalAppBlockRequestContract, UpdatePortalBpmnDiagramBlockRequestContract, UpdatePortalCardBlockRequestContract, UpdatePortalCardGroupBlockRequestContract, UpdatePortalCarouselBlockRequestContract, UpdatePortalChatBlockRequestContract, UpdatePortalContentPermissionsRequestContract, UpdatePortalContentPermissionsResponseContract, UpdatePortalCountdownBlockRequestContract, UpdatePortalCustomCodeRequestContract, UpdatePortalCustomCodeResponseContract, UpdatePortalCustomWidgetBlockRequestContract, UpdatePortalDatabaseBlockRequestContract, UpdatePortalDynamicTableBlockRequestContract, UpdatePortalEmbedBlockRequestContract, UpdatePortalFileUploaderBlockRequestContract, UpdatePortalFormBlockRequestContract, UpdatePortalHomepageRequestContract, UpdatePortalHomepageResponseContract, UpdatePortalHtmlCssBlockRequestContract, UpdatePortalImageBlockRequestContract, UpdatePortalInfoBlockRequestContract, UpdatePortalItemRequestContract, UpdatePortalItemResponseContract, UpdatePortalLinkedBlockRequestContract, UpdatePortalNoteBlockRequestContract, UpdatePortalRecentFilesBlockRequestContract, UpdatePortalStyleRequestContract, UpdatePortalStyleResponseContract, UpdatePortalTextBlockRequestContract, UpdatePortalTimelineBlockRequestContract } from "../types";
9
9
  export declare class PortalsApi {
10
10
  private client;
11
11
  constructor(client: Client);
@@ -567,6 +567,16 @@ export declare class PortalsApi {
567
567
  };
568
568
  headers?: Record<string, string>;
569
569
  }): Promise<GetPortalPageBlockCountResponseContract>;
570
+ /**
571
+ * Get the portal styling contract
572
+ * Returns the machine-readable styling contract for portals: the stable `data-portal` structural hooks and class hooks that custom CSS may target, how to write selectors that apply, a verified example override, and the anti-contract. Pull it at runtime instead of hard-coding hooks; `version` is the same value getPortal returns as `style.styleContractVersion`, so a consumer can cache the contract and refetch when it changes. The contract is the same for every portal — orgId only scopes access. Requires portals.read access.
573
+ */
574
+ getPortalStyleContract(params: {
575
+ path: {
576
+ orgId: orgIdInPathRequired;
577
+ };
578
+ headers?: Record<string, string>;
579
+ }): Promise<PortalStyleContractResponseContract>;
570
580
  /**
571
581
  * Invite a portal manager (customizer access)
572
582
  * Invites a user as a PORTAL MANAGER via a magic link. A manager has access to the portal customizer and can build, edit, and publish the portal (layout, settings, widgets, custom code); they always get full access to all portal pages. This is a dedicated shortcut for inviteToPortal with orgRole='manager' — no access question is needed (managers are always full access). Returns a magic link for direct portal/customizer access without email confirmation. Requires portals.manage access.
@@ -667,6 +667,20 @@ class PortalsApi {
667
667
  expectedContentType: "application/json",
668
668
  });
669
669
  }
670
+ /**
671
+ * Get the portal styling contract
672
+ * Returns the machine-readable styling contract for portals: the stable `data-portal` structural hooks and class hooks that custom CSS may target, how to write selectors that apply, a verified example override, and the anti-contract. Pull it at runtime instead of hard-coding hooks; `version` is the same value getPortal returns as `style.styleContractVersion`, so a consumer can cache the contract and refetch when it changes. The contract is the same for every portal — orgId only scopes access. Requires portals.read access.
673
+ */
674
+ async getPortalStyleContract(params) {
675
+ return this.client.request({
676
+ method: "GET",
677
+ path: "/:orgId/portal-style-contract",
678
+ pathParams: params.path,
679
+ headers: params.headers,
680
+ opId: "getPortalStyleContract",
681
+ expectedContentType: "application/json",
682
+ });
683
+ }
670
684
  /**
671
685
  * Invite a portal manager (customizer access)
672
686
  * Invites a user as a PORTAL MANAGER via a magic link. A manager has access to the portal customizer and can build, edit, and publish the portal (layout, settings, widgets, custom code); they always get full access to all portal pages. This is a dedicated shortcut for inviteToPortal with orgRole='manager' — no access question is needed (managers are always full access). Returns a magic link for direct portal/customizer access without email confirmation. Requires portals.manage access.
package/dist/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export { NotesApi } from "./apis/NotesApi";
20
20
  export { OrgGroupsApi } from "./apis/OrgGroupsApi";
21
21
  export { OrgUsersApi } from "./apis/OrgUsersApi";
22
22
  export { OrgsApi } from "./apis/OrgsApi";
23
+ export { PaperclipAgentsApi } from "./apis/PaperclipAgentsApi";
23
24
  export { PaperclipServicesApi } from "./apis/PaperclipServicesApi";
24
25
  export { PortalFeatureContextApi } from "./apis/PortalFeatureContextApi";
25
26
  export { PortalsApi } from "./apis/PortalsApi";
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.WorkspacesApi = exports.TokensApi = exports.SystemApi = exports.PortalsApi = exports.PortalFeatureContextApi = exports.PaperclipServicesApi = exports.OrgsApi = exports.OrgUsersApi = exports.OrgGroupsApi = exports.NotesApi = exports.McpManagerApi = exports.IsolatedStoresApi = exports.HealthApi = exports.FusebaseAuthApi = exports.FilesApi = exports.EmailsApi = exports.BillingApi = exports.AppMagicLinksApi = exports.AppEmbedTargetsApi = exports.AppApisApi = exports.AccessApi = void 0;
22
+ exports.WorkspacesApi = exports.TokensApi = exports.SystemApi = exports.PortalsApi = exports.PortalFeatureContextApi = exports.PaperclipServicesApi = exports.PaperclipAgentsApi = exports.OrgsApi = exports.OrgUsersApi = exports.OrgGroupsApi = exports.NotesApi = exports.McpManagerApi = exports.IsolatedStoresApi = exports.HealthApi = exports.FusebaseAuthApi = exports.FilesApi = exports.EmailsApi = exports.BillingApi = exports.AppMagicLinksApi = exports.AppEmbedTargetsApi = exports.AppApisApi = exports.AccessApi = void 0;
23
23
  __exportStar(require("./runtime"), exports);
24
24
  __exportStar(require("./types"), exports);
25
25
  var AccessApi_1 = require("./apis/AccessApi");
@@ -52,6 +52,8 @@ var OrgUsersApi_1 = require("./apis/OrgUsersApi");
52
52
  Object.defineProperty(exports, "OrgUsersApi", { enumerable: true, get: function () { return OrgUsersApi_1.OrgUsersApi; } });
53
53
  var OrgsApi_1 = require("./apis/OrgsApi");
54
54
  Object.defineProperty(exports, "OrgsApi", { enumerable: true, get: function () { return OrgsApi_1.OrgsApi; } });
55
+ var PaperclipAgentsApi_1 = require("./apis/PaperclipAgentsApi");
56
+ Object.defineProperty(exports, "PaperclipAgentsApi", { enumerable: true, get: function () { return PaperclipAgentsApi_1.PaperclipAgentsApi; } });
55
57
  var PaperclipServicesApi_1 = require("./apis/PaperclipServicesApi");
56
58
  Object.defineProperty(exports, "PaperclipServicesApi", { enumerable: true, get: function () { return PaperclipServicesApi_1.PaperclipServicesApi; } });
57
59
  var PortalFeatureContextApi_1 = require("./apis/PortalFeatureContextApi");
@@ -40,6 +40,38 @@ export interface PublishedAppListResponseContract {
40
40
  apps: PublishedAppContract[];
41
41
  total: number;
42
42
  }
43
+ export interface AppApiManifestOperationContract {
44
+ operationId: string;
45
+ method: string;
46
+ path: string;
47
+ summary?: string;
48
+ description?: string;
49
+ tags?: string[];
50
+ visibility?: string;
51
+ executionMode?: string;
52
+ allowedCallers?: string[];
53
+ requiredPermissions?: string[];
54
+ }
55
+ export interface AppApiRegistryManifestContract {
56
+ kind: "app-api-registry";
57
+ format: "openapi";
58
+ schemaVersion: string;
59
+ sourceFile: string;
60
+ publishedAt: string;
61
+ info: {
62
+ title: string;
63
+ version: string;
64
+ };
65
+ openapiVersion: string;
66
+ operations: AppApiManifestOperationContract[];
67
+ document: Record<string, unknown>;
68
+ }
69
+ export interface PublishedAppApiManifestContract {
70
+ productId: string;
71
+ appId: string;
72
+ title: string;
73
+ manifest: AppApiRegistryManifestContract;
74
+ }
43
75
  export interface CallAppApiRequestContract {
44
76
  path?: Record<string, string>;
45
77
  query?: Record<string, string | number | boolean>;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export type { AuthenticatedUserSummaryContract, MyOrgAccessResponseContract } from "./access/access";
8
8
  export type { AppAccessPrincipalContract, RemoveAppAccessPrincipalRequestContract, RemoveAppAccessPrincipalResponseContract } from "./app-access-principal/app-access-principal";
9
- export type { AppApiOperationContract, AppApiOperationListResponseContract, CallAppApiRequestContract, CallAppApiResponseContract, PublishedAppContract, PublishedAppListResponseContract, VerifyAppApiContractsRequestContract, VerifyAppApiContractsResponseContract, VerifyCaseResultContract } from "./app-api/app-api";
9
+ export type { AppApiManifestOperationContract, AppApiOperationContract, AppApiOperationListResponseContract, AppApiRegistryManifestContract, CallAppApiRequestContract, CallAppApiResponseContract, PublishedAppApiManifestContract, PublishedAppContract, PublishedAppListResponseContract, VerifyAppApiContractsRequestContract, VerifyAppApiContractsResponseContract, VerifyCaseResultContract } from "./app-api/app-api";
10
10
  export type { AppPortalEmbedContract, ListAppPortalEmbedsResponseContract } from "./app-embed-targets/app-embed-targets";
11
11
  export type { ActivateAppMagicLinkResponseContract, AppMagicLinkSummaryContract, BulkAppMagicLinkInvitationContract, BulkAppMagicLinkResultItemContract, BulkCreateAppMagicLinksRequestContract, BulkCreateAppMagicLinksResponseContract, CreateAppClientInviteRequestContract, CreateAppMagicLinkRequestContract, CreateAppMagicLinkResponseContract, ListAppMagicLinksResponseContract, RequestAppMagicLinkRequestContract, RequestAppMagicLinkResponseContract, RevokeAppMagicLinkResponseContract } from "./app-magic-link/app-magic-link";
12
12
  export * from "./billing/billing";
@@ -20,6 +20,7 @@ export * from "./note/note";
20
20
  export * from "./org-group/org-group";
21
21
  export type { ClientAccountScheduledDeletionRequestContract, ClientAccountScheduledDeletionResponseContract, CreateWorkspaceRequestContract, OrgInviteContract, OrgMagicLinkContract, OrgMemberExpectedJoinedAfterInQueryOptional, OrgMemberExpectedRoleInQueryOptional, OrgMemberRemoveResponseContract, OrgPortalContract, OrgPortalListResponseContract, OrgUserAddRequestContract, OrgUserAddResponseContract, OrgUserContract, OrgUserIdInPathRequired, OrgUserListResponseContract, OrgUserWorkspaceIdInPathRequired, OrgWorkspaceContract, OrgWorkspaceInviteContract, OrgWorkspaceListResponseContract, OrgWorkspaceMemberContract, OrgWorkspaceMemberListResponseContract, WorkspaceMemberRemoveResponseContract } from "./org-user/org-user";
22
22
  export * from "./orgs/orgs";
23
+ export type { CreatePaperclipAgentTaskRequestContract, PaperclipAgentRunContract, PaperclipAgentTaskAcceptedContract, PaperclipAgentTaskContract, PaperclipAgentTaskIdInPathRequired, PaperclipAgentTaskStatusContract, PaperclipCallableAgentContract, PaperclipCallableAgentListContract } from "./paperclip-agents/paperclip-agents";
23
24
  export * from "./paperclip-services/paperclip-services";
24
25
  export type { VerifyPortalFeatureContextTokenRequestContract, VerifyPortalFeatureContextTokenResponseContract } from "./portal-feature-context/portal-feature-context";
25
26
  export * from "./portals/portals";
@@ -51,6 +51,13 @@ export interface OrgUserAddRequestContract {
51
51
  * is omitted.
52
52
  */
53
53
  autoConfirmClientInvite?: boolean;
54
+ /**
55
+ * Org-only shortcut for service accounts (bots): when the email already has
56
+ * a Fusebase account, add it as an org member right away with `orgRole`
57
+ * instead of sending an invite email a bot can never click. Falls back to a
58
+ * normal invite when no account exists yet. Requires `workspaceId` omitted.
59
+ */
60
+ autoConfirmInvite?: boolean;
54
61
  }
55
62
  export interface OrgInviteContract {
56
63
  id: number;
@@ -0,0 +1,50 @@
1
+ export type PaperclipAgentTaskIdInPathRequired = string;
2
+ export interface PaperclipCallableAgentContract {
3
+ id: string;
4
+ name: string;
5
+ role: string;
6
+ title?: string | null;
7
+ status: string;
8
+ capabilities?: string | null;
9
+ }
10
+ export interface PaperclipCallableAgentListContract {
11
+ agents: PaperclipCallableAgentContract[];
12
+ total: number;
13
+ }
14
+ export interface CreatePaperclipAgentTaskRequestContract {
15
+ agentId: string;
16
+ title: string;
17
+ description?: string | null;
18
+ externalRef?: string;
19
+ }
20
+ export interface PaperclipAgentTaskContract {
21
+ id: string;
22
+ identifier?: string | null;
23
+ title: string;
24
+ description?: string | null;
25
+ status: string;
26
+ assigneeAgentId?: string | null;
27
+ originKind: string;
28
+ originId?: string | null;
29
+ createdAt?: string;
30
+ updatedAt?: string;
31
+ completedAt?: string | null;
32
+ }
33
+ export interface PaperclipAgentTaskAcceptedContract {
34
+ task: PaperclipAgentTaskContract;
35
+ reused: boolean;
36
+ }
37
+ export interface PaperclipAgentRunContract {
38
+ id: string;
39
+ status: string;
40
+ startedAt?: string | null;
41
+ finishedAt?: string | null;
42
+ error?: string | null;
43
+ stdoutExcerpt?: string | null;
44
+ }
45
+ export interface PaperclipAgentTaskStatusContract {
46
+ task: PaperclipAgentTaskContract;
47
+ latestRun: PaperclipAgentRunContract | null;
48
+ comments: Record<string, unknown>[];
49
+ workProducts: Record<string, unknown>[];
50
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -2926,6 +2926,12 @@ export interface PortalDetailContract {
2926
2926
  }
2927
2927
  /** Published branding of a portal, as stored in its theme. */
2928
2928
  export interface PortalStyleContract {
2929
+ /**
2930
+ * Version of the portal styling contract this portal renders with. Compare it
2931
+ * against a cached value to detect a breaking change; call
2932
+ * getPortalStyleContract for the contract itself.
2933
+ */
2934
+ styleContractVersion: string;
2929
2935
  /** Color theme key. Absent when the portal never had one set explicitly. */
2930
2936
  theme?: PortalThemeKey;
2931
2937
  /** Logo image URL, as rendered in the portal header. */
@@ -2933,6 +2939,34 @@ export interface PortalStyleContract {
2933
2939
  /** Favicon image URL, used as the portal's browser tab icon. */
2934
2940
  faviconUrl?: string;
2935
2941
  }
2942
+ /**
2943
+ * The portal styling contract: the stable hooks custom CSS may target. Mirrors
2944
+ * PORTAL_STYLE_CONTRACT in nx-frontend, where a CI guard fails the portal build
2945
+ * if any hook below disappears from the source.
2946
+ */
2947
+ export interface PortalStyleContractResponseContract {
2948
+ /**
2949
+ * Contract version. Removing or renaming a hook bumps the major, adding one
2950
+ * bumps the minor.
2951
+ */
2952
+ version: string;
2953
+ /**
2954
+ * Preferred surface: `data-portal` attribute values, targeted as
2955
+ * `[data-portal="sidebar"]`.
2956
+ */
2957
+ structuralHooks: string[];
2958
+ /** Legacy stable class hooks, also part of the contract, e.g. `.container`. */
2959
+ classHooks: string[];
2960
+ /** How to write CSS that actually applies. */
2961
+ usage: string;
2962
+ /** A working override, verified against the portal build. */
2963
+ canonicalOverride: string;
2964
+ /**
2965
+ * Things that look styleable but are not part of the contract, each written
2966
+ * as a sentence explaining why targeting it fails.
2967
+ */
2968
+ antiContract: string[];
2969
+ }
2936
2970
  export interface UpdatePortalStyleRequestContract {
2937
2971
  /** Color theme to apply, the same picker the customizer's Theme screen shows. */
2938
2972
  theme?: PortalThemeKey;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusebase/fusebase-gate-sdk",
3
- "version": "2.10.1-sdk.0",
3
+ "version": "2.11.1",
4
4
  "description": "TypeScript SDK for Fusebase Gate APIs - Generated from contract introspection",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -0,0 +1,80 @@
1
+ # Release Notes 2.11.0
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.11.0`
5
+ - Generated at: 2026-08-27T10:06:16.345Z
6
+
7
+ ## Included Drafts
8
+
9
+ - `docs/release-notes/2026-08-26-owner-delegated-private-app-apis.md` - Owner-delegated private App APIs
10
+ - `docs/release-notes/2026-08-27-fusebase-app-work-agent-calls.md` - FuseBase Apps can invoke Work agents
11
+
12
+ ## Summary
13
+
14
+ ### Owner-delegated private App APIs
15
+
16
+ FuseBase Work connections may invoke a private AI App API operation when the
17
+ stored Gate token is bound to a user who currently has access to private App API
18
+ operations.
19
+
20
+ ### FuseBase Apps can invoke Work agents
21
+
22
+ Adds an organization-scoped asynchronous bridge for FuseBase App backends to list FuseBase Work agents, create assigned tasks, and poll task results. The bridge is disabled unless the `app_agent_invocation` Gate feature flag is enabled.
23
+
24
+
25
+ ## API / SDK Changes
26
+
27
+ ### Owner-delegated private App APIs
28
+
29
+ No request or response contracts changed. The App API call endpoint now accepts
30
+ a private operation after Nimbus AI's user-aware operation lookup authorizes it.
31
+ The lower-level runtime call service remains fail-closed without that explicit
32
+ authorization result.
33
+
34
+ ### FuseBase Apps can invoke Work agents
35
+
36
+ - Added `listPaperclipCallableAgents` (`GET /:orgId/paperclip-agents`).
37
+ - Added `createPaperclipAgentTask` (`POST /:orgId/paperclip-agents/tasks`).
38
+ - Added `getPaperclipAgentTask` (`GET /:orgId/paperclip-agents/tasks/:taskId`).
39
+ - Added backend permissions `paperclip_agents.read` and `paperclip_agents.invoke`.
40
+ - Regenerated OpenAPI and TypeScript SDK artifacts.
41
+
42
+
43
+ ## Consumer Impact
44
+
45
+ ### Owner-delegated private App APIs
46
+
47
+ Owners can connect private AI App APIs to FuseBase Work without changing their
48
+ OpenAPI visibility to `org`. Non-owner and cross-organization callers continue
49
+ to be denied by Nimbus AI's operation lookup.
50
+
51
+ ### FuseBase Apps can invoke Work agents
52
+
53
+ App backends must use a user-bound Gate token for the same organization and explicitly request the new permissions. Supplying `externalRef` when creating a task makes retries idempotent. Browser clients should not receive tokens carrying `paperclip_agents.invoke`.
54
+
55
+
56
+ ## Verification
57
+
58
+ ### Owner-delegated private App APIs
59
+
60
+ - Unit coverage confirms an authorized private operation reaches the runtime.
61
+ - Unit coverage confirms a denied private-operation lookup never reaches the runtime.
62
+ - Existing service coverage confirms direct low-level private calls remain denied.
63
+
64
+ ### FuseBase Apps can invoke Work agents
65
+
66
+ - Gate TypeScript build passes.
67
+ - Nimbus AI forwarding routes compile; its repository-wide build remains blocked by pre-existing database config and stale coupon-test type errors.
68
+ - Paperclip server typecheck passes; its embedded PostgreSQL integration test is skipped where embedded PostgreSQL is unavailable.
69
+
70
+
71
+ ## Follow-ups
72
+
73
+ ### Owner-delegated private App APIs
74
+
75
+ None.
76
+
77
+ ### FuseBase Apps can invoke Work agents
78
+
79
+ - Add optional signed webhook delivery after polling behavior is proven in dev.
80
+ - Add the permissions to selected App backend manifests; do not add them to browser/default client token sets.
@@ -0,0 +1,9 @@
1
+ # Release Notes 2.11.1
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.11.1`
5
+ - Generated at: 2026-08-28T07:03:30.074Z
6
+
7
+ ## Included Drafts
8
+
9
+ - None
@@ -1,8 +1,8 @@
1
- # Release Notes 2.10.1-sdk.0
1
+ # Release Notes 2.11.1
2
2
 
3
3
  - Current ref: `HEAD`
4
- - Previous tag: `v2.10.1-sdk.0`
5
- - Generated at: 2026-08-25T08:32:52.825Z
4
+ - Previous tag: `v2.11.1`
5
+ - Generated at: 2026-08-28T07:03:30.074Z
6
6
 
7
7
  ## Included Drafts
8
8
 
@@ -1,9 +0,0 @@
1
- # Release Notes 2.10.1-sdk.0
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.10.1-sdk.0`
5
- - Generated at: 2026-08-25T08:32:52.825Z
6
-
7
- ## Included Drafts
8
-
9
- - None