@zhin.js/client 1.1.4 → 2.0.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.
package/README.md CHANGED
@@ -1,476 +1,120 @@
1
- # Zhin Client - 动态页面路由与插件配置系统
1
+ # @zhin.js/client
2
2
 
3
- > **本仓库目录约定(与本包对应)**
4
- > - **`client/`**:浏览器端源码(路由、Redux、WebSocket 等)。
5
- > - **`dist/`**:`pnpm build` 后的发布产物;`package.json` 的 `main`/`types` 指向此处。
6
- > 包根目录 `packages/client/` 表示 npm 包 `@zhin.js/client`,内层 `client/` 表示「Web 客户端实现」,与 [仓库结构与模块化约定](../../docs/contributing/repo-structure.md) 中 §3.4 一致。
3
+ Remote Console **浏览器 SDK**(entries 加载、路由/工具注册、带 Token 的 REST)。**不含 UI** — 壳层在独立仓库 [zhin-console](https://github.com/zhinjs/console)。
7
4
 
8
- 基于 React Router 7.0 的动态页面管理系统,集成插件配置功能,支持基于 Schema 的自动表单生成。
9
-
10
- ## 特性
11
-
12
- ### 路由系统
13
- - 🌳 **树形路由结构** - 使用树形结构管理页面路由,支持任意深度的嵌套
14
- - ✅ **动态页面管理** - 运行时添加、删除、更新页面
15
- - ✅ **React Router 7.0** - 使用最新的 React Router
16
- - ✅ **TypeScript 支持** - 完整的类型定义
17
- - ✅ **WebSocket 集成** - 支持动态加载插件入口脚本
18
- - ✅ **Redux 状态管理** - 集成 Redux 持久化
19
-
20
- ### 配置系统
21
- - 🔧 **Schema 驱动** - 支持 15 种 Schema 数据类型
22
- - 📝 **自动表单生成** - 根据 Schema 自动生成配置表单
23
- - 🎨 **智能 UI 组件** - 针对不同类型自动选择最佳 UI 控件
24
- - 🔄 **实时配置更新** - 支持配置文件的实时读取和保存
25
- - 🧩 **模块化设计** - 17 个独立的字段渲染器,易于扩展
5
+ > **路径约定**:本包位于 `packages/console/client/`(npm `@zhin.js/client`)。源码在 `client/`,构建产物在 `dist/`。
26
6
 
27
7
  ## 安装
28
8
 
29
9
  ```bash
30
- pnpm add react-router@7.0.0 events @types/events
31
- ```
32
-
33
- ## 基本使用
34
-
35
- ### 1. 设置页面路由
36
-
37
- ```tsx
38
- // main.tsx
39
- import { addPage, DynamicRouter } from '@zhin.js/client'
40
-
41
- // 添加页面 - 使用 Component 而不是 element,icon 使用字符串
42
- addPage({
43
- key: 'home',
44
- path: '/',
45
- title: '首页',
46
- icon: 'Home', // 图标名称对应 lucide-react 的组件名
47
- Component: HomePage
48
- })
49
-
50
- addPage({
51
- key: 'dashboard',
52
- path: '/dashboard',
53
- title: '仪表盘',
54
- icon: 'LayoutDashboard',
55
- Component: DashboardPage
56
- })
57
-
58
- // 渲染应用
59
- createRoot(document.getElementById('root')).render(
60
- <Provider store={store}>
61
- <PersistGate loading={null} persistor={persistor}>
62
- <DynamicRouter />
63
- </PersistGate>
64
- </Provider>
65
- )
66
- ```
67
-
68
- ### 2. 页面操作
69
-
70
- ```tsx
71
- import { addPage, removePage, updatePage } from '@zhin.js/client'
72
-
73
- // 添加页面
74
- addPage({
75
- key: 'settings',
76
- path: '/settings',
77
- title: '设置',
78
- icon: <Settings className="w-5 h-5" />,
79
- element: <SettingsPage />
80
- })
81
-
82
- // 删除页面
83
- removePage('/settings')
84
-
85
- // 更新页面
86
- updatePage('/settings', {
87
- key: 'settings',
88
- path: '/settings',
89
- title: '设置(更新)',
90
- icon: <Settings className="w-5 h-5" />,
91
- element: <UpdatedSettingsPage />
92
- })
93
-
94
- // 注:RouteMenuItem 同时支持 element(ReactNode)和 Component(ComponentType)两种属性
95
-
96
- // 向后兼容的旧 API(已废弃)
97
- import { addRoute, removeRoute, updateRoute } from '@zhin.js/client'
98
- // 这些 API 仍然可用,但推荐使用新的 addPage 等 API
99
- ```
100
-
101
- ### 3. 自动父路由查找
102
-
103
- ```tsx
104
- // main.tsx
105
- import { addPage } from '@zhin.js/client'
106
- import { Home, Users, Settings } from 'lucide-react'
107
-
108
- // 1. 添加顶级页面
109
- addPage({
110
- key: 'home',
111
- path: '/',
112
- title: '首页',
113
- icon: 'Home',
114
- Component: HomePage
115
- })
116
-
117
- addPage({
118
- key: 'admin',
119
- path: '/admin',
120
- title: '管理',
121
- Component: AdminLayout
122
- })
123
-
124
- // 2. 自动查找父路由:/admin/users
125
- // 会查找 /admin 是否存在,如果存在,插入 users 到 /admin
126
- addPage({
127
- key: 'admin-users',
128
- path: '/admin/users',
129
- title: '用户管理',
130
- icon: 'Users',
131
- Component: UsersPage
132
- })
133
-
134
- addPage({
135
- key: 'admin-settings',
136
- path: '/admin/settings',
137
- title: '系统设置',
138
- icon: 'Settings',
139
- Component: AdminSettingsPage
140
- })
141
-
142
- // 3. 自动查找父路由:/admin/users/detail
143
- // 会查找 /admin/users 是否存在,如果存在,插入 detail 到 /admin/users
144
- addPage({
145
- key: 'user-detail',
146
- path: '/admin/users/detail',
147
- title: '用户详情',
148
- Component: UserDetailPage
149
- })
150
-
151
- // 4. 动态添加嵌套页面
152
- setTimeout(() => {
153
- // 会自动查找 /admin 是否存在,如果存在,插入 analytics 到 /admin
154
- addPage({
155
- key: 'admin-analytics',
156
- path: '/admin/analytics',
157
- title: '分析',
158
- Component: AnalyticsPage
159
- })
160
- }, 2000)
161
-
162
- // 5. 动态添加更深层嵌套
163
- setTimeout(() => {
164
- // 会自动查找 /admin/analytics 是否存在,如果存在,插入 reports 到 /admin/analytics
165
- addPage({
166
- key: 'analytics-reports',
167
- path: '/admin/analytics/reports',
168
- title: '分析报告',
169
- Component: ReportsPage
170
- })
171
- }, 4000)
10
+ pnpm add @zhin.js/client
172
11
  ```
173
12
 
174
- ### 4. 事件监听
175
-
176
- ```tsx
177
- import { routerManager } from '@zhin.js/client'
178
-
179
- // 监听路由变化
180
- routerManager.onRouteChange(() => {
181
- console.log('Routes changed')
182
- })
183
-
184
- // 监听路由添加
185
- routerManager.onRouteAdd((route) => {
186
- console.log('Route added:', route.path)
187
- })
188
-
189
- // 监听路由删除
190
- routerManager.onRouteRemove((path) => {
191
- console.log('Route removed:', path)
192
- })
193
- ```
194
-
195
- ## API 参考
196
-
197
- ### 页面管理 API(推荐)
198
-
199
- ```tsx
200
- // 添加页面
201
- addPage(route: RouteMenuItem): void
202
-
203
- // 删除页面
204
- removePage(path: string): void
205
-
206
- // 更新页面
207
- updatePage(path: string, updates: Partial<RouteMenuItem>): void
208
-
209
- // 获取页面
210
- getPage(path: string): RouteMenuItem | undefined
211
-
212
- // 获取所有页面
213
- getAllPages(): RouteMenuItem[]
214
-
215
- // 清空所有页面
216
- clearPages(): void
217
- ```
218
-
219
- ### 旧 API(已废弃,保留向后兼容)
220
-
221
- ```tsx
222
- /** @deprecated 请使用 addPage */
223
- addRoute(route: RouteMenuItem): void
224
-
225
- /** @deprecated 请使用 removePage */
226
- removeRoute(path: string): void
227
-
228
- /** @deprecated 请使用 updatePage */
229
- updateRoute(path: string, route: RouteMenuItem): void
13
+ Peer:`react >= 18`(`createPluginRegisterHostApi` 需要 React 引用)。
230
14
 
231
- /** @deprecated 请使用 getPage */
232
- getRoute(path: string): RouteMenuItem | undefined
15
+ ## 概览
233
16
 
234
- /** @deprecated 请使用 getAllPages */
235
- getAllRoutes(): RouteMenuItem[]
236
-
237
- /** @deprecated 请使用 clearPages */
238
- clearRoutes(): void
239
- ```
17
+ | 导出 | 用途 |
18
+ |------|------|
19
+ | `loadConsoleEntries` | 拉 `GET /entries`、动态 import 各 entry、调用 `register(hostApi)` |
20
+ | `createPluginRegisterHostApi` | 由壳层的 `React` / `addRoute` / `addTool` 构造 `PluginRegisterHostApi` |
21
+ | `apiFetch` | 相对 Host API Base 的 `fetch`,自动附加 `Authorization: Bearer` |
22
+ | `getApiBase` / `getToken` | 读取登录页写入 `localStorage` 的 API Base 与 Token |
23
+ | `app` | 路由与工具注册单例(`addRoute`、`addTool` 等) |
24
+ | `configureConsole` / `getRuntimeEnv` | 运行时环境(development / production) |
25
+ | `createRegistryStore` / `useRegistry` | 可选 registry store |
240
26
 
241
- ### routerManager 对象
27
+ 类型与 Entry 契约来自 `@zhin.js/contract`。
242
28
 
243
- ```tsx
244
- // 事件监听方法
245
- routerManager.onRouteChange(callback: () => void): () => void
246
- routerManager.onRouteAdd(callback: (route: RouteConfig) => void): () => void
247
- routerManager.onRouteRemove(callback: (path: string) => void): () => void
248
- routerManager.onRouteUpdate(callback: (path: string, route: RouteConfig) => void): () => void
249
- routerManager.onRouteClear(callback: () => void): () => void
250
- ```
29
+ ## 启动:加载插件 Console Entry
251
30
 
252
- ### RouteMenuItem 接口
31
+ Remote Console 壳层在登录后调用:
253
32
 
254
33
  ```tsx
255
- interface RouteMenuItem {
256
- key: string // 唯一标识
257
- path: string // 路由路径
258
- title: string // 页面标题
259
- icon?: ReactNode // 图标元素(直接传入 React 元素,如 <Home className="w-5 h-5" />)
260
- element?: ReactNode // React 组件
261
- children?: RouteMenuItem[] // 子路由
262
- meta?: {
263
- order?: number // 排序
264
- hideInMenu?: boolean // 是否在菜单中隐藏
265
- requiresAuth?: boolean // 是否需要认证
266
- [key: string]: any
267
- }
268
- }
34
+ import React from "react";
35
+ import {
36
+ app,
37
+ createPluginRegisterHostApi,
38
+ loadConsoleEntries,
39
+ } from "@zhin.js/client";
40
+
41
+ const hostApi = createPluginRegisterHostApi({
42
+ React,
43
+ addRoute: app.addRoute.bind(app),
44
+ addTool: app.addTool.bind(app),
45
+ });
46
+
47
+ await loadConsoleEntries({
48
+ hostApi,
49
+ // Remote Console:Host 监听地址,用于解析 /@dev、/@assets 模块 URL
50
+ assetOrigin: "http://127.0.0.1:8086",
51
+ fetchInit: () => ({
52
+ headers: { Authorization: `Bearer ${localStorage.getItem("zhin_api_token")}` },
53
+ }),
54
+ onFetchError: (status) => console.error("entries fetch failed", status),
55
+ onEmpty: () => console.warn("no console entries"),
56
+ });
269
57
  ```
270
58
 
271
- ## 高级用法
59
+ `loadConsoleEntries` 内部:`fetchConsoleEntries` → `registerConsolePluginsFromEntries` → 各 entry 模块的 `register` 或 `default.register`。
272
60
 
273
- ### 动态页面操作
61
+ 插件 `client/` 入口示例:
274
62
 
275
63
  ```tsx
276
- import { addPage, updatePage, removePage } from '@zhin.js/client'
277
-
278
- // 运行时动态添加页面
279
- setTimeout(() => {
280
- const DynamicPage = () => <div>Dynamic Page</div>
281
- addPage({
282
- key: 'dynamic',
283
- path: '/dynamic',
284
- title: '动态页面',
285
- Component: DynamicPage
286
- })
287
- }, 2000)
288
-
289
- // 动态更新页面
290
- setTimeout(() => {
291
- const UpdatedPage = () => <div>Updated Page</div>
292
- updatePage('/dynamic', {
293
- key: 'dynamic',
294
- path: '/dynamic',
295
- title: '动态页面(已更新)',
296
- Component: UpdatedPage
297
- })
298
- }, 4000)
299
-
300
- // 动态删除页面
301
- setTimeout(() => {
302
- removePage('/dynamic')
303
- }, 6000)
304
- ```
305
-
306
- ### WebSocket 动态加载
307
-
308
- ```tsx
309
- import { useWebSocket, addPage } from '@zhin.js/client'
310
-
311
- function App() {
312
- // 连接 WebSocket,接收动态入口脚本
313
- const ws = useWebSocket({
314
- onMessage: (message) => {
315
- console.log('收到消息:', message)
316
- }
317
- })
318
-
319
- return (
320
- <div>
321
- <p>WebSocket 状态: {ws.connected ? '已连接' : '未连接'}</p>
322
- <p>已加载入口: {ws.entries.length}</p>
323
- <DynamicRouter />
324
- </div>
325
- )
64
+ import type { PluginRegisterHostApi } from "@zhin.js/contract";
65
+
66
+ export async function register(hostApi: PluginRegisterHostApi) {
67
+ hostApi.addRoute({
68
+ path: "/my-plugin",
69
+ name: "My Plugin",
70
+ element: hostApi.React.createElement(MyPage),
71
+ icon: "Puzzle",
72
+ });
326
73
  }
327
-
328
- // 插件入口脚本示例(my-plugin-entry.ts)
329
- import { addPage } from '@zhin.js/client'
330
-
331
- addPage({
332
- key: 'my-plugin',
333
- path: '/my-plugin',
334
- title: '我的插件',
335
- icon: 'Puzzle',
336
- Component: MyPluginPage
337
- })
338
74
  ```
339
75
 
340
- ### 事件统计
76
+ ## Host API 请求
341
77
 
342
- ```tsx
343
- // 路由统计
344
- let routeCount = 0
345
- routerManager.onRouteAdd(() => {
346
- routeCount++
347
- console.log(`Total routes: ${routeCount}`)
348
- })
349
-
350
- routerManager.onRouteRemove(() => {
351
- routeCount--
352
- console.log(`Total routes: ${routeCount}`)
353
- })
354
- ```
78
+ 登录页将 API Base 与 Token 存入 `localStorage`(键 `zhin_api_base`、`zhin_api_token`)。业务请求使用 `apiFetch`:
355
79
 
356
- ### 条件事件监听
80
+ ```ts
81
+ import { apiFetch } from "@zhin.js/client";
357
82
 
358
- ```tsx
359
- // 只监听特定路径的路由变化
360
- routerManager.onRouteAdd((route) => {
361
- if (route.path.startsWith('/admin')) {
362
- console.log('Admin route added:', route.path)
363
- }
364
- })
83
+ const res = await apiFetch("/api/console/request", {
84
+ method: "POST",
85
+ headers: { "Content-Type": "application/json" },
86
+ body: JSON.stringify({ method: "system.status", params: {} }),
87
+ });
365
88
  ```
366
89
 
367
- ## 插件配置系统
368
-
369
- ### Schema 支持的数据类型
370
-
371
- Zhin Client 配置系统完整支持所有 15 种 Schema 数据类型:
372
-
373
- #### 基础类型
374
- - `string` - 字符串(支持枚举/多行/单行)
375
- - `number` / `integer` - 数字(支持 min/max 限制)
376
- - `boolean` - 布尔值(开关控件)
90
+ 401 时清除 Token 并派发 `zhin:auth-required`。
377
91
 
378
- #### 特殊类型
379
- - `percent` - 百分比(滑块 + 数字输入)
380
- - `date` - 日期(日期选择器)
381
- - `regexp` - 正则表达式(带验证)
382
- - `const` - 常量(只读显示)
92
+ 辅助:`resolveApiUrl`、`resolveWebSocketUrl`(SSE `/api/events` 等)。
383
93
 
384
- #### 集合类型
385
- - `list` - 列表(支持嵌套)
386
- - `tuple` - 元组(固定字段)
387
- - `object` - 对象(嵌套结构)
388
- - `dict` - 字典(JSON 编辑器)
94
+ ## `createPluginRegisterHostApi`
389
95
 
390
- #### 组合类型
391
- - `union` - 联合类型(多选一)
392
- - `intersect` - 交叉类型(满足所有)
393
-
394
- #### 通用类型
395
- - `any` - 任意类型(JSON 编辑器)
396
- - `never` - 永不类型(警告提示)
397
-
398
- ### 使用插件配置组件
399
-
400
- ```tsx
401
- import PluginConfigForm from '@zhin.js/client/components/PluginConfigForm'
96
+ 将壳层已有的 React 与路由/工具注册函数适配为契约中的 `PluginRegisterHostApi`(含 `addPage` 别名 → `addRoute`):
402
97
 
403
- <PluginConfigForm
404
- pluginName="my-plugin"
405
- onClose={() => setDialogOpen(false)}
406
- onSuccess={() => refetchPlugin()}
407
- />
408
- ```
98
+ ```ts
99
+ import { createPluginRegisterHostApi } from "@zhin.js/client";
409
100
 
410
- ### 定义插件配置 Schema
411
-
412
- ```typescript
413
- import { Schema } from 'zhin.js'
414
-
415
- export const config = Schema.object({
416
- // 基础类型
417
- name: Schema.string('插件名称').required(),
418
- enabled: Schema.boolean('是否启用').default(true),
419
- port: Schema.number('端口').min(1).max(65535).default(3000),
420
-
421
- // 特殊类型
422
- opacity: Schema.percent('透明度').default(0.8),
423
- startDate: Schema.date('开始日期'),
424
- pattern: Schema.regexp('匹配模式'),
425
-
426
- // 集合类型
427
- tags: Schema.list(Schema.string(), '标签'),
428
- server: Schema.object({
429
- host: Schema.string().default('localhost'),
430
- port: Schema.number().default(3000)
431
- }),
432
-
433
- // 组合类型
434
- mode: Schema.union([
435
- Schema.const('auto'),
436
- Schema.const('manual')
437
- ])
438
- })
101
+ const hostApi = createPluginRegisterHostApi({ React, addRoute, addTool });
439
102
  ```
440
103
 
441
- ### 配置表单特性
104
+ ## 低级 API
442
105
 
443
- - **自动渲染**: 根据 Schema 类型自动选择合适的 UI 组件
444
- - **智能分组**: 简单字段直接展示,复杂字段可折叠
445
- - **嵌套支持**: 完整支持任意深度的嵌套结构
446
- - **实时验证**: 输入时进行类型验证和格式检查
447
- - **紧凑布局**: 使用 ScrollArea 和 Accordion 优化空间使用
106
+ - `fetchConsoleEntries(options?)` — 仅拉 JSON,不 import
107
+ - `registerConsolePluginsFromEntries(entries, hostApi, ...)` — 已知 entries 列表时注册
108
+ - `getRegisterFn(mod)` — 从动态模块解析 `register` 导出
448
109
 
449
- ## 组件架构
110
+ ## 构建
450
111
 
451
- ### PluginConfigForm 模块结构
452
-
453
- ```
454
- PluginConfigForm/
455
- ├── types.ts - 类型定义
456
- ├── BasicFieldRenderers.tsx - 基础类型渲染器 (9个)
457
- ├── CollectionFieldRenderers.tsx - 集合类型渲染器 (5个)
458
- ├── CompositeFieldRenderers.tsx - 组合类型渲染器 (2个)
459
- ├── FieldRenderer.tsx - 字段渲染器主入口
460
- ├── NestedFieldRenderer.tsx - 嵌套字段渲染器
461
- └── index.tsx - 主组件
112
+ ```bash
113
+ pnpm --filter @zhin.js/client build
462
114
  ```
463
115
 
464
- 17 个独立渲染器,职责单一,易于测试和扩展。
465
-
466
- ## 注意事项
467
-
468
- 1. **路由路径唯一性** - 确保路由路径的唯一性,避免冲突
469
- 2. **事件清理** - 记得清理事件监听器,避免内存泄漏
470
- 3. **性能考虑** - 大量路由时考虑使用懒加载
471
- 4. **类型安全** - 使用 TypeScript 确保类型安全
472
- 5. **Schema 定义** - 为插件配置定义清晰的 Schema,提供友好的描述信息
473
-
474
- ## 示例项目
116
+ ## 相关文档
475
117
 
476
- 查看 `app/src/main.tsx` 中的完整示例。
118
+ - [Remote Console 使用说明](../../../docs/console-remote.md)
119
+ - [Console 栈概览](../README.md)
120
+ - [@zhin.js/host-api 管理面 API](../../host/api/README.md)
@@ -3,8 +3,8 @@ import type {
3
3
  ConsoleEntriesResponse,
4
4
  ConsolePluginRegister,
5
5
  PluginRegisterHostApi,
6
- } from "@zhin.js/console-types";
7
- import { DEFAULT_CONSOLE_BASE_PATH } from "@zhin.js/console-types";
6
+ } from "@zhin.js/contract";
7
+ import { DEFAULT_CONSOLE_BASE_PATH } from "@zhin.js/contract";
8
8
 
9
9
  export type FetchConsoleEntriesOptions = {
10
10
  entriesUrl?: string;
package/client/index.ts CHANGED
@@ -4,7 +4,7 @@ export * from "./types";
4
4
  // Media URL resolution
5
5
  export { resolveMediaSrc, pickMediaRawUrl, type MediaKind } from "./mediaSrc";
6
6
 
7
- // Console app singleton (page-manager style)
7
+ // Console app singleton (pagemanager / registry style)
8
8
  export {
9
9
  app,
10
10
  type ConsoleApp,
@@ -19,24 +19,6 @@ export {
19
19
  // WebSocket (business data only)
20
20
  export * from "./websocket";
21
21
 
22
- // Re-export console-types
23
- export type {
24
- PluginRegisterHostApi,
25
- PluginAddRouteInput,
26
- PluginAddToolInput,
27
- ConsolePluginRegister,
28
- ConsoleClientEntry,
29
- ConsoleEntriesResponse,
30
- ConsoleEntry,
31
- ConsoleFileAddEntryInput,
32
- RuntimeEnv,
33
- } from "@zhin.js/console-types";
34
-
35
- export {
36
- DEFAULT_CONSOLE_BASE_PATH,
37
- CONSOLE_HOST_REACT_NAMESPACE_KEY,
38
- } from "@zhin.js/console-types";
39
-
40
22
  export { configureConsole, getRuntimeEnv } from "./runtime/index.js";
41
23
 
42
24
  export {
@@ -1,4 +1,4 @@
1
- import type { RuntimeEnv } from "@zhin.js/console-types";
1
+ import type { RuntimeEnv } from "@zhin.js/contract";
2
2
 
3
3
  let runtimeEnvFn: (() => RuntimeEnv) | null = null;
4
4
 
@@ -1,4 +1,4 @@
1
- import type { ConsoleClientEntry, ConsoleEntriesResponse, ConsolePluginRegister, PluginRegisterHostApi } from "@zhin.js/console-types";
1
+ import type { ConsoleClientEntry, ConsoleEntriesResponse, ConsolePluginRegister, PluginRegisterHostApi } from "@zhin.js/contract";
2
2
  export type FetchConsoleEntriesOptions = {
3
3
  entriesUrl?: string;
4
4
  signal?: AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"loadConsoleEntries.d.ts","sourceRoot":"","sources":["../../client/bootstrap/loadConsoleEntries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG;IACnE,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,qBAAqB,CAQvB;AAoCD,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAO3G;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,EAAE,qBAAqB,EAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,EAClE,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1F"}
1
+ {"version":3,"file":"loadConsoleEntries.d.ts","sourceRoot":"","sources":["../../client/bootstrap/loadConsoleEntries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,GAAG;IACnE,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,qBAAqB,CAQvB;AAoCD,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAO3G;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,kBAAkB,EAAE,EAC7B,OAAO,EAAE,qBAAqB,EAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,EAClE,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1F"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_CONSOLE_BASE_PATH } from "@zhin.js/console-types";
1
+ import { DEFAULT_CONSOLE_BASE_PATH } from "@zhin.js/contract";
2
2
  export function createPluginRegisterHostApi(options) {
3
3
  const addRoute = options.addRoute;
4
4
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"loadConsoleEntries.js","sourceRoot":"","sources":["../../client/bootstrap/loadConsoleEntries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadConsoleEntries.js","sourceRoot":"","sources":["../../client/bootstrap/loadConsoleEntries.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,6 @@ export * from "./types";
2
2
  export { resolveMediaSrc, pickMediaRawUrl, type MediaKind } from "./mediaSrc";
3
3
  export { app, type ConsoleApp, type AddRouteInput, type AddToolInput, type ConsoleRouteRecord, type RouteTreeNode, type ToolTreeNode, type ConsoleRouteRenderer, } from "./app";
4
4
  export * from "./websocket";
5
- export type { PluginRegisterHostApi, PluginAddRouteInput, PluginAddToolInput, ConsolePluginRegister, ConsoleClientEntry, ConsoleEntriesResponse, ConsoleEntry, ConsoleFileAddEntryInput, RuntimeEnv, } from "@zhin.js/console-types";
6
- export { DEFAULT_CONSOLE_BASE_PATH, CONSOLE_HOST_REACT_NAMESPACE_KEY, } from "@zhin.js/console-types";
7
5
  export { configureConsole, getRuntimeEnv } from "./runtime/index.js";
8
6
  export { createRegistryStore, useRegistry, type RegistryStore, } from "./store/createRegistryStore.js";
9
7
  export { cn } from "./console-utils/cn.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EACL,GAAG,EACH,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,OAAO,CAAC;AAGf,cAAc,aAAa,CAAC;AAG5B,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,UAAU,GACX,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,KAAK,aAAa,GACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EACjC,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EACL,GAAG,EACH,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,OAAO,CAAC;AAGf,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,KAAK,aAAa,GACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EACjC,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,mCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -2,11 +2,10 @@
2
2
  export * from "./types";
3
3
  // Media URL resolution
4
4
  export { resolveMediaSrc, pickMediaRawUrl } from "./mediaSrc";
5
- // Console app singleton (page-manager style)
5
+ // Console app singleton (pagemanager / registry style)
6
6
  export { app, } from "./app";
7
7
  // WebSocket (business data only)
8
8
  export * from "./websocket";
9
- export { DEFAULT_CONSOLE_BASE_PATH, CONSOLE_HOST_REACT_NAMESPACE_KEY, } from "@zhin.js/console-types";
10
9
  export { configureConsole, getRuntimeEnv } from "./runtime/index.js";
11
10
  export { createRegistryStore, useRegistry, } from "./store/createRegistryStore.js";
12
11
  export { cn } from "./console-utils/cn.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAE9E,6CAA6C;AAC7C,OAAO,EACL,GAAG,GAQJ,MAAM,OAAO,CAAC;AAEf,iCAAiC;AACjC,cAAc,aAAa,CAAC;AAe5B,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,WAAW,GAEZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,GAIlC,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,SAAS,CAAC;AAExB,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAE9E,uDAAuD;AACvD,OAAO,EACL,GAAG,GAQJ,MAAM,OAAO,CAAC;AAEf,iCAAiC;AACjC,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,WAAW,GAEZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iCAAiC,GAIlC,MAAM,mCAAmC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RuntimeEnv } from "@zhin.js/console-types";
1
+ import type { RuntimeEnv } from "@zhin.js/contract";
2
2
  export declare function configureConsole(options: {
3
3
  getRuntimeEnv: () => RuntimeEnv;
4
4
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,UAAU,CAAA;CAAE,QAE5E;AAED,wBAAgB,aAAa,IAAI,UAAU,CAG1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,UAAU,CAAA;CAAE,QAE5E;AAED,wBAAgB,aAAa,IAAI,UAAU,CAG1C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/client",
3
- "version": "1.1.4",
3
+ "version": "2.0.1",
4
4
  "description": "Zhin Remote Console client SDK (entries loader, app registry, REST/SSE) — UI lives in zhin-console repo",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "dependencies": {
15
15
  "clsx": "^2.1.1",
16
16
  "tailwind-merge": "^3.6.0",
17
- "@zhin.js/console-types": "0.1.5"
17
+ "@zhin.js/contract": "1.0.0"
18
18
  },
19
19
  "peerDependencies": {
20
20
  "react": ">=18"
@@ -33,7 +33,7 @@
33
33
  "repository": {
34
34
  "type": "git",
35
35
  "url": "git+https://github.com/zhinjs/zhin.git",
36
- "directory": "packages/client"
36
+ "directory": "packages/console/client"
37
37
  },
38
38
  "publishConfig": {
39
39
  "access": "public",