@imdanibytes/nexus-sdk 0.10.3 → 0.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.
@@ -1,3 +1,3 @@
1
- export { containerStats, editFile, execCommand, getSettings, globFiles, grepFiles, listContainers, listDir, listProcesses, type Options, proxyRequest, putSettings, readFile, systemInfo, writeFile } from './sdk.gen';
2
- export type { ClientOptions, ContainerInfo, ContainerStatsData, ContainerStatsErrors, ContainerStatsResponse, ContainerStatsResponses, DirEntry, DirListing, EditFileData, EditFileErrors, EditFileResponses, EditRequest, ExecCommandData, ExecCommandErrors, ExecCommandResponse, ExecCommandResponses, ExecRequest, ExecResult, FileContent, GetSettingsData, GetSettingsErrors, GetSettingsResponse, GetSettingsResponses, GlobFilesData, GlobFilesErrors, GlobFilesResponse, GlobFilesResponses, GlobResult, GrepFileMatch, GrepFilesData, GrepFilesErrors, GrepFilesResponse, GrepFilesResponses, GrepLine, GrepResult, ListContainersData, ListContainersErrors, ListContainersResponse, ListContainersResponses, ListDirData, ListDirErrors, ListDirResponse, ListDirResponses, ListProcessesData, ListProcessesErrors, ListProcessesResponse, ListProcessesResponses, ProcessInfo, ProxyRequest, ProxyRequestData, ProxyRequestErrors, ProxyRequestResponse, ProxyRequestResponses, ProxyResponse, PutSettingsData, PutSettingsErrors, PutSettingsResponses, ReadFileData, ReadFileErrors, ReadFileResponse, ReadFileResponses, SystemInfo, SystemInfoData, SystemInfoErrors, SystemInfoResponse, SystemInfoResponses, WriteFileData, WriteFileErrors, WriteFileResponses, WriteRequest } from './types.gen';
1
+ export { callExtension, containerStats, editFile, execCommand, getSettings, globFiles, grepFiles, listContainers, listDir, listExtensions, listProcesses, type Options, proxyRequest, putSettings, readFile, systemInfo, writeFile } from './sdk.gen';
2
+ export type { CallExtensionData, CallExtensionErrors, CallExtensionRequest, CallExtensionResponse, CallExtensionResponse2, CallExtensionResponses, ClientOptions, ContainerInfo, ContainerStatsData, ContainerStatsErrors, ContainerStatsResponse, ContainerStatsResponses, DirEntry, DirListing, EditFileData, EditFileErrors, EditFileResponses, EditRequest, ExecCommandData, ExecCommandErrors, ExecCommandResponse, ExecCommandResponses, ExecRequest, ExecResult, ExtensionErrorResponse, FileContent, GetSettingsData, GetSettingsErrors, GetSettingsResponse, GetSettingsResponses, GlobFilesData, GlobFilesErrors, GlobFilesResponse, GlobFilesResponses, GlobResult, GrepFileMatch, GrepFilesData, GrepFilesErrors, GrepFilesResponse, GrepFilesResponses, GrepLine, GrepResult, ListContainersData, ListContainersErrors, ListContainersResponse, ListContainersResponses, ListDirData, ListDirErrors, ListDirResponse, ListDirResponses, ListExtensionsData, ListExtensionsErrors, ListExtensionsResponse, ListExtensionsResponse2, ListExtensionsResponses, ListProcessesData, ListProcessesErrors, ListProcessesResponse, ListProcessesResponses, PluginExtensionView, PluginOperationView, ProcessInfo, ProxyRequest, ProxyRequestData, ProxyRequestErrors, ProxyRequestResponse, ProxyRequestResponses, ProxyResponse, PutSettingsData, PutSettingsErrors, PutSettingsResponses, ReadFileData, ReadFileErrors, ReadFileResponse, ReadFileResponses, SystemInfo, SystemInfoData, SystemInfoErrors, SystemInfoResponse, SystemInfoResponses, WriteFileData, WriteFileErrors, WriteFileResponses, WriteRequest } from './types.gen';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvN,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtP,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
- export { containerStats, editFile, execCommand, getSettings, globFiles, grepFiles, listContainers, listDir, listProcesses, proxyRequest, putSettings, readFile, systemInfo, writeFile } from './sdk.gen';
2
+ export { callExtension, containerStats, editFile, execCommand, getSettings, globFiles, grepFiles, listContainers, listDir, listExtensions, listProcesses, proxyRequest, putSettings, readFile, systemInfo, writeFile } from './sdk.gen';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAgB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAgB,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Client, Options as Options2, TDataShape } from './client';
2
- import type { ContainerStatsData, ContainerStatsErrors, ContainerStatsResponses, EditFileData, EditFileErrors, EditFileResponses, ExecCommandData, ExecCommandErrors, ExecCommandResponses, GetSettingsData, GetSettingsErrors, GetSettingsResponses, GlobFilesData, GlobFilesErrors, GlobFilesResponses, GrepFilesData, GrepFilesErrors, GrepFilesResponses, ListContainersData, ListContainersErrors, ListContainersResponses, ListDirData, ListDirErrors, ListDirResponses, ListProcessesData, ListProcessesErrors, ListProcessesResponses, ProxyRequestData, ProxyRequestErrors, ProxyRequestResponses, PutSettingsData, PutSettingsErrors, PutSettingsResponses, ReadFileData, ReadFileErrors, ReadFileResponses, SystemInfoData, SystemInfoErrors, SystemInfoResponses, WriteFileData, WriteFileErrors, WriteFileResponses } from './types.gen';
2
+ import type { CallExtensionData, CallExtensionErrors, CallExtensionResponses, ContainerStatsData, ContainerStatsErrors, ContainerStatsResponses, EditFileData, EditFileErrors, EditFileResponses, ExecCommandData, ExecCommandErrors, ExecCommandResponses, GetSettingsData, GetSettingsErrors, GetSettingsResponses, GlobFilesData, GlobFilesErrors, GlobFilesResponses, GrepFilesData, GrepFilesErrors, GrepFilesResponses, ListContainersData, ListContainersErrors, ListContainersResponses, ListDirData, ListDirErrors, ListDirResponses, ListExtensionsData, ListExtensionsErrors, ListExtensionsResponses, ListProcessesData, ListProcessesErrors, ListProcessesResponses, ProxyRequestData, ProxyRequestErrors, ProxyRequestResponses, PutSettingsData, PutSettingsErrors, PutSettingsResponses, ReadFileData, ReadFileErrors, ReadFileResponses, SystemInfoData, SystemInfoErrors, SystemInfoResponses, WriteFileData, WriteFileErrors, WriteFileResponses } from './types.gen';
3
3
  export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
