@xopcai/extension-ui-sdk 0.0.31 → 0.0.33
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/README.md +88 -0
- package/package.json +2 -1
package/README.md
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# @xopcai/extension-ui-sdk
|
|
2
|
+
|
|
3
|
+
TypeScript client for **xopc Gateway Console** extension UIs that run inside an **iframe**. The host and extension communicate over `window.postMessage` using a small RPC-style protocol (`xopc-host` / `xopc-extension` message envelopes).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @xopcai/extension-ui-sdk
|
|
9
|
+
# or
|
|
10
|
+
npm install @xopcai/extension-ui-sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The package ships **TypeScript sources** (`exports` point at `src/*.ts`) for direct consumption by bundlers that compile dependencies.
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { createExtensionClient } from '@xopcai/extension-ui-sdk';
|
|
19
|
+
|
|
20
|
+
const client = createExtensionClient();
|
|
21
|
+
|
|
22
|
+
await client.whenReady();
|
|
23
|
+
// Host has sent init (extension id, permissions, theme, locale).
|
|
24
|
+
|
|
25
|
+
const theme = await client.theme.getTheme();
|
|
26
|
+
const unsubTheme = client.theme.onThemeChange((t) => {
|
|
27
|
+
console.log('theme', t.mode, t.tokens);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const { sessionKey } = await client.agent.sendMessage('Hello', { newSession: true });
|
|
31
|
+
const unsubStream = client.agent.onStreamEvent(sessionKey, (payload) => {
|
|
32
|
+
console.log('stream', payload);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Later: unsubTheme(); unsubStream();
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Call `whenReady()` before relying on host-backed APIs: the transport waits for the host **`init`** message ([`HostInit`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/HostInit.md)) with `extensionId`, `permissions`, `theme`, and `locale`.
|
|
39
|
+
|
|
40
|
+
## `ExtensionClient` API (overview)
|
|
41
|
+
|
|
42
|
+
High-level surface from [`ExtensionClient`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/ExtensionClient.md):
|
|
43
|
+
|
|
44
|
+
| Area | Role |
|
|
45
|
+
|------|------|
|
|
46
|
+
| **`theme`** | `getTheme()`, `onThemeChange` — [`ThemeInfo`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/ThemeInfo.md) (`mode`, design `tokens`, optional font stacks). |
|
|
47
|
+
| **`agent`** | `sendMessage`, `onStreamEvent` — chat agent and streaming events for a `sessionKey`. |
|
|
48
|
+
| **`session`** | `listSessions`, `navigateToSession`. |
|
|
49
|
+
| **`config`** | `getExtensionConfig` / `setExtensionConfig` (typed via generic on get). |
|
|
50
|
+
| **`storage`** | Key/value helpers: `get`, `set`, `remove`, `keys`. |
|
|
51
|
+
| **`ui`** | `resize`, `showNotification`, `closePanel`, `navigate`, `onWidgetResult` (tool/widget iframe results via `widget.data`). |
|
|
52
|
+
| **`events`** | Custom extension events: `emit` / `on` (prefixed as `ext.<event>` on the wire). |
|
|
53
|
+
| **Lifecycle** | `onDispose`, `onDidChangeVisibility`. |
|
|
54
|
+
|
|
55
|
+
## `createExtensionClient`
|
|
56
|
+
|
|
57
|
+
[`createExtensionClient(options?)`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/functions/createExtensionClient.md) returns an `ExtensionClient`. Optional [`CreateExtensionClientOptions`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/type-aliases/CreateExtensionClientOptions.md) lets you inject a custom [`Transport`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/classes/Transport.md).
|
|
58
|
+
|
|
59
|
+
## `Transport` (advanced)
|
|
60
|
+
|
|
61
|
+
[`Transport`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/classes/Transport.md) listens for `message` events, tracks pending RPCs, and posts to `window.parent`. Useful knobs:
|
|
62
|
+
|
|
63
|
+
- [`TransportOptions`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/type-aliases/TransportOptions.md): e.g. `timeout` (default 10s) for `request()`.
|
|
64
|
+
- **`ready`**: `Promise<HostInit>` — same init the client awaits internally.
|
|
65
|
+
- **`id`**: host-assigned extension id after init.
|
|
66
|
+
- **`request` / `emit` / `on` / `dispose`**: lower-level control than `ExtensionClient`.
|
|
67
|
+
|
|
68
|
+
Wire types for custom integrations: [`ExtensionRequest`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/ExtensionRequest.md), [`ExtensionEventMessage`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/ExtensionEventMessage.md), [`HostResponse`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/HostResponse.md), [`HostEventMessage`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/interfaces/HostEventMessage.md), [`HostToExtensionMessage`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/type-aliases/HostToExtensionMessage.md), [`ExtensionToHostMessage`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/type-aliases/ExtensionToHostMessage.md).
|
|
69
|
+
|
|
70
|
+
## Error codes
|
|
71
|
+
|
|
72
|
+
[`ExtensionErrorCode`](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/enumerations/ExtensionErrorCode.md) documents numeric codes the host may return on failed requests (permission, invalid request, method not found, internal error, timeout, extension not found, rate limited).
|
|
73
|
+
|
|
74
|
+
## Full API reference (TypeDoc Markdown)
|
|
75
|
+
|
|
76
|
+
Generated Markdown mirrors the public API (enumerations, classes, interfaces, type aliases, functions). Index:
|
|
77
|
+
|
|
78
|
+
[docs/api/README.md](https://github.com/xopcai/xopc/blob/main/packages/extension-ui-sdk/docs/api/README.md) · [browse `docs/api`](https://github.com/xopcai/xopc/tree/main/packages/extension-ui-sdk/docs/api)
|
|
79
|
+
|
|
80
|
+
To regenerate after cloning **xopc**:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pnpm -C packages/extension-ui-sdk run docs
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## License
|
|
87
|
+
|
|
88
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/extension-ui-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.33",
|
|
4
4
|
"description": "Gateway Console extension UI SDK (iframe postMessage client)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
|
+
"README.md",
|
|
15
16
|
"src"
|
|
16
17
|
],
|
|
17
18
|
"license": "MIT",
|