@fusebase/fusebase-gate-sdk 2.11.0 → 2.11.2
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/apis/PaperclipAgentsApi.d.ts +44 -0
- package/dist/apis/PaperclipAgentsApi.js +58 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/paperclip-agents/paperclip-agents.d.ts +50 -0
- package/dist/types/paperclip-agents/paperclip-agents.js +2 -0
- package/package.json +1 -1
- package/release-notes/2.11.0.md +73 -2
- package/release-notes/2.11.2.md +9 -0
- package/release-notes/latest.md +3 -3
- package/dist/apis/PaperclipServicesApi.d.ts +0 -124
- package/dist/apis/PaperclipServicesApi.js +0 -161
- package/dist/types/paperclip-services/paperclip-services.d.ts +0 -142
- package/dist/types/paperclip-services/paperclip-services.js +0 -34
- package/release-notes/2.10.1-sdk.0.md +0 -47
|
@@ -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;
|
package/dist/index.d.ts
CHANGED
|
@@ -20,7 +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 {
|
|
23
|
+
export { PaperclipAgentsApi } from "./apis/PaperclipAgentsApi";
|
|
24
24
|
export { PortalFeatureContextApi } from "./apis/PortalFeatureContextApi";
|
|
25
25
|
export { PortalsApi } from "./apis/PortalsApi";
|
|
26
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.
|
|
22
|
+
exports.WorkspacesApi = exports.TokensApi = exports.SystemApi = exports.PortalsApi = exports.PortalFeatureContextApi = 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,8 +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
|
|
56
|
-
Object.defineProperty(exports, "
|
|
55
|
+
var PaperclipAgentsApi_1 = require("./apis/PaperclipAgentsApi");
|
|
56
|
+
Object.defineProperty(exports, "PaperclipAgentsApi", { enumerable: true, get: function () { return PaperclipAgentsApi_1.PaperclipAgentsApi; } });
|
|
57
57
|
var PortalFeatureContextApi_1 = require("./apis/PortalFeatureContextApi");
|
|
58
58
|
Object.defineProperty(exports, "PortalFeatureContextApi", { enumerable: true, get: function () { return PortalFeatureContextApi_1.PortalFeatureContextApi; } });
|
|
59
59
|
var PortalsApi_1 = require("./apis/PortalsApi");
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,7 +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
|
|
23
|
+
export type { CreatePaperclipAgentTaskRequestContract, PaperclipAgentRunContract, PaperclipAgentTaskAcceptedContract, PaperclipAgentTaskContract, PaperclipAgentTaskIdInPathRequired, PaperclipAgentTaskStatusContract, PaperclipCallableAgentContract, PaperclipCallableAgentListContract } from "./paperclip-agents/paperclip-agents";
|
|
24
24
|
export type { VerifyPortalFeatureContextTokenRequestContract, VerifyPortalFeatureContextTokenResponseContract } from "./portal-feature-context/portal-feature-context";
|
|
25
25
|
export * from "./portals/portals";
|
|
26
26
|
export * from "./shared/common";
|
package/dist/types/index.js
CHANGED
|
@@ -27,7 +27,6 @@ __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);
|
|
31
30
|
__exportStar(require("./portals/portals"), exports);
|
|
32
31
|
__exportStar(require("./shared/common"), exports);
|
|
33
32
|
__exportStar(require("./shared/enums"), exports);
|
|
@@ -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
|
+
}
|
package/package.json
CHANGED
package/release-notes/2.11.0.md
CHANGED
|
@@ -2,8 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
- Current ref: `HEAD`
|
|
4
4
|
- Previous tag: `v2.11.0`
|
|
5
|
-
- Generated at: 2026-08-
|
|
5
|
+
- Generated at: 2026-08-27T10:06:16.345Z
|
|
6
6
|
|
|
7
7
|
## Included Drafts
|
|
8
8
|
|
|
9
|
-
-
|
|
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.execute`.
|
|
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.execute`.
|
|
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.
|
package/release-notes/latest.md
CHANGED
|
@@ -1,124 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
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;
|
|
@@ -1,142 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,47 +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-25T11:38:27.682Z
|
|
6
|
-
|
|
7
|
-
## Included Drafts
|
|
8
|
-
|
|
9
|
-
- `docs/release-notes/2026-08-25-published-app-api-manifest.md` - Published App API manifest endpoint
|
|
10
|
-
|
|
11
|
-
## Summary
|
|
12
|
-
|
|
13
|
-
### Published App API manifest endpoint
|
|
14
|
-
|
|
15
|
-
Gate now exposes the complete published OpenAPI manifest for a selected FuseBase App so authenticated HTTP clients such as FuseBase Work can discover an App's request and response schemas without using the frontend proxy or MCP.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## API / SDK Changes
|
|
19
|
-
|
|
20
|
-
### Published App API manifest endpoint
|
|
21
|
-
|
|
22
|
-
- Added `GET /:orgId/apps/:appId/app-api-manifest`.
|
|
23
|
-
- Added the `getPublishedAppApiManifest` generated SDK operation.
|
|
24
|
-
- The response includes stable Product/App identifiers and the complete `app-api-registry` manifest, including `manifest.document`.
|
|
25
|
-
- The operation requires `org.read`, accepts user or user-bound token authentication, and is intentionally not exposed as an MCP tool.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## Consumer Impact
|
|
29
|
-
|
|
30
|
-
### Published App API manifest endpoint
|
|
31
|
-
|
|
32
|
-
HTTP clients can list Apps and operations through the existing Gate APIs, then fetch the selected App's full OpenAPI contract through Gate. Existing operations are unchanged.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Verification
|
|
36
|
-
|
|
37
|
-
### Published App API manifest endpoint
|
|
38
|
-
|
|
39
|
-
- Unit coverage verifies complete manifest delivery and rejects Apps without a published App API manifest.
|
|
40
|
-
- Generated SDK and OpenAPI artifacts were rebuilt.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## Follow-ups
|
|
44
|
-
|
|
45
|
-
### Published App API manifest endpoint
|
|
46
|
-
|
|
47
|
-
- FuseBase Work will consume this operation through its direct server-to-server Gate client.
|