@fusebase/fusebase-gate-sdk 2.7.0 → 2.7.1-sdk.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.
@@ -0,0 +1,124 @@
1
+ /**
2
+ * PaperclipServices API
3
+ *
4
+ * Generated from contract introspection
5
+ * Domain: paperclip-services
6
+ */
7
+ import type { Client } from "../runtime/transport";
8
+ import type { orgIdInPathRequired, PaperclipServiceAppKeyInPathRequired, PaperclipServiceBackupRequestContract, PaperclipServiceInstallRequestContract, PaperclipServiceInstallResultContract, PaperclipServiceOperationContract, PaperclipServiceOperationIdInPathRequired, PaperclipServiceOperationRequestContract, PaperclipServiceRestoreRequestContract, PaperclipServiceRetryRequestContract, PaperclipServicesCapabilitiesContract, PaperclipServicesCapacityContract, PaperclipServicesHealthContract, PaperclipServiceUpgradeRequestContract } from "../types";
9
+ export declare class PaperclipServicesApi {
10
+ private client;
11
+ constructor(client: Client);
12
+ /**
13
+ * Back up a Paperclip Service
14
+ * Starts an idempotent retained backup operation.
15
+ */
16
+ backupPaperclipService(params: {
17
+ path: {
18
+ orgId: orgIdInPathRequired;
19
+ appKey: PaperclipServiceAppKeyInPathRequired;
20
+ };
21
+ headers?: Record<string, string>;
22
+ body: PaperclipServiceBackupRequestContract;
23
+ }): Promise<PaperclipServiceOperationContract>;
24
+ /**
25
+ * Delete a Paperclip Service
26
+ * Starts an idempotent Nimbus-backed deletion operation for an installed service.
27
+ */
28
+ deletePaperclipService(params: {
29
+ path: {
30
+ orgId: orgIdInPathRequired;
31
+ appKey: PaperclipServiceAppKeyInPathRequired;
32
+ };
33
+ headers?: Record<string, string>;
34
+ body: PaperclipServiceOperationRequestContract;
35
+ }): Promise<PaperclipServiceOperationContract>;
36
+ /**
37
+ * Get a Paperclip Service operation
38
+ * Returns the durable Nimbus lifecycle operation state.
39
+ */
40
+ getPaperclipServiceOperation(params: {
41
+ path: {
42
+ orgId: orgIdInPathRequired;
43
+ operationId: PaperclipServiceOperationIdInPathRequired;
44
+ };
45
+ headers?: Record<string, string>;
46
+ }): Promise<PaperclipServiceOperationContract>;
47
+ /**
48
+ * Get Paperclip Services capabilities
49
+ * Returns Nimbus-backed service availability and entitlement for an org-scoped Paperclip service token.
50
+ */
51
+ getPaperclipServicesCapabilities(params: {
52
+ path: {
53
+ orgId: orgIdInPathRequired;
54
+ };
55
+ headers?: Record<string, string>;
56
+ }): Promise<PaperclipServicesCapabilitiesContract>;
57
+ /**
58
+ * Get Paperclip Services capacity
59
+ * Returns reserved, used, and available service capacity for the token-scoped organization.
60
+ */
61
+ getPaperclipServicesCapacity(params: {
62
+ path: {
63
+ orgId: orgIdInPathRequired;
64
+ };
65
+ headers?: Record<string, string>;
66
+ }): Promise<PaperclipServicesCapacityContract>;
67
+ /**
68
+ * Get Paperclip Services health
69
+ * Returns observed workloads, alerts, and reconciliation state for the token-scoped organization.
70
+ */
71
+ getPaperclipServicesHealth(params: {
72
+ path: {
73
+ orgId: orgIdInPathRequired;
74
+ };
75
+ headers?: Record<string, string>;
76
+ }): Promise<PaperclipServicesHealthContract>;
77
+ /**
78
+ * Install a Paperclip Service
79
+ * Starts an idempotent Nimbus-backed installation operation for the token-scoped organization.
80
+ */
81
+ installPaperclipService(params: {
82
+ path: {
83
+ orgId: orgIdInPathRequired;
84
+ };
85
+ headers?: Record<string, string>;
86
+ body: PaperclipServiceInstallRequestContract;
87
+ }): Promise<PaperclipServiceInstallResultContract>;
88
+ /**
89
+ * Restore a Paperclip Service
90
+ * Starts an idempotent restore from a verified retained backup.
91
+ */
92
+ restorePaperclipService(params: {
93
+ path: {
94
+ orgId: orgIdInPathRequired;
95
+ appKey: PaperclipServiceAppKeyInPathRequired;
96
+ };
97
+ headers?: Record<string, string>;
98
+ body: PaperclipServiceRestoreRequestContract;
99
+ }): Promise<PaperclipServiceOperationContract>;
100
+ /**
101
+ * Retry a Paperclip Service operation
102
+ * Starts an idempotent retry for the requested lifecycle action.
103
+ */
104
+ retryPaperclipService(params: {
105
+ path: {
106
+ orgId: orgIdInPathRequired;
107
+ appKey: PaperclipServiceAppKeyInPathRequired;
108
+ };
109
+ headers?: Record<string, string>;
110
+ body: PaperclipServiceRetryRequestContract;
111
+ }): Promise<PaperclipServiceOperationContract>;
112
+ /**
113
+ * Upgrade a Paperclip Service
114
+ * Starts an idempotent upgrade to an approved manifest revision.
115
+ */
116
+ upgradePaperclipService(params: {
117
+ path: {
118
+ orgId: orgIdInPathRequired;
119
+ appKey: PaperclipServiceAppKeyInPathRequired;
120
+ };
121
+ headers?: Record<string, string>;
122
+ body: PaperclipServiceUpgradeRequestContract;
123
+ }): Promise<PaperclipServiceOperationContract>;
124
+ }
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * PaperclipServices API
4
+ *
5
+ * Generated from contract introspection
6
+ * Domain: paperclip-services
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PaperclipServicesApi = void 0;
10
+ class PaperclipServicesApi {
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ /**
15
+ * Back up a Paperclip Service
16
+ * Starts an idempotent retained backup operation.
17
+ */
18
+ async backupPaperclipService(params) {
19
+ return this.client.request({
20
+ method: "POST",
21
+ path: "/:orgId/paperclip-services/installations/:appKey/backup",
22
+ pathParams: params.path,
23
+ headers: params.headers,
24
+ body: params.body,
25
+ opId: "backupPaperclipService",
26
+ expectedContentType: "application/json",
27
+ });
28
+ }
29
+ /**
30
+ * Delete a Paperclip Service
31
+ * Starts an idempotent Nimbus-backed deletion operation for an installed service.
32
+ */
33
+ async deletePaperclipService(params) {
34
+ return this.client.request({
35
+ method: "DELETE",
36
+ path: "/:orgId/paperclip-services/installations/:appKey",
37
+ pathParams: params.path,
38
+ headers: params.headers,
39
+ body: params.body,
40
+ opId: "deletePaperclipService",
41
+ expectedContentType: "application/json",
42
+ });
43
+ }
44
+ /**
45
+ * Get a Paperclip Service operation
46
+ * Returns the durable Nimbus lifecycle operation state.
47
+ */
48
+ async getPaperclipServiceOperation(params) {
49
+ return this.client.request({
50
+ method: "GET",
51
+ path: "/:orgId/paperclip-services/operations/:operationId",
52
+ pathParams: params.path,
53
+ headers: params.headers,
54
+ opId: "getPaperclipServiceOperation",
55
+ expectedContentType: "application/json",
56
+ });
57
+ }
58
+ /**
59
+ * Get Paperclip Services capabilities
60
+ * Returns Nimbus-backed service availability and entitlement for an org-scoped Paperclip service token.
61
+ */
62
+ async getPaperclipServicesCapabilities(params) {
63
+ return this.client.request({
64
+ method: "GET",
65
+ path: "/:orgId/paperclip-services/capabilities",
66
+ pathParams: params.path,
67
+ headers: params.headers,
68
+ opId: "getPaperclipServicesCapabilities",
69
+ expectedContentType: "application/json",
70
+ });
71
+ }
72
+ /**
73
+ * Get Paperclip Services capacity
74
+ * Returns reserved, used, and available service capacity for the token-scoped organization.
75
+ */
76
+ async getPaperclipServicesCapacity(params) {
77
+ return this.client.request({
78
+ method: "GET",
79
+ path: "/:orgId/paperclip-services/capacity",
80
+ pathParams: params.path,
81
+ headers: params.headers,
82
+ opId: "getPaperclipServicesCapacity",
83
+ expectedContentType: "application/json",
84
+ });
85
+ }
86
+ /**
87
+ * Get Paperclip Services health
88
+ * Returns observed workloads, alerts, and reconciliation state for the token-scoped organization.
89
+ */
90
+ async getPaperclipServicesHealth(params) {
91
+ return this.client.request({
92
+ method: "GET",
93
+ path: "/:orgId/paperclip-services/health",
94
+ pathParams: params.path,
95
+ headers: params.headers,
96
+ opId: "getPaperclipServicesHealth",
97
+ expectedContentType: "application/json",
98
+ });
99
+ }
100
+ /**
101
+ * Install a Paperclip Service
102
+ * Starts an idempotent Nimbus-backed installation operation for the token-scoped organization.
103
+ */
104
+ async installPaperclipService(params) {
105
+ return this.client.request({
106
+ method: "POST",
107
+ path: "/:orgId/paperclip-services/installations",
108
+ pathParams: params.path,
109
+ headers: params.headers,
110
+ body: params.body,
111
+ opId: "installPaperclipService",
112
+ expectedContentType: "application/json",
113
+ });
114
+ }
115
+ /**
116
+ * Restore a Paperclip Service
117
+ * Starts an idempotent restore from a verified retained backup.
118
+ */
119
+ async restorePaperclipService(params) {
120
+ return this.client.request({
121
+ method: "POST",
122
+ path: "/:orgId/paperclip-services/installations/:appKey/restore",
123
+ pathParams: params.path,
124
+ headers: params.headers,
125
+ body: params.body,
126
+ opId: "restorePaperclipService",
127
+ expectedContentType: "application/json",
128
+ });
129
+ }
130
+ /**
131
+ * Retry a Paperclip Service operation
132
+ * Starts an idempotent retry for the requested lifecycle action.
133
+ */
134
+ async retryPaperclipService(params) {
135
+ return this.client.request({
136
+ method: "POST",
137
+ path: "/:orgId/paperclip-services/installations/:appKey/retry",
138
+ pathParams: params.path,
139
+ headers: params.headers,
140
+ body: params.body,
141
+ opId: "retryPaperclipService",
142
+ expectedContentType: "application/json",
143
+ });
144
+ }
145
+ /**
146
+ * Upgrade a Paperclip Service
147
+ * Starts an idempotent upgrade to an approved manifest revision.
148
+ */
149
+ async upgradePaperclipService(params) {
150
+ return this.client.request({
151
+ method: "POST",
152
+ path: "/:orgId/paperclip-services/installations/:appKey/upgrade",
153
+ pathParams: params.path,
154
+ headers: params.headers,
155
+ body: params.body,
156
+ opId: "upgradePaperclipService",
157
+ expectedContentType: "application/json",
158
+ });
159
+ }
160
+ }
161
+ exports.PaperclipServicesApi = PaperclipServicesApi;
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 { PaperclipServicesApi } from "./apis/PaperclipServicesApi";
23
24
  export { PortalFeatureContextApi } from "./apis/PortalFeatureContextApi";
