@morlay/ui-conversation-manager 0.1.9 → 0.1.11-alpha.0

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/client.d.cts CHANGED
@@ -3,7 +3,6 @@ import { MainPanelId } from "@deepseek-ai/dsh-client-ui-layout/client";
3
3
  import { SessionId } from "@deepseek-ai/dsh-session";
4
4
  import { InjectFace, PropsLocale, PropsRuntime } from "@deepseek-ai/dsh-client-ui-slots";
5
5
  import "react";
6
- //#region src/client/locales.d.ts
7
6
  declare const zh: {
8
7
  panel: string;
9
8
  title: string;
@@ -84,8 +83,6 @@ declare const zh: {
84
83
  "time.years": string;
85
84
  };
86
85
  type ConversationManagerKey = keyof typeof zh;
87
- //#endregion
88
- //#region src/client/controller.d.ts
89
86
  interface SessionRowRecord {
90
87
  sessionId: string;
91
88
  title: string | null;
@@ -181,14 +178,8 @@ export declare class ConversationManagerController {
181
178
  private collectGarbage;
182
179
  private loadUsage;
183
180
  }
184
- //#endregion
185
- //#region src/client/ConversationManagerIcon.d.ts
186
181
  type ConversationManagerIconProps = PropsRuntime<"sidebar.panellist">;
187
- //#endregion
188
- //#region src/client/ConversationManagerPage.d.ts
189
182
  type ConversationManagerPageProps = PropsRuntime<"main"> & PropsLocale<"conversationManager"> & InjectFace<ConversationManagerFace>;
190
- //#endregion
191
- //#region src/client/index.d.ts
192
183
  declare module "@deepseek-ai/dsh-client-ui-slots" {
193
184
  interface LocaleNamespaceMap {
194
185
  conversationManager: ConversationManagerKey;
@@ -199,5 +190,4 @@ export declare const PANEL_ID: MainPanelId;
199
190
  export declare const PANEL_ORDER = 1;
200
191
  export declare const inject: string[];
201
192
  export declare function apply(ctx: Context): void;
202
- //#endregion
203
193
  export type { ConversationManagerFace, ConversationManagerIconProps, ConversationManagerKey, ConversationManagerPageProps, ConversationManagerPorts };
package/dist/client.d.mts CHANGED
@@ -3,7 +3,6 @@ import { MainPanelId } from "@deepseek-ai/dsh-client-ui-layout/client";
3
3
  import { SessionId } from "@deepseek-ai/dsh-session";
4
4
  import { InjectFace, PropsLocale, PropsRuntime } from "@deepseek-ai/dsh-client-ui-slots";
5
5
  import "react";
6
- //#region src/client/locales.d.ts
7
6
  declare const zh: {
8
7
  panel: string;
9
8
  title: string;
@@ -84,8 +83,6 @@ declare const zh: {
84
83
  "time.years": string;
85
84
  };
86
85
  type ConversationManagerKey = keyof typeof zh;
87
- //#endregion
88
- //#region src/client/controller.d.ts
89
86
  interface SessionRowRecord {
90
87
  sessionId: string;
91
88
  title: string | null;
@@ -181,14 +178,8 @@ export declare class ConversationManagerController {
181
178
  private collectGarbage;
182
179
  private loadUsage;
183
180
  }
184
- //#endregion
185
- //#region src/client/ConversationManagerIcon.d.ts
186
181
  type ConversationManagerIconProps = PropsRuntime<"sidebar.panellist">;
187
- //#endregion
188
- //#region src/client/ConversationManagerPage.d.ts
189
182
  type ConversationManagerPageProps = PropsRuntime<"main"> & PropsLocale<"conversationManager"> & InjectFace<ConversationManagerFace>;
190
- //#endregion
191
- //#region src/client/index.d.ts
192
183
  declare module "@deepseek-ai/dsh-client-ui-slots" {
193
184
  interface LocaleNamespaceMap {
194
185
  conversationManager: ConversationManagerKey;
@@ -199,5 +190,4 @@ export declare const PANEL_ID: MainPanelId;
199
190
  export declare const PANEL_ORDER = 1;
200
191
  export declare const inject: string[];
201
192
  export declare function apply(ctx: Context): void;
202
- //#endregion
203
193
  export type { ConversationManagerFace, ConversationManagerIconProps, ConversationManagerKey, ConversationManagerPageProps, ConversationManagerPorts };
package/dist/client.mjs CHANGED
@@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
2
  import { Button, IconCloseOutlineRegular, IconSearchOutlineRegular, Input, Modal, Row, Spinner, Stack, Tag, Text, relativeTime } from "@morlay/dsh-client-ui-primitives";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { IconArchiveOutlineRegular } from "@deepseek-ai/dsh-client-ui-primitives";
5
- //#region src/client/controller.ts
5
+ // src/client/controller.ts
6
6
  const SESSION_DELETE_PATH = "/api/morlay/v1/session/delete";
7
7
  const SESSION_IMPORT_PATH = "/api/morlay/v1/session/import";
8
8
  const SESSION_EXPORT_PATH = "/api/morlay/v1/session/export";
@@ -127,9 +127,8 @@ function downloadBlob(blob, filename) {
127
127
  URL.revokeObjectURL(url);
128
128
  }, 0);
129
129
  }
130
- //#endregion
131
- //#region \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin/packages/session/ui-conversation-manager/src/client/ConversationManagerPage.module.css.mjs
132
- const css = ".AmU5Dq_page{width:100%;min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);font-size:14px;line-height:1.6;display:flex;overflow:hidden}.AmU5Dq_listPane{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.AmU5Dq_pageScroll{scrollbar-gutter:stable;flex:1;min-height:0;overflow:auto}.AmU5Dq_pageContent{max-width:960px;margin:0 auto;padding:0 clamp(24px,4vw,48px) 48px}.AmU5Dq_pageHeading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-top:28px;display:flex}[data-platform=darwin] .AmU5Dq_pageHeading{padding-top:calc(28px + var(--dsh-frame-top-clearance,0px))}.AmU5Dq_pageHeading h1{flex:1;min-width:0;margin:0;font-size:20px;font-weight:500;line-height:28px}.AmU5Dq_headingActions{flex:none;align-items:center;gap:8px;display:flex}.AmU5Dq_filters{flex-wrap:wrap;align-items:center;gap:8px 20px;margin-bottom:14px;display:flex}.AmU5Dq_filterTabs{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.AmU5Dq_filterTab{height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:14px;flex:none;align-items:center;padding:0 10px;font-size:14px;line-height:22px;display:inline-flex}.AmU5Dq_filterTab:hover{background:var(--dsw-alias-interactive-bg-hover)}.AmU5Dq_filterTabActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.AmU5Dq_searchField{border:.5px solid var(--dsw-alias-border-l3);height:36px;color:var(--dsw-alias-label-tertiary);border-radius:12px;align-items:center;margin:0 0 16px;padding:0 10px;transition:border-color .15s;display:flex}.AmU5Dq_searchField:hover{border-color:var(--dsw-alias-border-l2)}.AmU5Dq_searchField:focus-within{border-color:var(--dsw-alias-state-business-primary)}.AmU5Dq_searchField>:first-child{background:0 0;border:0;border-radius:0;flex:1;min-width:0;height:100%;padding:0}.AmU5Dq_searchField>:first-child:focus-within{border-color:#0000}.AmU5Dq_searchField>:first-child svg{width:14px;height:14px}.AmU5Dq_searchField input::placeholder{color:var(--dsw-alias-label-caption)}.AmU5Dq_searchField input:focus-visible{outline:none}.AmU5Dq_searchField input::-webkit-search-cancel-button{display:none}.AmU5Dq_searchClear{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);flex:none;margin-right:-6px;padding:0}.AmU5Dq_searchClear svg{width:14px;height:14px}.AmU5Dq_list{flex-direction:column;gap:4px;min-width:0;display:flex}.AmU5Dq_status{text-align:center;flex:1;place-items:center;min-width:0;min-height:0;padding:24px;display:grid}.AmU5Dq_statusBody{flex-direction:column;align-items:center;gap:12px;display:flex}.AmU5Dq_statusText{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.AmU5Dq_statusFailure{color:var(--dsw-alias-state-error-primary)}.AmU5Dq_listStatus{text-align:center;place-items:center;padding:32px 0;display:grid}";
130
+ // \0dsh-css-modules:/Users/morlay/src/github.com/morlay/dsh-plugin-main/packages/session/ui-conversation-manager/src/client/ConversationManagerPage.module.css.mjs
131
+ const css = ".hENcOW_page{width:100%;min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base);font-size:14px;line-height:1.6;display:flex;overflow:hidden}.hENcOW_listPane{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.hENcOW_pageScroll{scrollbar-gutter:stable;flex:1;min-height:0;overflow:auto}.hENcOW_pageContent{max-width:960px;margin:0 auto;padding:0 clamp(24px,4vw,48px) 48px}.hENcOW_pageHeading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding-top:28px;display:flex}[data-platform=darwin] .hENcOW_pageHeading{padding-top:calc(28px + var(--dsh-frame-top-clearance,0px))}.hENcOW_pageHeading h1{flex:1;min-width:0;margin:0;font-size:20px;font-weight:500;line-height:28px}.hENcOW_headingActions{flex:none;align-items:center;gap:8px;display:flex}.hENcOW_filters{flex-wrap:wrap;align-items:center;gap:8px 20px;margin-bottom:14px;display:flex}.hENcOW_filterTabs{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.hENcOW_filterTab{height:28px;color:var(--dsw-alias-label-tertiary);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:14px;flex:none;align-items:center;padding:0 10px;font-size:14px;line-height:22px;display:inline-flex}.hENcOW_filterTab:hover{background:var(--dsw-alias-interactive-bg-hover)}.hENcOW_filterTabActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.hENcOW_searchField{border:.5px solid var(--dsw-alias-border-l3);height:36px;color:var(--dsw-alias-label-tertiary);border-radius:12px;align-items:center;margin:0 0 16px;padding:0 10px;transition:border-color .15s;display:flex}.hENcOW_searchField:hover{border-color:var(--dsw-alias-border-l2)}.hENcOW_searchField:focus-within{border-color:var(--dsw-alias-state-business-primary)}.hENcOW_searchField>:first-child{background:0 0;border:0;border-radius:0;flex:1;min-width:0;height:100%;padding:0}.hENcOW_searchField>:first-child:focus-within{border-color:#0000}.hENcOW_searchField>:first-child svg{width:14px;height:14px}.hENcOW_searchField input::placeholder{color:var(--dsw-alias-label-caption)}.hENcOW_searchField input:focus-visible{outline:none}.hENcOW_searchField input::-webkit-search-cancel-button{display:none}.hENcOW_searchClear{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);flex:none;margin-right:-6px;padding:0}.hENcOW_searchClear svg{width:14px;height:14px}.hENcOW_list{flex-direction:column;gap:4px;min-width:0;display:flex}.hENcOW_status{text-align:center;flex:1;place-items:center;min-width:0;min-height:0;padding:24px;display:grid}.hENcOW_statusBody{flex-direction:column;align-items:center;gap:12px;display:flex}.hENcOW_statusText{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}.hENcOW_statusFailure{color:var(--dsw-alias-state-error-primary)}.hENcOW_listStatus{text-align:center;place-items:center;padding:32px 0;display:grid}";
133
132
  const tagId = "@morlay/ui-conversation-manager/ConversationManagerPage.module.css";
134
133
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=\"@morlay/ui-conversation-manager/ConversationManagerPage.module.css\"]") === null) {
135
134
  const tag = document.createElement("style");
@@ -139,27 +138,26 @@ if (typeof document !== "undefined" && document.querySelector("style[data-plugin
139
138
  document.head.appendChild(tag);
140
139
  }
141
140
  var ConversationManagerPage_module_css_default = {
142
- "statusText": "AmU5Dq_statusText",
143
- "searchClear": "AmU5Dq_searchClear",
144
- "statusBody": "AmU5Dq_statusBody",
145
- "filters": "AmU5Dq_filters",
146
- "searchField": "AmU5Dq_searchField",
147
- "pageContent": "AmU5Dq_pageContent",
148
- "pageScroll": "AmU5Dq_pageScroll",
149
- "pageHeading": "AmU5Dq_pageHeading",
150
- "statusFailure": "AmU5Dq_statusFailure",
151
- "filterTabActive": "AmU5Dq_filterTabActive",
152
- "list": "AmU5Dq_list",
153
- "status": "AmU5Dq_status",
154
- "listStatus": "AmU5Dq_listStatus",
155
- "listPane": "AmU5Dq_listPane",
156
- "filterTab": "AmU5Dq_filterTab",
157
- "headingActions": "AmU5Dq_headingActions",
158
- "filterTabs": "AmU5Dq_filterTabs",
159
- "page": "AmU5Dq_page"
141
+ "filterTab": "hENcOW_filterTab",
142
+ "list": "hENcOW_list",
143
+ "statusBody": "hENcOW_statusBody",
144
+ "statusText": "hENcOW_statusText",
145
+ "statusFailure": "hENcOW_statusFailure",
146
+ "pageScroll": "hENcOW_pageScroll",
147
+ "status": "hENcOW_status",
148
+ "searchClear": "hENcOW_searchClear",
149
+ "headingActions": "hENcOW_headingActions",
150
+ "searchField": "hENcOW_searchField",
151
+ "filters": "hENcOW_filters",
152
+ "page": "hENcOW_page",
153
+ "listPane": "hENcOW_listPane",
154
+ "pageContent": "hENcOW_pageContent",
155
+ "filterTabs": "hENcOW_filterTabs",
156
+ "pageHeading": "hENcOW_pageHeading",
157
+ "filterTabActive": "hENcOW_filterTabActive",
158
+ "listStatus": "hENcOW_listStatus"
160
159
  };
161
- //#endregion
162
- //#region src/client/format.ts
160
+ // src/client/format.ts
163
161
  function trim(value) {
164
162
  return value >= 100 ? String(Math.round(value)) : value.toFixed(1).replace(/\.0$/u, "");
165
163
  }
@@ -178,8 +176,7 @@ function formatPercent(value) {
178
176
  if (!Number.isFinite(value) || value <= 0) return "0%";
179
177
  return `${value >= 100 ? Math.round(value) : Math.round(value * 10) / 10}%`;
180
178
  }
181
- //#endregion
182
- //#region src/client/ConversationManagerPage.tsx
179
+ // src/client/ConversationManagerPage.tsx
183
180
  const PAGE_SIZE = 20;
184
181
  const USAGE_SESSION_ROWS = 20;
185
182
  function timeLabel(updatedAt, now, t) {
@@ -1002,13 +999,11 @@ function UsageView({ report, loading, error, tab, onTab, range, onRange, onlySub
1002
999
  ]
1003
1000
  });
1004
1001
  }
1005
- //#endregion
1006
- //#region src/client/ConversationManagerIcon.tsx
1002
+ // src/client/ConversationManagerIcon.tsx
1007
1003
  function ConversationManagerIcon({ size }) {
1008
1004
  return /* @__PURE__ */ jsx(IconArchiveOutlineRegular, { size });
1009
1005
  }
1010
- //#endregion
1011
- //#region src/client/locales.ts
1006
+ // src/client/locales.ts
1012
1007
  const zh = {
1013
1008
  panel: "对话管理",
1014
1009
  title: "对话管理",
@@ -1167,8 +1162,7 @@ const en = {
1167
1162
  "time.months": "{n}mo",
1168
1163
  "time.years": "{n}y"
1169
1164
  };
1170
- //#endregion
1171
- //#region src/client/index.ts
1165
+ // src/client/index.ts
1172
1166
  const NS = "conversationManager";
1173
1167
  const PANEL_ID = "conversations";
1174
1168
  const PANEL_ORDER = 1;
@@ -1207,5 +1201,4 @@ function apply(ctx) {
1207
1201
  locale: NS
1208
1202
  }, ConversationManagerIcon));
1209
1203
  }
1210
- //#endregion
1211
1204
  export { ConversationManagerController, ConversationManagerRequestError, NS, PANEL_ID, PANEL_ORDER, apply, inject };
package/dist/index.cjs CHANGED
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/index.ts
2
+ // src/index.ts
3
3
  function apply() {}
4
- //#endregion
5
4
  exports.apply = apply;
package/dist/index.d.mts CHANGED
@@ -1,3 +1 @@
1
- //#region src/index.d.ts
2
- export declare function apply(): void;
3
- //#endregion
1
+ export declare function apply(): void;
package/dist/index.mjs CHANGED
@@ -1,4 +1,3 @@
1
- //#region src/index.ts
1
+ // src/index.ts
2
2
  function apply() {}
3
- //#endregion
4
3
  export { apply };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morlay/ui-conversation-manager",
3
- "version": "0.1.9",
3
+ "version": "0.1.11-alpha.0",
4
4
  "description": "「对话管理」全局面板页(浏览器半):会话与统计两层 Tabs——会话视图给出全量会话(含已归档)的搜索、分页、归档 / 取消归档 / 导出 / 删除、导入为新会话与孤儿数据 GC,统计视图给出全部对话的 token 用量。",
5
5
  "keywords": [
6
6
  "archived-sessions",
@@ -36,7 +36,7 @@
36
36
  "./locale/*.json": "./locale/*.json"
37
37
  },
38
38
  "dependencies": {
39
- "@morlay/dsh-client-ui-primitives": "0.0.12"
39
+ "@morlay/dsh-client-ui-primitives": "0.0.14-alpha.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@testing-library/react": "^16.1.0",
@@ -45,19 +45,22 @@
45
45
  "react-dom": "^18.2.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "@deepseek-ai/cordis": "^4.0.5",
49
- "@deepseek-ai/dsh-api-session-controller": "^0.2.1-rc.1",
50
- "@deepseek-ai/dsh-client-locale": "^0.2.1-rc.1",
51
- "@deepseek-ai/dsh-client-ui-layout": "^0.2.1-rc.1",
52
- "@deepseek-ai/dsh-client-ui-primitives": "^0.2.1-rc.1",
53
- "@deepseek-ai/dsh-client-ui-renderer": "^0.2.1-rc.1",
54
- "@deepseek-ai/dsh-client-ui-session": "^0.2.1-rc.1",
55
- "@deepseek-ai/dsh-client-ui-sidebar": "^0.2.1-rc.1",
56
- "@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.1",
57
- "@deepseek-ai/dsh-client-ui-workspace": "^0.2.1-rc.1",
58
- "@deepseek-ai/dsh-session": "^0.2.1-rc.1",
48
+ "@deepseek-ai/cordis": "^4.0.6-alpha.1",
49
+ "@deepseek-ai/dsh-api-session-controller": "^0.2.2-alpha.2",
50
+ "@deepseek-ai/dsh-client-locale": "^0.2.2-alpha.2",
51
+ "@deepseek-ai/dsh-client-ui-layout": "^0.2.2-alpha.2",
52
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.2.2-alpha.2",
53
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.2.2-alpha.2",
54
+ "@deepseek-ai/dsh-client-ui-session": "^0.2.2-alpha.2",
55
+ "@deepseek-ai/dsh-client-ui-sidebar": "^0.2.2-alpha.2",
56
+ "@deepseek-ai/dsh-client-ui-slots": "^0.2.2-alpha.2",
57
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.2.2-alpha.2",
58
+ "@deepseek-ai/dsh-session": "^0.2.2-alpha.2",
59
59
  "react": "^18.2.0"
60
60
  },
61
+ "engines": {
62
+ "dsh": ">= 0.2.2-alpha.2 < 0.2.3"
63
+ },
61
64
  "dsh": {
62
65
  "client": {
63
66
  "platform": "web",
@@ -72,9 +75,6 @@
72
75
  ]
73
76
  }
74
77
  },
75
- "engines": {
76
- "dsh": ">= 0.2.1-rc.1 < 0.2.2"
77
- },
78
78
  "scripts": {
79
79
  "build": "pnpm exec tsdown"
80
80
  }
@@ -39,7 +39,7 @@ export const PANEL_ORDER = 1;
39
39
  export const inject = ["slots", "locale", "uiWorkspace", "sessions"];
40
40
 
41
41
  export function apply(ctx: ClientContext): void {
42
- // 基础面随本包 inline(不再是装配行):装上它提供的字典、字段槽与按行配置页;多份副本只装一次。
42
+ // 基础面(内联库)由 `@morlay/dsh-client-modules` 的 client 行统一装配;这里只注册本行的字段文案。
43
43
  ctx.effect(() => ctx.locale.register(NS, { zh, en }), "ui-conversation-manager: dictionaries");
44
44
  const t = ctx.locale.bind(NS);
45
45
  // ctx.sessions 的类型被别的 client 半的声明占住(SessionStore),按既有做法从服务面取。