4
4
  /**
5
5
  * You can provide a client instance returned by `createClient()` instead of
@@ -15,6 +15,23 @@ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends
15
15
  };
16
16
  export declare const listContainers: <ThrowOnError extends boolean = false>(options?: Options<ListContainersData, ThrowOnError>) => import("./client").RequestResult<ListContainersResponses, ListContainersErrors, ThrowOnError, "fields">;
17
17
  export declare const containerStats: <ThrowOnError extends boolean = false>(options: Options<ContainerStatsData, ThrowOnError>) => import("./client").RequestResult<ContainerStatsResponses, ContainerStatsErrors, ThrowOnError, "fields">;
18
+ /**
19
+ * List extensions declared by the calling plugin.
20
+ *
21
+ * Only returns extensions the plugin declared in its manifest `"extensions"` field.
22
+ * Includes availability status (is it installed and running?) and per-operation
23
+ * permission status. Plugins cannot see extensions they didn't declare.
24
+ */
25
+ export declare const listExtensions: <ThrowOnError extends boolean = false>(options?: Options<ListExtensionsData, ThrowOnError>) => import("./client").RequestResult<ListExtensionsResponses, ListExtensionsErrors, ThrowOnError, "fields">;
26
+ /**
27
+ * Execute an extension operation.
28
+ *
29
+ * Three-layer security model:
30
+ * 1. PERMISSION: Does this plugin have `ext:{ext_id}:{operation}`?
31
+ * 2. SCOPE: If the operation declares `scope_key`, is the scope value approved?
32
+ * 3. RISK: If risk_level is high, per-invocation runtime approval.
33
+ */
34
+ export declare const callExtension: <ThrowOnError extends boolean = false>(options: Options<CallExtensionData, ThrowOnError>) => import("./client").RequestResult<CallExtensionResponses, CallExtensionErrors, ThrowOnError, "fields">;
18
35
  export declare const editFile: <ThrowOnError extends boolean = false>(options: Options<EditFileData, ThrowOnError>) => import("./client").RequestResult<EditFileResponses, EditFileErrors, ThrowOnError, "fields">;
19
36
  export declare const globFiles: <ThrowOnError extends boolean = false>(options: Options<GlobFilesData, ThrowOnError>) => import("./client").RequestResult<GlobFilesResponses, GlobFilesErrors, ThrowOnError, "fields">;
20
37
  export declare const grepFiles: <ThrowOnError extends boolean = false>(options: Options<GrepFilesData, ThrowOnError>) => import("./client").RequestResult<GrepFilesResponses, GrepFilesErrors, ThrowOnError, "fields">;
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.gen.d.ts","sourceRoot":"","sources":["../../src/client/sdk.gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.gen.d.ts","sourceRoot":"","sources":["../../src/client/sdk.gen.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,35 @@ export const containerStats = (options) => (options.client ?? client).get({
10
10
  url: '/api/v1/docker/stats/{id}',
11
11
  ...options
12
12
  });