24
25
  export { PortalsApi } from "./apis/PortalsApi";
25
26
  export { SystemApi } from "./apis/SystemApi";
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.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.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 PaperclipServicesApi_1 = require("./apis/PaperclipServicesApi");
56
+ Object.defineProperty(exports, "PaperclipServicesApi", { enumerable: true, get: function () { return PaperclipServicesApi_1.PaperclipServicesApi; } });
55
57
  var PortalFeatureContextApi_1 = require("./apis/PortalFeatureContextApi");
56
58
  Object.defineProperty(exports, "PortalFeatureContextApi", { enumerable: true, get: function () { return PortalFeatureContextApi_1.PortalFeatureContextApi; } });
57
59
  var PortalsApi_1 = require("./apis/PortalsApi");
@@ -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 * from "./paperclip-services/paperclip-services";
23
24
  export type { VerifyPortalFeatureContextTokenRequestContract, VerifyPortalFeatureContextTokenResponseContract } from "./portal-feature-context/portal-feature-context";
24
25
  export * from "./portals/portals";
25
26
  export * from "./shared/common";
@@ -27,6 +27,7 @@ __exportStar(require("./mcp-manager/mcp-manager"), exports);
27
27
  __exportStar(require("./note/note"), exports);
28
28
  __exportStar(require("./org-group/org-group"), exports);
29
29
  __exportStar(require("./orgs/orgs"), exports);
30
+ __exportStar(require("./paperclip-services/paperclip-services"), exports);
30
31
  __exportStar(require("./portals/portals"), exports);
31
32
  __exportStar(require("./shared/common"), exports);
32
33
  __exportStar(require("./shared/enums"), exports);
@@ -0,0 +1,142 @@
1
+ export type PaperclipServicesEntitlementSourceContract = "advanced_subscription" | "ltd_coupons" | "ineligible";
2
+ export type PaperclipServicesEntitlementErrorCodeContract = "ltd_coupons_below_minimum" | "ineligible" | "unavailable";
3
+ export interface PaperclipServicesEntitlementContract {
4
+ eligible: boolean;
5
+ source: PaperclipServicesEntitlementSourceContract;
6
+ couponCount: number | null;
7
+ evaluatedAt: string;
8
+ errorCode?: PaperclipServicesEntitlementErrorCodeContract;
9
+ message?: string;
10
+ }
11
+ export interface PaperclipServicesCapabilitiesContract {
12
+ provider: string;
13
+ providerVersion: string;
14
+ architecture: string;
15
+ featureAvailable: boolean;
16
+ entitlement?: PaperclipServicesEntitlementContract;
17
+ }
18
+ export interface PaperclipServicesResourceUsageContract {
19
+ cpu: string;
20
+ memory: string;
21
+ storage: string;
22
+ pods: number;
23
+ persistentVolumeClaims: number;
24
+ }
25
+ export interface PaperclipServicesCapacityContract {
26
+ currentProfile: string;
27
+ reserved: PaperclipServicesResourceUsageContract;
28
+ used: PaperclipServicesResourceUsageContract;
29
+ available: PaperclipServicesResourceUsageContract;
30
+ eligibleNextProfiles: string[];
31
+ }
32
+ export type PaperclipServicesComponentKindContract = "Deployment" | "StatefulSet";
33
+ export type PaperclipServicesComponentStatusContract = "healthy" | "degraded" | "unhealthy" | "unknown";
34
+ export interface PaperclipServicesComponentHealthContract {
35
+ appKey: string;
36
+ component: string;
37
+ kind: PaperclipServicesComponentKindContract;
38
+ status: PaperclipServicesComponentStatusContract;
39
+ desiredReplicas: number;
40
+ readyReplicas: number;
41
+ restartCount: number;
42
+ manifestRevision?: string;
43
+ reason?: string;
44
+ }
45
+ export interface PaperclipServicesHealthAlertContract {
46
+ code: string;
47
+ severity: "warning" | "critical";
48
+ message: string;
49
+ appKey?: string;
50
+ component?: string;
51
+ }
52
+ export interface PaperclipServicesHealthContract {
53
+ status: "healthy" | "degraded" | "unavailable";
54
+ checkedAt: string;
55
+ components: PaperclipServicesComponentHealthContract[];
56
+ alerts: PaperclipServicesHealthAlertContract[];
57
+ operations: {
58
+ pending: number;
59
+ running: number;
60
+ staleClaims: number;
61
+ needsManualReview: number;
62
+ };
63
+ reconciliation: {
64
+ orphanedWorkloads: number;
65
+ outdatedManifests: number;
66
+ };
67
+ }
68
+ export type PaperclipServiceAppKeyContract = "n8n" | "firecrawl";
69
+ export type PaperclipServiceAppKeyInPathRequired = string;
70
+ export type PaperclipServiceOperationIdInPathRequired = string;
71
+ export interface PaperclipServiceOperationRequestContract {
72
+ orgRuntimeIdentity: string;
73
+ managedCompanyId: string;
74
+ operationId: string;
75
+ idempotencyKey: string;
76
+ providerRef?: string;
77
+ }
78
+ export interface PaperclipServiceInstallRequestContract extends PaperclipServiceOperationRequestContract {
79
+ appKey: PaperclipServiceAppKeyContract;
80
+ approvedManifestRevision: string;
81
+ }
82
+ export interface PaperclipServiceUpgradeRequestContract extends PaperclipServiceOperationRequestContract {
83
+ appKey: PaperclipServiceAppKeyContract;
84
+ approvedManifestRevision: string;
85
+ }
86
+ export interface PaperclipServiceBackupRequestContract extends PaperclipServiceOperationRequestContract {
87
+ manifestRevision: string;
88
+ }
89
+ export interface PaperclipServiceRestoreRequestContract extends PaperclipServiceOperationRequestContract {
90
+ backupProviderRequestId: string;
91
+ }
92
+ export interface PaperclipServiceRetryRequestContract extends PaperclipServiceOperationRequestContract {
93
+ action: "install" | "delete" | "upgrade" | "backup" | "restore";
94
+ }
95
+ export type PaperclipServiceOperationStatusContract = "pending" | "running" | "succeeded" | "failed" | "needs_manual_review";
96
+ export interface PaperclipServiceOperationContract {
97
+ providerRequestId: string;
98
+ status: PaperclipServiceOperationStatusContract;
99
+ providerRef?: string;
100
+ providerRouteRef?: string;
101
+ observedState: Record<string, unknown>;
102
+ error?: string;
103
+ }
104
+ export interface PaperclipServiceInstallResultContract {
105
+ outcome: "accepted" | "insufficient_capacity";
106
+ operation?: PaperclipServiceOperationContract;
107
+ requested?: PaperclipServicesResourceUsageContract;
108
+ available?: PaperclipServicesResourceUsageContract;
109
+ requiredProfile?: string;
110
+ eligibleProfiles?: string[];
111
+ }
112
+ export declare const PaperclipServicesEntitlementSourceContract: {
113
+ readonly AdvancedSubscription: "advanced_subscription";
114
+ readonly LtdCoupons: "ltd_coupons";
115
+ readonly Ineligible: "ineligible";
116
+ };
117
+ export declare const PaperclipServicesEntitlementErrorCodeContract: {
118
+ readonly LtdCouponsBelowMinimum: "ltd_coupons_below_minimum";
119
+ readonly Ineligible: "ineligible";
120
+ readonly Unavailable: "unavailable";
121
+ };
122
+ export declare const PaperclipServicesComponentKindContract: {
123
+ readonly Deployment: "Deployment";
124
+ readonly Statefulset: "StatefulSet";
125
+ };
126
+ export declare const PaperclipServicesComponentStatusContract: {
127
+ readonly Healthy: "healthy";
128
+ readonly Degraded: "degraded";
129
+ readonly Unhealthy: "unhealthy";
130
+ readonly Unknown: "unknown";
131
+ };
132
+ export declare const PaperclipServiceAppKeyContract: {
133
+ readonly N8n: "n8n";
134
+ readonly Firecrawl: "firecrawl";
135
+ };
136
+ export declare const PaperclipServiceOperationStatusContract: {
137
+ readonly Pending: "pending";
138
+ readonly Running: "running";
139
+ readonly Succeeded: "succeeded";
140
+ readonly Failed: "failed";
141
+ readonly NeedsManualReview: "needs_manual_review";
142
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaperclipServiceOperationStatusContract = exports.PaperclipServiceAppKeyContract = exports.PaperclipServicesComponentStatusContract = exports.PaperclipServicesComponentKindContract = exports.PaperclipServicesEntitlementErrorCodeContract = exports.PaperclipServicesEntitlementSourceContract = void 0;
4
+ exports.PaperclipServicesEntitlementSourceContract = {
5
+ AdvancedSubscription: "advanced_subscription",
6
+ LtdCoupons: "ltd_coupons",
7
+ Ineligible: "ineligible"
8
+ };
9
+ exports.PaperclipServicesEntitlementErrorCodeContract = {
10
+ LtdCouponsBelowMinimum: "ltd_coupons_below_minimum",
11
+ Ineligible: "ineligible",
12
+ Unavailable: "unavailable"
13
+ };
14
+ exports.PaperclipServicesComponentKindContract = {
15
+ Deployment: "Deployment",
16
+ Statefulset: "StatefulSet"
17
+ };
18
+ exports.PaperclipServicesComponentStatusContract = {
19
+ Healthy: "healthy",
20
+ Degraded: "degraded",
21
+ Unhealthy: "unhealthy",
22
+ Unknown: "unknown"
23
+ };
24
+ exports.PaperclipServiceAppKeyContract = {
25
+ N8n: "n8n",
26
+ Firecrawl: "firecrawl"
27
+ };
28
+ exports.PaperclipServiceOperationStatusContract = {
29
+ Pending: "pending",
30
+ Running: "running",
31
+ Succeeded: "succeeded",
32
+ Failed: "failed",
33
+ NeedsManualReview: "needs_manual_review"
34
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusebase/fusebase-gate-sdk",
3
- "version": "2.7.0",
3
+ "version": "2.7.1-sdk.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,9 @@
1
+ # Release Notes 2.7.1-sdk.1
2
+
3
+ - Current ref: `HEAD`
4
+ - Previous tag: `v2.7.1-sdk.1`
5
+ - Generated at: 2026-08-17T11:49:27.978Z
6
+
7
+ ## Included Drafts
8
+
9
+ - None
@@ -1,8 +1,8 @@
1
- # Release Notes 2.7.0
1
+ # Release Notes 2.7.1-sdk.1
2
2
 
3
3
  - Current ref: `HEAD`
4
- - Previous tag: `v2.7.0`
5
- - Generated at: 2026-08-14T09:52:28.603Z
4
+ - Previous tag: `v2.7.1-sdk.1`
5
+ - Generated at: 2026-08-17T11:49:27.978Z
6
6
 
7
7
  ## Included Drafts
8
8
 
@@ -1,62 +0,0 @@
1
- # Release Notes 2.6.4
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.6.1`
5
- - Generated at: 2026-08-14T09:49:04.731Z
6
-
7
- ## Included Drafts
8
-
9
- - `docs/release-notes/2026-08-11-portal-service-id-format.md` - Portal homepage and duplicated items are addressable again (NIM-43233)
10
- - `docs/release-notes/2026-08-12-mcp-nullable-fields.md` - Summary
11
- - `docs/release-notes/2026-08-12-portal-page-initial-content.md` - Summary
12
- - `docs/release-notes/2026-08-14-mcp-json-schema-2020-12.md` - Summary
13
-
14
- ## Summary
15
-
16
- ### Portal homepage and duplicated items are addressable again (NIM-43233)
17
-
18
- Blocks could not be added to a portal's homepage: `listPortalContent` returned a `pageId` for the `home` item that every block operation answered `404` for, and there was no other id that worked. The gate was minting portal-service ids with `crypto.randomUUID()` (36 characters), but every portal-service `globalId` column is `VARCHAR(25)`. MySQL truncated the value on write without an error, so the row was stored under the first 25 characters while the id the gate returned — and, for the homepage, the one the home menu item's JSON attributes kept — stayed the full UUID.
19
-
20
- The gate now mints these ids in portal-service's own format: base36 of a v4 UUID, at most 25 characters, exactly what its `@lib/uuid` produces. It also truncates any over-long `pageId` it reads back out of a menu item, which repairs the portals already created with a broken one.
21
-
22
-
23
- ## API / SDK Changes
24
-
25
- ### Portal homepage and duplicated items are addressable again (NIM-43233)
26
-
27
- No contract change. Three ids change shape in responses, from a 36-character UUID to a 25-character lowercase alphanumeric string:
28
-
29
- - `createPortal` — the homepage `pageId` (visible via `listPortalContent`).
30
- - `duplicatePortalItem` — the returned `itemId`.
31
- - `addPortalNoteBlock` — the returned `blockId`.
32
-
33
- This is the same shape every other portal id already has; no schema declared these as UUIDs.
34
-
35
-
36
- ## Consumer Impact
37
-
38
- ### Portal homepage and duplicated items are addressable again (NIM-43233)
39
-
40
- The homepage is now reachable through the documented route: resolve its `pageId` from `listPortalContent` (menu item `type: "home"`) and call the normal semantic block operations, exactly as for any other page. `duplicatePortalItem` and `addPortalNoteBlock` now return ids that address the row they created.
41
-
42
- A consumer that pattern-matched the UUID shape of these three ids should stop — portal ids are opaque, and the op schemas already state that portal globalIds are not UUIDs.
43
-
44
- **Portals created before this fix are repaired too, with no data migration.** Their menu items still store the untruncated id, so the gate now truncates any `pageId` it reads back from portal-service to 25 characters. MySQL's truncation was deterministic, so that is exactly the id the page row was stored under, and the homepage becomes addressable on existing portals as well as new ones. On prod this covers 98 affected menu items across 25 portals.
45
-
46
- **No portal-service change.**
47
-
48
-
49
- ## Verification
50
-
51
- ### Portal homepage and duplicated items are addressable again (NIM-43233)
52
-
53
- - `npm test` — 1300 passed, 125 suites.
54
- - Reverting the id format reds tests across `tests/unit/portal-service-id.test.ts` and `tests/unit/portals-controller.test.ts`; neutralising the read-side truncation reds `tests/unit/portal-service-client.test.ts`.
55
- - `npm run build`, `npm run lint`.
56
-
57
-
58
- ## Follow-ups
59
-
60
- ### Portal homepage and duplicated items are addressable again (NIM-43233)
61
-
62
- - portal-service silently truncates any over-long `globalId`; a length guard there would turn a future occurrence of this class of bug into a `400` instead of corrupt data.
@@ -1,9 +0,0 @@
1
- # Release Notes 2.7.0
2
-
3
- - Current ref: `HEAD`
4
- - Previous tag: `v2.7.0`
5
- - Generated at: 2026-08-14T09:52:28.603Z
6
-
7
- ## Included Drafts
8
-
9
- - None