13
+ /**
14
+ * List extensions declared by the calling plugin.
15
+ *
16
+ * Only returns extensions the plugin declared in its manifest `"extensions"` field.
17
+ * Includes availability status (is it installed and running?) and per-operation
18
+ * permission status. Plugins cannot see extensions they didn't declare.
19
+ */
20
+ export const listExtensions = (options) => (options?.client ?? client).get({
21
+ security: [{ scheme: 'bearer', type: 'http' }],
22
+ url: '/api/v1/extensions',
23
+ ...options
24
+ });
25
+ /**
26
+ * Execute an extension operation.
27
+ *
28
+ * Three-layer security model:
29
+ * 1. PERMISSION: Does this plugin have `ext:{ext_id}:{operation}`?
30
+ * 2. SCOPE: If the operation declares `scope_key`, is the scope value approved?
31
+ * 3. RISK: If risk_level is high, per-invocation runtime approval.
32
+ */
33
+ export const callExtension = (options) => (options.client ?? client).post({
34
+ security: [{ scheme: 'bearer', type: 'http' }],
35
+ url: '/api/v1/extensions/{ext_id}/{operation}',
36
+ ...options,
37
+ headers: {
38
+ 'Content-Type': 'application/json',
39
+ ...options.headers
40
+ }
41
+ });
13
42
  export const editFile = (options) => (options.client ?? client).post({
14
43
  security: [{ scheme: 'bearer', type: 'http' }],
15
44
  url: '/api/v1/fs/edit',
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.gen.js","sourceRoot":"","sources":["../../src/client/sdk.gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.gen.js","sourceRoot":"","sources":["../../src/client/sdk.gen.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,20 @@
1
1
  export type ClientOptions = {
2
2
  baseUrl: `${string}://${string}` | (string & {});
3
3
  };
4
+ /**
5
+ * Request body for POST /v1/extensions/{ext_id}/{operation}
6
+ */
7
+ export type CallExtensionRequest = {
8
+ input?: unknown;
9
+ };
10
+ /**
11
+ * Response for POST /v1/extensions/{ext_id}/{operation}
12
+ */
13
+ export type CallExtensionResponse = {
14
+ data: unknown;
15
+ message?: string | null;
16
+ success: boolean;
17
+ };
4
18
  export type ContainerInfo = {
5
19
  id: string;
6
20
  image: string;
@@ -51,6 +65,13 @@ export type ExecResult = {
51
65
  */
52
66
  timed_out: boolean;
53
67
  };
68
+ /**
69
+ * Error response body
70
+ */
71
+ export type ExtensionErrorResponse = {
72
+ details?: string | null;
73
+ error: string;
74
+ };
54
75
  export type FileContent = {
55
76
  content: string;
56
77
  path: string;
@@ -78,6 +99,30 @@ export type GrepResult = {
78
99
  pattern: string;
79
100
  search_path: string;
80
101
  };
102
+ /**
103
+ * Response for GET /v1/extensions
104
+ */
105
+ export type ListExtensionsResponse = {
106
+ extensions: Array<PluginExtensionView>;
107
+ };
108
+ /**
109
+ * A plugin's view of an extension it declared as a dependency.
110
+ */
111
+ export type PluginExtensionView = {
112
+ available: boolean;
113
+ description?: string | null;
114
+ display_name?: string | null;
115
+ id: string;
116
+ operations: Array<PluginOperationView>;
117
+ };
118
+ /**
119
+ * A plugin's view of an operation on a declared extension.
120
+ */
121
+ export type PluginOperationView = {
122
+ available: boolean;
123
+ name: string;
124
+ permitted: boolean;
125
+ };
81
126
  export type ProcessInfo = {
82
127
  cpu_usage: number;
83
128
  memory: number;
@@ -165,6 +210,57 @@ export type ContainerStatsResponses = {
165
210
  };
166
211
  };
167
212
  export type ContainerStatsResponse = ContainerStatsResponses[keyof ContainerStatsResponses];
213
+ export type ListExtensionsData = {
214
+ body?: never;
215
+ path?: never;
216
+ query?: never;
217
+ url: '/api/v1/extensions';
218
+ };
219
+ export type ListExtensionsErrors = {
220
+ /**
221
+ * Unauthorized
222
+ */
223
+ 401: unknown;
224
+ };
225
+ export type ListExtensionsResponses = {
226
+ /**
227
+ * Extensions declared by this plugin
228
+ */
229
+ 200: ListExtensionsResponse;
230
+ };
231
+ export type ListExtensionsResponse2 = ListExtensionsResponses[keyof ListExtensionsResponses];
232
+ export type CallExtensionData = {
233
+ body: CallExtensionRequest;
234
+ path: {
235
+ /**
236
+ * Extension ID
237
+ */
238
+ ext_id: string;
239
+ /**
240
+ * Operation name
241
+ */
242
+ operation: string;
243
+ };
244
+ query?: never;
245
+ url: '/api/v1/extensions/{ext_id}/{operation}';
246
+ };
247
+ export type CallExtensionErrors = {
248
+ /**
249
+ * Unauthorized
250
+ */
251
+ 401: unknown;
252
+ /**
253
+ * Forbidden — extension not found, missing permission, or scope denied
254
+ */
255
+ 403: unknown;
256
+ };
257
+ export type CallExtensionResponses = {
258
+ /**
259
+ * Operation result
260
+ */
261
+ 200: CallExtensionResponse;
262
+ };
263
+ export type CallExtensionResponse2 = CallExtensionResponses[keyof CallExtensionResponses];
168
264
  export type EditFileData = {
169
265
  body: EditRequest;
170
266
  path?: never;
@@ -1 +1 @@
1
- {"version":3,"file":"types.gen.d.ts","sourceRoot":"","sources":["../../src/client/types.gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.gen.d.ts","sourceRoot":"","sources":["../../src/client/types.gen.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * TypeScript SDK for Nexus plugins. Generated HTTP client from the Host API
5
5
  * OpenAPI spec, with a hand-written convenience wrapper.
6
6
  *
7
- * Usage inside a plugin:
7
+ * Usage inside a plugin UI (browser):
8
8
  *
9
9
  * ```ts
10
10
  * import { NexusPlugin } from "@imdanibytes/nexus-sdk";
@@ -12,9 +12,13 @@
12
12
  * const nexus = await NexusPlugin.init();
13
13
  * const info = await nexus.systemInfo();
14
14
  * const settings = await nexus.getSettings();
15
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
15
16
  * ```
17
+ *
18
+ * Auth is fully transparent — the SDK handles token acquisition, refresh,
19
+ * and retry automatically. Plugins never touch credentials.
16
20
  */
17
- export type { SystemInfo, FileContent, DirListing, DirEntry, ProcessInfo, ContainerInfo, ProxyRequest, ProxyResponse, WriteRequest, } from "./client/types.gen";
21
+ export type { SystemInfo, FileContent, DirListing, DirEntry, ProcessInfo, ContainerInfo, ProxyRequest, ProxyResponse, WriteRequest, CallExtensionRequest, CallExtensionResponse, ListExtensionsResponse, PluginExtensionView, PluginOperationView, } from "./client/types.gen";
18
22
  /** Payload shape for host → plugin system events via postMessage. */
19
23
  export interface NexusHostEvent {
20
24
  type: "nexus:system";
@@ -25,27 +29,21 @@ export interface NexusHostEvent {
25
29
  export type NexusEventHandler = (event: string, data: unknown) => void;
26
30
  export * as sdk from "./client/sdk.gen";
27
31
  export { client } from "./client/client.gen";
28
- interface PluginConfig {
29
- token: string;
30
- apiUrl: string;
31
- }
32
32
  /**
33
- * Convenience wrapper that fetches a short-lived access token from the
34
- * plugin's `/api/config` endpoint and configures the HTTP client.
35
- *
36
- * The plugin server handles the secret-to-token exchange. The browser
37
- * only ever sees the short-lived access token.
33
+ * Browser-side SDK for Nexus plugin UIs.
38
34
  *
39
- * On 401 (token expired), call `refreshToken()` to re-fetch from
40
- * the plugin server, which will exchange the secret for a new token.
35
+ * Auth is fully transparent: the plugin server handles credential management,
36
+ * and this class automatically retries on 401 by re-fetching config.
37
+ * Plugins never see tokens, secrets, or auth protocol details.
41
38
  */
42
39
  export declare class NexusPlugin {
43
- config: PluginConfig;
44
40
  private configUrl;
41
+ private token;
42
+ private apiUrl;
45
43
  private constructor();
46
44
  /**
47
- * Initialize the SDK. Fetches plugin config from the local server and
48
- * configures the HTTP client with the correct base URL and access token.
45
+ * Initialize the SDK. Fetches config from the plugin server and
46
+ * configures the HTTP client. Auth is handled automatically.
49
47
  *
50
48
  * @param configUrl - Override the config endpoint (defaults to `/api/config`)
51
49
  */
@@ -54,15 +52,14 @@ export declare class NexusPlugin {
54
52
  * Configure the SDK manually (for use outside plugin iframes, e.g. tests).
55
53
  */
56
54
  static configure(apiUrl: string, token: string): NexusPlugin;
57
- /**
58
- * Re-fetch the access token from the plugin server. Call this on 401
59
- * responses the server will exchange the secret for a fresh token.
60
- */
61
- refreshToken(): Promise<string>;
55
+ /** Re-fetch config from the plugin server (which handles credential refresh). */
56
+ private _refreshConfig;
57
+ /** Execute a generated SDK call with automatic 401 retry. */
58
+ private _withRetry;
62
59
  systemInfo(): Promise<import(".").SystemInfo>;
63
60
  readFile(path: string): Promise<import(".").FileContent>;
64
61
  listDir(path: string): Promise<import(".").DirListing>;
65
- writeFile(path: string, content: string): Promise<void>;
62
+ writeFile(path: string, content: string): Promise<unknown>;
66
63
  listProcesses(): Promise<import(".").ProcessInfo[]>;
67
64
  listContainers(): Promise<import(".").ContainerInfo[]>;
68
65
  containerStats(id: string): Promise<{
@@ -75,7 +72,17 @@ export declare class NexusPlugin {
75
72
  getSettings(): Promise<{
76
73
  [key: string]: unknown;
77
74
  }>;
78
- saveSettings(values: Record<string, unknown>): Promise<void>;
75
+ saveSettings(values: Record<string, unknown>): Promise<unknown>;
76
+ /**
77
+ * Call an extension operation.
78
+ *
79
+ * ```ts
80
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
81
+ * ```
82
+ */
83
+ callExtension(extensionId: string, operation: string, input?: Record<string, unknown>): Promise<import(".").CallExtensionResponse>;
84
+ /** List extensions available to this plugin. */
85
+ listExtensions(): Promise<import(".").ListExtensionsResponse>;
79
86
  /**
80
87
  * Listen for system events pushed from the Nexus host via postMessage.
81
88
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgBH,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAGvE,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,WAAW;IAIb,MAAM,EAAE,YAAY;IAH7B,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAOP;;;;;OAKG;WACU,IAAI,CAAC,SAAS,SAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBlE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAK5D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAuB/B,UAAU;IAOV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAKrB,OAAO,CAAC,IAAI,EAAE,MAAM;IAKpB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMvC,aAAa;IAOb,cAAc;IAKd,cAAc,CAAC,EAAE,EAAE,MAAM;;;IAOzB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IASvG,WAAW;;;IAKX,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMlD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;CAUpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAkBH,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAGvE,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ7C;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAMP;;;;;OAKG;WACU,IAAI,CAAC,SAAS,SAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBlE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW;IAO5D,iFAAiF;YACnE,cAAc;IAoB5B,6DAA6D;YAC/C,UAAU;IAmBlB,UAAU;IAMV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAIrB,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMvC,aAAa;IAMb,cAAc;IAId,cAAc,CAAC,EAAE,EAAE,MAAM;;;IAMzB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAQvG,WAAW;;;IAIX,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMlD;;;;;;OAMG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAO/F,gDAAgD;IAC1C,cAAc;IAMpB;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,IAAI;CAUpD"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * TypeScript SDK for Nexus plugins. Generated HTTP client from the Host API
5
5
  * OpenAPI spec, with a hand-written convenience wrapper.
6
6
  *
7
- * Usage inside a plugin:
7
+ * Usage inside a plugin UI (browser):
8
8
  *
9
9
  * ```ts
10
10
  * import { NexusPlugin } from "@imdanibytes/nexus-sdk";
@@ -12,33 +12,36 @@
12
12
  * const nexus = await NexusPlugin.init();
13
13
  * const info = await nexus.systemInfo();
14
14
  * const settings = await nexus.getSettings();
15
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
15
16
  * ```
17
+ *
18
+ * Auth is fully transparent — the SDK handles token acquisition, refresh,
19
+ * and retry automatically. Plugins never touch credentials.
16
20
  */
17
21
  import { client } from "./client/client.gen";
18
- import { systemInfo as _systemInfo, readFile as _readFile, listDir as _listDir, writeFile as _writeFile, listProcesses as _listProcesses, listContainers as _listContainers, containerStats as _containerStats, proxyRequest as _proxyRequest, getSettings as _getSettings, putSettings as _putSettings, } from "./client/sdk.gen";
22
+ import { systemInfo as _systemInfo, readFile as _readFile, listDir as _listDir, writeFile as _writeFile, listProcesses as _listProcesses, listContainers as _listContainers, containerStats as _containerStats, proxyRequest as _proxyRequest, getSettings as _getSettings, putSettings as _putSettings, listExtensions as _listExtensions, callExtension as _callExtension, } from "./client/sdk.gen";
19
23
  // Re-export raw generated SDK for advanced use
20
24
  export * as sdk from "./client/sdk.gen";
21
25
  export { client } from "./client/client.gen";
22
26
  /**
23
- * Convenience wrapper that fetches a short-lived access token from the
24
- * plugin's `/api/config` endpoint and configures the HTTP client.
25
- *
26
- * The plugin server handles the secret-to-token exchange. The browser
27
- * only ever sees the short-lived access token.
27
+ * Browser-side SDK for Nexus plugin UIs.
28
28
  *
29
- * On 401 (token expired), call `refreshToken()` to re-fetch from
30
- * the plugin server, which will exchange the secret for a new token.
29
+ * Auth is fully transparent: the plugin server handles credential management,
30
+ * and this class automatically retries on 401 by re-fetching config.
31
+ * Plugins never see tokens, secrets, or auth protocol details.
31
32
  */
32
33
  export class NexusPlugin {
33
- config;
34
34
  configUrl;
35
+ token;
36
+ apiUrl;
35
37
  constructor(config, configUrl) {
36
- this.config = config;
38
+ this.token = config.token;
39
+ this.apiUrl = config.apiUrl;
37
40
  this.configUrl = configUrl;
38
41
  }
39
42
  /**
40
- * Initialize the SDK. Fetches plugin config from the local server and
41
- * configures the HTTP client with the correct base URL and access token.
43
+ * Initialize the SDK. Fetches config from the plugin server and
44
+ * configures the HTTP client. Auth is handled automatically.
42
45
  *
43
46
  * @param configUrl - Override the config endpoint (defaults to `/api/config`)
44
47
  */
@@ -61,71 +64,91 @@ export class NexusPlugin {
61
64
  client.setConfig({ baseUrl: apiUrl, auth: token });
62
65
  return new NexusPlugin({ token, apiUrl }, "");
63
66
  }
64
- /**
65
- * Re-fetch the access token from the plugin server. Call this on 401
66
- * responses — the server will exchange the secret for a fresh token.
67
- */
68
- async refreshToken() {
67
+ // ── Internal: transparent auth retry ──────────────────────
68
+ /** Re-fetch config from the plugin server (which handles credential refresh). */
69
+ async _refreshConfig() {
69
70
  if (!this.configUrl) {
70
- throw new Error("Cannot refresh token in manual configuration mode");
71
+ throw new Error("Cannot refresh in manual configuration mode");
71
72
  }
72
73
  const res = await fetch(this.configUrl);
73
74
  if (!res.ok) {
74
- throw new Error(`Failed to refresh token: ${res.status}`);
75
+ throw new Error(`Failed to refresh config: ${res.status}`);
75
76
  }
76
77
  const config = await res.json();
77
- this.config = config;
78
+ this.token = config.token;
79
+ this.apiUrl = config.apiUrl;
78
80
  client.setConfig({
79
81
  baseUrl: config.apiUrl,
80
82
  auth: config.token,
81
83
  });
82
- return config.token;
84
+ }
85
+ /** Execute a generated SDK call with automatic 401 retry. */
86
+ async _withRetry(fn) {
87
+ let result = await fn();
88
+ if (result.response.status === 401) {
89
+ await this._refreshConfig();
90
+ result = await fn();
91
+ }
92
+ if (result.data === undefined) {
93
+ throw new Error(`Request failed: ${result.response.status}`);
94
+ }
95
+ return result.data;
83
96
  }
84
97
  // ── System ──────────────────────────────────────────────
85
98
  async systemInfo() {
86
- const { data } = await _systemInfo();
87
- return data;
99
+ return this._withRetry(() => _systemInfo());
88
100
  }
89
101
  // ── Filesystem ──────────────────────────────────────────
90
102
  async readFile(path) {
91
- const { data } = await _readFile({ query: { path } });
92
- return data;
103
+ return this._withRetry(() => _readFile({ query: { path } }));
93
104
  }
94
105
  async listDir(path) {
95
- const { data } = await _listDir({ query: { path } });
96
- return data;
106
+ return this._withRetry(() => _listDir({ query: { path } }));
97
107
  }
98
108
  async writeFile(path, content) {
99
- await _writeFile({ body: { path, content } });
109
+ return this._withRetry(() => _writeFile({ body: { path, content } }));
100
110
  }
101
111
  // ── Process ─────────────────────────────────────────────
102
112
  async listProcesses() {
103
- const { data } = await _listProcesses();
104
- return data;
113
+ return this._withRetry(() => _listProcesses());
105
114
  }
106
115
  // ── Docker ──────────────────────────────────────────────
107
116
  async listContainers() {
108
- const { data } = await _listContainers();
109
- return data;
117
+ return this._withRetry(() => _listContainers());
110
118
  }
111
119
  async containerStats(id) {
112
- const { data } = await _containerStats({ path: { id } });
113
- return data;
120
+ return this._withRetry(() => _containerStats({ path: { id } }));
114
121
  }
115
122
  // ── Network ─────────────────────────────────────────────
116
123
  async proxyRequest(url, method, options) {
117
- const { data } = await _proxyRequest({
124
+ return this._withRetry(() => _proxyRequest({
118
125
  body: { url, method, headers: options?.headers ?? {}, body: options?.body },
119
- });
120
- return data;
126
+ }));
121
127
  }
122
128
  // ── Settings ────────────────────────────────────────────
123
129
  async getSettings() {
124
- const { data } = await _getSettings();
125
- return data;
130
+ return this._withRetry(() => _getSettings());
126
131
  }
127
132
  async saveSettings(values) {
128
- await _putSettings({ body: values });
133
+ return this._withRetry(() => _putSettings({ body: values }));
134
+ }
135
+ // ── Extensions ──────────────────────────────────────────
136
+ /**
137
+ * Call an extension operation.
138
+ *
139
+ * ```ts
140
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
141
+ * ```
142
+ */
143
+ async callExtension(extensionId, operation, input = {}) {
144
+ return this._withRetry(() => _callExtension({
145
+ path: { ext_id: extensionId, operation },
146
+ body: { input },
147
+ }));
148
+ }
149
+ /** List extensions available to this plugin. */
150
+ async listExtensions() {
151
+ return this._withRetry(() => _listExtensions());
129
152
  }
130
153
  // ── Host Events ──────────────────────────────────────────
131
154
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,OAAO,IAAI,QAAQ,EACnB,SAAS,IAAI,UAAU,EACvB,aAAa,IAAI,cAAc,EAC/B,cAAc,IAAI,eAAe,EACjC,cAAc,IAAI,eAAe,EACjC,YAAY,IAAI,aAAa,EAC7B,WAAW,IAAI,YAAY,EAC3B,WAAW,IAAI,YAAY,EAC3B,cAAc,IAAI,eAAe,EACjC,aAAa,IAAI,cAAc,GAChC,MAAM,kBAAkB,CAAC;AA6B1B,+CAA+C;AAC/C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ7C;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACd,SAAS,CAAS;IAClB,KAAK,CAAS;IACd,MAAM,CAAS;IAEvB,YAAoB,MAAoB,EAAE,SAAiB;QACzD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,aAAa;QACzC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,KAAK,GAAG,CAAC,MAAM,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAiB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9C,MAAM,CAAC,SAAS,CAAC;YACf,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,IAAI,EAAE,MAAM,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,KAAa;QAC5C,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,6DAA6D;IAE7D,iFAAiF;IACzE,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,MAAM,GAAiB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,MAAM,CAAC,SAAS,CAAC;YACf,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,IAAI,EAAE,MAAM,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IACrD,KAAK,CAAC,UAAU,CACtB,EAAoE;QAEpE,IAAI,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAExB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAAc,EAAE,OAA6D;QAC3G,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;YACzC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5E,CAAC,CAAC,CAAC;IACN,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA+B;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,2DAA2D;IAE3D;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,SAAiB,EAAE,QAAiC,EAAE;QAC7F,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC;YAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;YACxC,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,4DAA4D;IAE5D;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,OAA0B;QACpC,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @imdanibytes/nexus-sdk/server
3
+ *
4
+ * Server-side SDK for Nexus plugins. Handles auth transparently —
5
+ * plugins never touch credentials or know the auth protocol.
6
+ *
7
+ * Usage inside a plugin server (Node.js):
8
+ *
9
+ * ```ts
10
+ * import { NexusServer } from "@imdanibytes/nexus-sdk/server";
11
+ *
12
+ * const nexus = new NexusServer();
13
+ * const settings = await nexus.getSettings();
14
+ * const file = await nexus.readFile("/some/path");
15
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
16
+ * ```
17
+ *
18
+ * Reads NEXUS_OAUTH_CLIENT_ID, NEXUS_OAUTH_CLIENT_SECRET, NEXUS_HOST_URL,
19
+ * and NEXUS_API_URL from environment variables automatically.
20
+ */
21
+ export interface NexusServerOptions {
22
+ /** Override NEXUS_OAUTH_CLIENT_ID env var. */
23
+ clientId?: string;
24
+ /** Override NEXUS_OAUTH_CLIENT_SECRET env var. */
25
+ clientSecret?: string;
26
+ /** Override NEXUS_HOST_URL env var (used for auth endpoint). */
27
+ hostUrl?: string;
28
+ /** Override NEXUS_API_URL env var (used as base for API calls). */
29
+ apiUrl?: string;
30
+ /** Milliseconds before expiry to trigger proactive refresh. Default: 30000. */
31
+ refreshBuffer?: number;
32
+ }
33
+ export declare class NexusServer {
34
+ private clientId;
35
+ private clientSecret;
36
+ private hostUrl;
37
+ readonly apiUrl: string;
38
+ private refreshBuffer;
39
+ private accessToken;
40
+ private refreshToken;
41
+ private expiresAt;
42
+ /** Prevent concurrent token requests. */
43
+ private pendingAuth;
44
+ constructor(options?: NexusServerOptions);
45
+ /** Get a valid access token. Safe to call concurrently. */
46
+ getAccessToken(): Promise<string>;
47
+ /**
48
+ * Opaque config for the browser SDK. Returns whatever the browser needs
49
+ * to make authenticated calls — no auth protocol details leak.
50
+ */
51
+ getClientConfig(): {
52
+ token: string;
53
+ apiUrl: string;
54
+ };
55
+ /**
56
+ * Fetch with automatic auth. Relative paths resolve against `apiUrl`.
57
+ * Low-level escape hatch for endpoints not yet wrapped as typed methods.
58
+ */
59
+ fetch(path: string, init?: RequestInit): Promise<Response>;
60
+ /** GET /api/v1/system/info */
61
+ systemInfo(): Promise<Record<string, unknown>>;
62
+ /** GET /api/v1/settings — returns plugin settings as key-value map. */
63
+ getSettings(): Promise<Record<string, unknown>>;
64
+ /** PUT /api/v1/settings — update plugin settings. */
65
+ saveSettings(values: Record<string, unknown>): Promise<void>;
66
+ /** GET /api/v1/fs/read?path=... */
67
+ readFile(path: string): Promise<{
68
+ path: string;
69
+ content: string;
70
+ }>;
71
+ /** GET /api/v1/fs/list?path=... */
72
+ listDir(path: string): Promise<{
73
+ path: string;
74
+ entries: unknown[];
75
+ }>;
76
+ /** POST /api/v1/fs/write */
77
+ writeFile(path: string, content: string): Promise<void>;
78
+ /** GET /api/v1/process/list */
79
+ listProcesses(): Promise<unknown[]>;
80
+ /** GET /api/v1/docker/containers */
81
+ listContainers(): Promise<unknown[]>;
82
+ /** POST /api/v1/network/proxy */
83
+ proxyRequest(url: string, method: string, options?: {
84
+ headers?: Record<string, string>;
85
+ body?: string;
86
+ }): Promise<{
87
+ status: number;
88
+ headers: Record<string, string>;
89
+ body: string;
90
+ }>;
91
+ /**
92
+ * Call an extension operation.
93
+ *
94
+ * ```ts
95
+ * const result = await nexus.callExtension("my-ext", "my-operation", {
96
+ * key: "value",
97
+ * });
98
+ * ```
99
+ */
100
+ callExtension(extensionId: string, operation: string, input?: Record<string, unknown>): Promise<{
101
+ success: boolean;
102
+ data: unknown;
103
+ message?: string;
104
+ }>;
105
+ /** List extensions available to this plugin. */
106
+ listExtensions(): Promise<unknown[]>;
107
+ private _get;
108
+ private _acquireToken;
109
+ private _clientCredentialsGrant;
110
+ private _refreshGrant;
111
+ private _handleTokenResponse;
112
+ }
113
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js ADDED
@@ -0,0 +1,232 @@
1
+ /**
2
+ * @imdanibytes/nexus-sdk/server
3
+ *
4
+ * Server-side SDK for Nexus plugins. Handles auth transparently —
5
+ * plugins never touch credentials or know the auth protocol.
6
+ *
7
+ * Usage inside a plugin server (Node.js):
8
+ *
9
+ * ```ts
10
+ * import { NexusServer } from "@imdanibytes/nexus-sdk/server";
11
+ *
12
+ * const nexus = new NexusServer();
13
+ * const settings = await nexus.getSettings();
14
+ * const file = await nexus.readFile("/some/path");
15
+ * const result = await nexus.callExtension("my-ext", "my-op", { key: "val" });
16
+ * ```
17
+ *
18
+ * Reads NEXUS_OAUTH_CLIENT_ID, NEXUS_OAUTH_CLIENT_SECRET, NEXUS_HOST_URL,
19
+ * and NEXUS_API_URL from environment variables automatically.
20
+ */
21
+ export class NexusServer {
22
+ clientId;
23
+ clientSecret;
24
+ hostUrl;
25
+ apiUrl;
26
+ refreshBuffer;
27
+ accessToken = null;
28
+ refreshToken = null;
29
+ expiresAt = 0;
30
+ /** Prevent concurrent token requests. */
31
+ pendingAuth = null;
32
+ constructor(options) {
33
+ this.clientId =
34
+ options?.clientId || process.env.NEXUS_OAUTH_CLIENT_ID || "";
35
+ this.clientSecret =
36
+ options?.clientSecret || process.env.NEXUS_OAUTH_CLIENT_SECRET || "";
37
+ this.hostUrl =
38
+ options?.hostUrl ||
39
+ process.env.NEXUS_HOST_URL ||
40
+ "http://host.docker.internal:9600";
41
+ this.apiUrl =
42
+ options?.apiUrl ||
43
+ process.env.NEXUS_API_URL ||
44
+ "http://host.docker.internal:9600";
45
+ this.refreshBuffer = options?.refreshBuffer ?? 30_000;
46
+ }
47
+ // ── Auth (internal) ───────────────────────────────────────
48
+ /** Get a valid access token. Safe to call concurrently. */
49
+ async getAccessToken() {
50
+ if (this.accessToken && Date.now() < this.expiresAt - this.refreshBuffer) {
51
+ return this.accessToken;
52
+ }
53
+ if (this.pendingAuth)
54
+ return this.pendingAuth;
55
+ this.pendingAuth = this._acquireToken().finally(() => {
56
+ this.pendingAuth = null;
57
+ });
58
+ return this.pendingAuth;
59
+ }
60
+ /**
61
+ * Opaque config for the browser SDK. Returns whatever the browser needs
62
+ * to make authenticated calls — no auth protocol details leak.
63
+ */
64
+ getClientConfig() {
65
+ return {
66
+ token: this.accessToken || "",
67
+ apiUrl: this.apiUrl,
68
+ };
69
+ }
70
+ // ── Authenticated fetch ───────────────────────────────────
71
+ /**
72
+ * Fetch with automatic auth. Relative paths resolve against `apiUrl`.
73
+ * Low-level escape hatch for endpoints not yet wrapped as typed methods.
74
+ */
75
+ async fetch(path, init) {
76
+ const token = await this.getAccessToken();
77
+ const url = path.startsWith("http") ? path : `${this.apiUrl}${path}`;
78
+ const headers = new Headers(init?.headers);
79
+ headers.set("Authorization", `Bearer ${token}`);
80
+ return globalThis.fetch(url, { ...init, headers });
81
+ }
82
+ // ── Typed API methods ─────────────────────────────────────
83
+ /** GET /api/v1/system/info */
84
+ async systemInfo() {
85
+ return this._get("/api/v1/system/info");
86
+ }
87
+ /** GET /api/v1/settings — returns plugin settings as key-value map. */
88
+ async getSettings() {
89
+ return this._get("/api/v1/settings");
90
+ }
91
+ /** PUT /api/v1/settings — update plugin settings. */
92
+ async saveSettings(values) {
93
+ const res = await this.fetch("/api/v1/settings", {
94
+ method: "PUT",
95
+ headers: { "Content-Type": "application/json" },
96
+ body: JSON.stringify(values),
97
+ });
98
+ if (!res.ok) {
99
+ throw new Error(`saveSettings failed: ${res.status}`);
100
+ }
101
+ }
102
+ /** GET /api/v1/fs/read?path=... */
103
+ async readFile(path) {
104
+ return this._get(`/api/v1/fs/read?path=${encodeURIComponent(path)}`);
105
+ }
106
+ /** GET /api/v1/fs/list?path=... */
107
+ async listDir(path) {
108
+ return this._get(`/api/v1/fs/list?path=${encodeURIComponent(path)}`);
109
+ }
110
+ /** POST /api/v1/fs/write */
111
+ async writeFile(path, content) {
112
+ const res = await this.fetch("/api/v1/fs/write", {
113
+ method: "POST",
114
+ headers: { "Content-Type": "application/json" },
115
+ body: JSON.stringify({ path, content }),
116
+ });
117
+ if (!res.ok) {
118
+ throw new Error(`writeFile failed: ${res.status}`);
119
+ }
120
+ }
121
+ /** GET /api/v1/process/list */
122
+ async listProcesses() {
123
+ return this._get("/api/v1/process/list");
124
+ }
125
+ /** GET /api/v1/docker/containers */
126
+ async listContainers() {
127
+ return this._get("/api/v1/docker/containers");
128
+ }
129
+ /** POST /api/v1/network/proxy */
130
+ async proxyRequest(url, method, options) {
131
+ const res = await this.fetch("/api/v1/network/proxy", {
132
+ method: "POST",
133
+ headers: { "Content-Type": "application/json" },
134
+ body: JSON.stringify({
135
+ url,
136
+ method,
137
+ headers: options?.headers ?? {},
138
+ body: options?.body,
139
+ }),
140
+ });
141
+ if (!res.ok) {
142
+ throw new Error(`proxyRequest failed: ${res.status}`);
143
+ }
144
+ return res.json();
145
+ }
146
+ // ── Extensions ────────────────────────────────────────────
147
+ /**
148
+ * Call an extension operation.
149
+ *
150
+ * ```ts
151
+ * const result = await nexus.callExtension("my-ext", "my-operation", {
152
+ * key: "value",
153
+ * });
154
+ * ```
155
+ */
156
+ async callExtension(extensionId, operation, input = {}) {
157
+ const res = await this.fetch(`/api/v1/extensions/${encodeURIComponent(extensionId)}/${encodeURIComponent(operation)}`, {
158
+ method: "POST",
159
+ headers: { "Content-Type": "application/json" },
160
+ body: JSON.stringify({ input }),
161
+ });
162
+ if (!res.ok) {
163
+ const body = await res.text().catch(() => "");
164
+ throw new Error(`callExtension(${extensionId}/${operation}) failed: ${res.status} ${body}`);
165
+ }
166
+ return res.json();
167
+ }
168
+ /** List extensions available to this plugin. */
169
+ async listExtensions() {
170
+ return this._get("/api/v1/extensions");
171
+ }
172
+ // ── Internal helpers ──────────────────────────────────────
173
+ async _get(path) {
174
+ const res = await this.fetch(path);
175
+ if (!res.ok) {
176
+ throw new Error(`GET ${path} failed: ${res.status}`);
177
+ }
178
+ return res.json();
179
+ }
180
+ async _acquireToken() {
181
+ if (this.refreshToken) {
182
+ try {
183
+ const token = await this._refreshGrant();
184
+ if (token)
185
+ return token;
186
+ }
187
+ catch {
188
+ this.refreshToken = null;
189
+ }
190
+ }
191
+ return this._clientCredentialsGrant();
192
+ }
193
+ async _clientCredentialsGrant() {
194
+ const res = await globalThis.fetch(`${this.hostUrl}/oauth/token`, {
195
+ method: "POST",
196
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
197
+ body: new URLSearchParams({
198
+ grant_type: "client_credentials",
199
+ client_id: this.clientId,
200
+ client_secret: this.clientSecret,
201
+ }),
202
+ });
203
+ if (!res.ok) {
204
+ const body = await res.text().catch(() => "");
205
+ throw new Error(`Auth failed: ${res.status} ${body}`);
206
+ }
207
+ return this._handleTokenResponse(await res.json());
208
+ }
209
+ async _refreshGrant() {
210
+ const res = await globalThis.fetch(`${this.hostUrl}/oauth/token`, {
211
+ method: "POST",
212
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
213
+ body: new URLSearchParams({
214
+ grant_type: "refresh_token",
215
+ client_id: this.clientId,
216
+ refresh_token: this.refreshToken,
217
+ }),
218
+ });
219
+ if (!res.ok)
220
+ return null;
221
+ return this._handleTokenResponse(await res.json());
222
+ }
223
+ _handleTokenResponse(data) {
224
+ this.accessToken = data.access_token;
225
+ if (data.refresh_token) {
226
+ this.refreshToken = data.refresh_token;
227
+ }
228
+ this.expiresAt = Date.now() + data.expires_in * 1000;
229
+ return this.accessToken;
230
+ }
231
+ }
232
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Nexus Host API",
5
- "description": "API available to Nexus plugins for interacting with the host system. Plugins exchange their secret (NEXUS_PLUGIN_SECRET) for a short-lived access token via POST /v1/auth/token, then use it as a Bearer token.",
5
+ "description": "API available to Nexus plugins for interacting with the host system. Plugins authenticate via OAuth 2.1 client_credentials grant (POST /oauth/token) and use the access token as a Bearer token.",
6
6
  "contact": {
7
7
  "name": "danibytes"
8
8
  },
@@ -88,6 +88,99 @@
88
88
  ]
89
89
  }
90
90
  },
91
+ "/api/v1/extensions": {
92
+ "get": {
93
+ "tags": [
94
+ "extensions"
95
+ ],
96
+ "summary": "List extensions declared by the calling plugin.",
97
+ "description": "Only returns extensions the plugin declared in its manifest `\"extensions\"` field.\nIncludes availability status (is it installed and running?) and per-operation\npermission status. Plugins cannot see extensions they didn't declare.",
98
+ "operationId": "list_extensions",
99
+ "responses": {
100
+ "200": {
101
+ "description": "Extensions declared by this plugin",
102
+ "content": {
103
+ "application/json": {
104
+ "schema": {
105
+ "$ref": "#/components/schemas/ListExtensionsResponse"
106
+ }
107
+ }
108
+ }
109
+ },
110
+ "401": {
111
+ "description": "Unauthorized"
112
+ }
113
+ },
114
+ "security": [
115
+ {
116
+ "bearer_auth": []
117
+ }
118
+ ]
119
+ }
120
+ },
121
+ "/api/v1/extensions/{ext_id}/{operation}": {
122
+ "post": {
123
+ "tags": [
124
+ "extensions"
125
+ ],
126
+ "summary": "Execute an extension operation.",
127
+ "description": "Three-layer security model:\n1. PERMISSION: Does this plugin have `ext:{ext_id}:{operation}`?\n2. SCOPE: If the operation declares `scope_key`, is the scope value approved?\n3. RISK: If risk_level is high, per-invocation runtime approval.",
128
+ "operationId": "call_extension",
129
+ "parameters": [
130
+ {
131
+ "name": "ext_id",
132
+ "in": "path",
133
+ "description": "Extension ID",
134
+ "required": true,
135
+ "schema": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ {
140
+ "name": "operation",
141
+ "in": "path",
142
+ "description": "Operation name",
143
+ "required": true,
144
+ "schema": {
145
+ "type": "string"
146
+ }
147
+ }
148
+ ],
149
+ "requestBody": {
150
+ "content": {
151
+ "application/json": {
152
+ "schema": {
153
+ "$ref": "#/components/schemas/CallExtensionRequest"
154
+ }
155
+ }
156
+ },
157
+ "required": true
158
+ },
159
+ "responses": {
160
+ "200": {
161
+ "description": "Operation result",
162
+ "content": {
163
+ "application/json": {
164
+ "schema": {
165
+ "$ref": "#/components/schemas/CallExtensionResponse"
166
+ }
167
+ }
168
+ }
169
+ },
170
+ "401": {
171
+ "description": "Unauthorized"
172
+ },
173
+ "403": {
174
+ "description": "Forbidden — extension not found, missing permission, or scope denied"
175
+ }
176
+ },
177
+ "security": [
178
+ {
179
+ "bearer_auth": []
180
+ }
181
+ ]
182
+ }
183
+ },
91
184
  "/api/v1/fs/edit": {
92
185
  "post": {
93
186
  "tags": [
@@ -603,6 +696,33 @@
603
696
  },
604
697
  "components": {
605
698
  "schemas": {
699
+ "CallExtensionRequest": {
700
+ "type": "object",
701
+ "description": "Request body for POST /v1/extensions/{ext_id}/{operation}",
702
+ "properties": {
703
+ "input": {}
704
+ }
705
+ },
706
+ "CallExtensionResponse": {
707
+ "type": "object",
708
+ "description": "Response for POST /v1/extensions/{ext_id}/{operation}",
709
+ "required": [
710
+ "success",
711
+ "data"
712
+ ],
713
+ "properties": {
714
+ "data": {},
715
+ "message": {
716
+ "type": [
717
+ "string",
718
+ "null"
719
+ ]
720
+ },
721
+ "success": {
722
+ "type": "boolean"
723
+ }
724
+ }
725
+ },
606
726
  "ContainerInfo": {
607
727
  "type": "object",
608
728
  "required": [
@@ -760,6 +880,24 @@
760
880
  }
761
881
  }
762
882
  },
883
+ "ExtensionErrorResponse": {
884
+ "type": "object",
885
+ "description": "Error response body",
886
+ "required": [
887
+ "error"
888
+ ],
889
+ "properties": {
890
+ "details": {
891
+ "type": [
892
+ "string",
893
+ "null"
894
+ ]
895
+ },
896
+ "error": {
897
+ "type": "string"
898
+ }
899
+ }
900
+ },
763
901
  "FileContent": {
764
902
  "type": "object",
765
903
  "required": [
@@ -864,6 +1002,76 @@
864
1002
  }
865
1003
  }
866
1004
  },
1005
+ "ListExtensionsResponse": {
1006
+ "type": "object",
1007
+ "description": "Response for GET /v1/extensions",
1008
+ "required": [
1009
+ "extensions"
1010
+ ],
1011
+ "properties": {
1012
+ "extensions": {
1013
+ "type": "array",
1014
+ "items": {
1015
+ "$ref": "#/components/schemas/PluginExtensionView"
1016
+ }
1017
+ }
1018
+ }
1019
+ },
1020
+ "PluginExtensionView": {
1021
+ "type": "object",
1022
+ "description": "A plugin's view of an extension it declared as a dependency.",
1023
+ "required": [
1024
+ "id",
1025
+ "available",
1026
+ "operations"
1027
+ ],
1028
+ "properties": {
1029
+ "available": {
1030
+ "type": "boolean"
1031
+ },
1032
+ "description": {
1033
+ "type": [
1034
+ "string",
1035
+ "null"
1036
+ ]
1037
+ },
1038
+ "display_name": {
1039
+ "type": [
1040
+ "string",
1041
+ "null"
1042
+ ]
1043
+ },
1044
+ "id": {
1045
+ "type": "string"
1046
+ },
1047
+ "operations": {
1048
+ "type": "array",
1049
+ "items": {
1050
+ "$ref": "#/components/schemas/PluginOperationView"
1051
+ }
1052
+ }
1053
+ }
1054
+ },
1055
+ "PluginOperationView": {
1056
+ "type": "object",
1057
+ "description": "A plugin's view of an operation on a declared extension.",
1058
+ "required": [
1059
+ "name",
1060
+ "permitted",
1061
+ "available"
1062
+ ],
1063
+ "properties": {
1064
+ "available": {
1065
+ "type": "boolean"
1066
+ },
1067
+ "name": {
1068
+ "type": "string"
1069
+ },
1070
+ "permitted": {
1071
+ "type": "boolean"
1072
+ }
1073
+ }
1074
+ },
867
1075
  "ProcessInfo": {
868
1076
  "type": "object",
869
1077
  "required": [
@@ -1036,6 +1244,10 @@
1036
1244
  {
1037
1245
  "name": "settings",
1038
1246
  "description": "Per-plugin settings (scoped to authenticated plugin)"
1247
+ },
1248
+ {
1249
+ "name": "extensions",
1250
+ "description": "Host extension operations"
1039
1251
  }
1040
1252
  ]
1041
1253
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imdanibytes/nexus-sdk",
3
- "version": "0.10.3",
3
+ "version": "0.11.1",
4
4
  "description": "TypeScript SDK for Nexus plugins — generated HTTP client + hand-written convenience wrapper",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org",
@@ -19,6 +19,10 @@
19
19
  "import": "./dist/index.js",
20
20
  "types": "./dist/index.d.ts"
21
21
  },
22
+ "./server": {
23
+ "import": "./dist/server.js",
24
+ "types": "./dist/server.d.ts"
25
+ },
22
26
  "./client": {
23
27
  "import": "./dist/client/index.js",
24
28
  "types": "./dist/client/index.d.ts"
@@ -35,6 +39,7 @@
35
39
  },
36
40
  "devDependencies": {
37
41
  "@hey-api/openapi-ts": "^0.92.3",
42
+ "@types/node": "^22.0.0",
38
43
  "typescript": "~5.9.3"
39
44
  },
40
45
  "dependencies": {},