@michengai/dsh-archive-manager 1.0.2 → 1.0.3
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/CHANGELOG.md +8 -0
- package/CHANGELOG.zh-CN.md +8 -0
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/lib/client.js +1074 -5456
- package/lib/session-repair.js +9 -1
- package/lib/workspace.js +99 -7
- package/package.json +49 -42
package/lib/session-repair.js
CHANGED
|
@@ -69,8 +69,15 @@ async function regularDirectory(directory) {
|
|
|
69
69
|
current = parent;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
function childCatalogFact(header, events, inheritedEventCount) {
|
|
73
|
+
if (typeof header.id !== "string" || header.id.length === 0) return;
|
|
74
|
+
if (typeof header.createdAt !== "number" || !Number.isSafeInteger(header.createdAt) || header.createdAt < 0) return;
|
|
75
|
+
if (!Number.isSafeInteger(inheritedEventCount) || inheritedEventCount < 0) return;
|
|
76
|
+
const descriptors = events.filter((event) => event.type === "subagent/descriptor" && typeof event.seq === "number" && event.seq >= inheritedEventCount);
|
|
77
|
+
return { childId: header.id, childCreatedAt: header.createdAt, descriptorCount: descriptors.length, descriptor: descriptors[0]?.data ?? null };
|
|
78
|
+
}
|
|
72
79
|
async function prepareAutomationRepair({ directory, target, sessionId, format }) {
|
|
73
|
-
if (!format || format.currentVersion
|
|
80
|
+
if (!format || !Number.isInteger(format.currentVersion) || format.currentVersion < 3 || typeof format.createRestore !== "function") throw new Error("\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u4FEE\u590D\uFF0C\u8BF7\u5347\u7EA7 DSH \u540E\u91CD\u8BD5");
|
|
74
81
|
await regularDirectory(directory);
|
|
75
82
|
const names = (await readdir(directory)).filter((name) => /^session(?:\.v[1-9][0-9]*)?\.jsonl(?:\.zstd)?$/.test(name));
|
|
76
83
|
const sources = names.filter((name) => /^session\.jsonl(?:\.zstd)?$/.test(name));
|
|
@@ -139,6 +146,7 @@ async function prepareAutomationRepair({ directory, target, sessionId, format })
|
|
|
139
146
|
} };
|
|
140
147
|
}
|
|
141
148
|
export {
|
|
149
|
+
childCatalogFact,
|
|
142
150
|
classifySessionError,
|
|
143
151
|
decodeRepairLog,
|
|
144
152
|
normalizeAutomationSources,
|
package/lib/workspace.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { record, errorMessage, errorCode } from "./contracts.js";
|
|
2
2
|
import * as SessionRuntime from "@deepseek-ai/dsh-session";
|
|
3
|
-
import { prepareAutomationRepair } from "./session-repair.js";
|
|
3
|
+
import { childCatalogFact, prepareAutomationRepair } from "./session-repair.js";
|
|
4
4
|
import { repairInputSchema, classifySessionError, detailsInputSchema, countConversationTurns, discoveryInvocations, searchInputSchema, previewInputSchema, extractConversation, findContentMatch, previewConversation } from "./archive-discovery.js";
|
|
5
5
|
import { lstat, rm } from "node:fs/promises";
|
|
6
6
|
import { basename, dirname, isAbsolute, join, resolve } from "node:path";
|
|
@@ -244,6 +244,35 @@ function registerHostRemote(ctx) {
|
|
|
244
244
|
typertCtx.typert.register(ARCHIVE_MANAGER_TYPERT);
|
|
245
245
|
});
|
|
246
246
|
}
|
|
247
|
+
async function hostRepairFormat(format, children = []) {
|
|
248
|
+
if (!format || !Number.isInteger(format.currentVersion) || format.currentVersion < 3) throw new Error("\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u4FEE\u590D\uFF0C\u8BF7\u5347\u7EA7 DSH \u540E\u91CD\u8BD5");
|
|
249
|
+
if (typeof format.createRestore === "function") return format;
|
|
250
|
+
if (typeof format.encodeHeader !== "function" || typeof format.encodeEvent !== "function") throw new Error("\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u4FEE\u590D\uFF0C\u8BF7\u5347\u7EA7 DSH \u540E\u91CD\u8BD5");
|
|
251
|
+
const catalog = await import("@deepseek-ai/dsh-session-format-catalog");
|
|
252
|
+
if (typeof catalog.createSessionFormatCatalogWithChildren !== "function") throw new Error("\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u4FEE\u590D\uFF0C\u8BF7\u5347\u7EA7 DSH \u540E\u91CD\u8BD5");
|
|
253
|
+
const bound = catalog.createSessionFormatCatalogWithChildren(children);
|
|
254
|
+
return { ...format, createRestore(header) {
|
|
255
|
+
return bound.createRestore(header, { recovery: "recoverable", validation: "transformed" });
|
|
256
|
+
} };
|
|
257
|
+
}
|
|
258
|
+
let activeSessionError;
|
|
259
|
+
async function activeSessionErrorType() {
|
|
260
|
+
if (activeSessionError !== void 0) return activeSessionError ?? void 0;
|
|
261
|
+
const workspace = await import("@deepseek-ai/dsh-workspace");
|
|
262
|
+
activeSessionError = typeof workspace.WorkspaceActiveSessionError === "function" ? workspace.WorkspaceActiveSessionError : null;
|
|
263
|
+
return activeSessionError ?? void 0;
|
|
264
|
+
}
|
|
265
|
+
function snapshotUsesProjectionKeys(cache) {
|
|
266
|
+
return cache.cachedSnapshot.length === 2;
|
|
267
|
+
}
|
|
268
|
+
function projectionSnapshot(cache, header, inheritedEventCount) {
|
|
269
|
+
if (snapshotUsesProjectionKeys(cache)) return cache.cachedSnapshot(header);
|
|
270
|
+
return cache.cachedSnapshot(header, inheritedEventCount);
|
|
271
|
+
}
|
|
272
|
+
function hostEvent(ctx, name) {
|
|
273
|
+
const caller = ctx[name];
|
|
274
|
+
return typeof caller === "function" ? caller : void 0;
|
|
275
|
+
}
|
|
247
276
|
var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
248
277
|
static inject = [
|
|
249
278
|
"storageDomain",
|
|
@@ -344,8 +373,11 @@ var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
|
344
373
|
const header = await this.readSessionHeader(sessionId);
|
|
345
374
|
const location = await persistence?.locate?.(header);
|
|
346
375
|
const directory = location && jsonlSessionDirectory(persistence, header, location);
|
|
347
|
-
|
|
348
|
-
|
|
376
|
+
const version = persistence.generationFormat?.currentVersion;
|
|
377
|
+
const currentGeneration = Number.isInteger(version) && version >= 3 ? new RegExp(`^session\\.v${version}\\.jsonl(?:\\.zstd)?$`) : void 0;
|
|
378
|
+
if (!directory || currentGeneration === void 0 || !currentGeneration.test(basename(location.path))) throw new Error("\u5F53\u524D\u5B58\u50A8\u540E\u7AEF\u6216\u683C\u5F0F\u4E0D\u652F\u6301\u81EA\u52A8\u4FEE\u590D");
|
|
379
|
+
const format = await hostRepairFormat(persistence.generationFormat, await this.childCatalogFacts(sessionId));
|
|
380
|
+
return prepareAutomationRepair({ directory, target: location.path, sessionId, format: { ...format, validateBytes: async (bytes) => {
|
|
349
381
|
if (location.path.endsWith(".zstd")) {
|
|
350
382
|
if (typeof persistence.readZstdPrefix !== "function") throw new Error("\u5F53\u524D\u5BBF\u4E3B\u7F3A\u5C11\u538B\u7F29\u65E5\u5FD7\u6821\u9A8C\u80FD\u529B");
|
|
351
383
|
const parsed = await persistence.readZstdPrefix(bytes);
|
|
@@ -602,7 +634,7 @@ var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
|
602
634
|
if (persistence === void 0 || typeof persistence.readFrom !== "function" && typeof persistence.open !== "function" || projections === void 0 || typeof projections.restore !== "function")
|
|
603
635
|
return false;
|
|
604
636
|
try {
|
|
605
|
-
if (!header.isSeeded && cache
|
|
637
|
+
if (!header.isSeeded && projectionSnapshot(cache, header, 0) !== void 0)
|
|
606
638
|
return false;
|
|
607
639
|
const stored = await this.readStoredProjectionSource(persistence, header.id);
|
|
608
640
|
const meta = stored.meta ?? header;
|
|
@@ -619,7 +651,7 @@ var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
|
619
651
|
);
|
|
620
652
|
return false;
|
|
621
653
|
}
|
|
622
|
-
if (cache
|
|
654
|
+
if (projectionSnapshot(cache, meta, inheritedEventCount) !== void 0) return false;
|
|
623
655
|
const restored = projections.restore(
|
|
624
656
|
{},
|
|
625
657
|
stored.events,
|
|
@@ -670,17 +702,46 @@ var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
|
670
702
|
* 未知 id 直接跳过,不抛 `UNKNOWN_SESSION`,避免把幽灵 id 写进集合。
|
|
671
703
|
* @param sessionId - 要归档的会话。
|
|
672
704
|
*/
|
|
673
|
-
async archiveSession(sessionId) {
|
|
705
|
+
async archiveSession(sessionId, options) {
|
|
674
706
|
return this.enqueueOperation(async () => {
|
|
675
707
|
if (this.requireState().archivedSessionIds.includes(sessionId)) return;
|
|
676
708
|
if (!await this.sessionKnown(sessionId)) return;
|
|
709
|
+
const stopActivity = options?.stopActivity === true;
|
|
710
|
+
const ActiveSession = await activeSessionErrorType();
|
|
711
|
+
if (!stopActivity && ActiveSession !== void 0) {
|
|
712
|
+
const activity = await this.sessionActivity(sessionId);
|
|
713
|
+
if (activity.length > 0) throw new ActiveSession(sessionId, activity);
|
|
714
|
+
}
|
|
677
715
|
const state = this.requireState();
|
|
716
|
+
const pinnedSessionIds = Array.isArray(state.pinnedSessionIds) ? state.pinnedSessionIds.filter((id) => id !== sessionId) : void 0;
|
|
678
717
|
await this.setState({
|
|
679
718
|
...state,
|
|
680
|
-
archivedSessionIds: [...state.archivedSessionIds, sessionId]
|
|
719
|
+
archivedSessionIds: [...state.archivedSessionIds, sessionId],
|
|
720
|
+
...pinnedSessionIds === void 0 ? {} : { pinnedSessionIds }
|
|
681
721
|
});
|
|
722
|
+
if (stopActivity && ActiveSession !== void 0) await this.stopSessionActivity(sessionId);
|
|
682
723
|
});
|
|
683
724
|
}
|
|
725
|
+
/** 0.1.7 起宿主用 waterfall 报告仍在运行的回合、子代理、任务和提醒。旧宿主没有该事件。 */
|
|
726
|
+
async sessionActivity(sessionId) {
|
|
727
|
+
const waterfall = hostEvent(this.ctx, "waterfall");
|
|
728
|
+
if (waterfall === void 0) return [];
|
|
729
|
+
const activity = await waterfall.call(this.ctx, "workspace/session-activity", { sessionId }, () => Promise.resolve([]));
|
|
730
|
+
return Array.isArray(activity) ? activity : [];
|
|
731
|
+
}
|
|
732
|
+
/** 归档已经写入后再请求停止;提供方失败只记日志,不撤回归档。 */
|
|
733
|
+
async stopSessionActivity(sessionId) {
|
|
734
|
+
const parallel = hostEvent(this.ctx, "parallel");
|
|
735
|
+
if (parallel === void 0) return;
|
|
736
|
+
try {
|
|
737
|
+
await parallel.call(this.ctx, "workspace/session-stop", { sessionId });
|
|
738
|
+
} catch (error) {
|
|
739
|
+
const failures = error instanceof AggregateError ? error.errors : [error];
|
|
740
|
+
for (const failure of failures) {
|
|
741
|
+
this.ctx.logger.warn(`archive-manager: stopping session "${sessionId}" for archive failed: ${String(failure)}`);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
684
745
|
/**
|
|
685
746
|
* 把一个会话移出注册表全局归档集合,恢复其正常可见性(其记账位从未
|
|
686
747
|
* 移动,会话在原工作区位置重新出现)。与官方一致:不做会话存在性检查,
|
|
@@ -1032,6 +1093,37 @@ var ArchiveWorkspaceRegistry = class extends WorkspaceRegistry {
|
|
|
1032
1093
|
if (entity !== void 0) entity.record = next;
|
|
1033
1094
|
}
|
|
1034
1095
|
}
|
|
1096
|
+
/** 修复父日志前收集直属 subagent 的目录证据。读不出来的子日志跳过,不把其他子会话一起丢掉。 */
|
|
1097
|
+
async childCatalogFacts(sessionId) {
|
|
1098
|
+
const ids = /* @__PURE__ */ new Set();
|
|
1099
|
+
const sessions = this.ctx.get("sessions");
|
|
1100
|
+
if (typeof sessions?.list === "function") {
|
|
1101
|
+
for (const session of sessions.list()) {
|
|
1102
|
+
const header = session?.header;
|
|
1103
|
+
if (header?.parentSession === sessionId && header.origin === "subagent" && typeof session.id === "string") ids.add(session.id);
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
try {
|
|
1107
|
+
for (const header of await this.listStoredHeaders()) {
|
|
1108
|
+
if (header.parentSession === sessionId && header.origin === "subagent") ids.add(header.id);
|
|
1109
|
+
}
|
|
1110
|
+
} catch (error) {
|
|
1111
|
+
this.ctx.logger.warn(`archive-manager: child header list for "${sessionId}" failed: ${String(error)}`);
|
|
1112
|
+
}
|
|
1113
|
+
const persistence = this.ctx.get("sessionPersistence");
|
|
1114
|
+
const facts = [];
|
|
1115
|
+
for (const childId of ids) {
|
|
1116
|
+
try {
|
|
1117
|
+
if (persistence === void 0) continue;
|
|
1118
|
+
const stored = await this.readStoredProjectionSource(persistence, childId);
|
|
1119
|
+
const fact = childCatalogFact(stored.meta, stored.events, stored.inheritedEventCount ?? 0);
|
|
1120
|
+
if (fact !== void 0) facts.push(fact);
|
|
1121
|
+
} catch (error) {
|
|
1122
|
+
this.ctx.logger.warn(`archive-manager: child catalog fact for "${childId}" skipped: ${String(error)}`);
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
return facts;
|
|
1126
|
+
}
|
|
1035
1127
|
/** 尽力而为的级联删除:删除 `sessionId` 的 SUBAGENT 子会话。
|
|
1036
1128
|
* 仅头部标记 `origin: "subagent"` 的会话参与:单凭 `parentSession` 有歧义
|
|
1037
1129
|
*(fork 分支也携带它),而 fork 分支是独立的用户会话,绝不能被级联删除。 */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michengai/dsh-archive-manager",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "NPM-installable DSH Web plugin for managing archived sessions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@11.22.0",
|
|
@@ -40,60 +40,67 @@
|
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
43
|
-
"@deepseek-ai/dsh-client-connection": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
44
|
-
"@deepseek-ai/dsh-client-locale": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
45
|
-
"@deepseek-ai/dsh-client-runtime": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
46
|
-
"@deepseek-ai/dsh-client-store": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
47
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
48
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
49
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
50
|
-
"@deepseek-ai/dsh-client-ui-workspace": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
51
|
-
"@deepseek-ai/dsh-host-webserver": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
52
|
-
"@deepseek-ai/dsh-session": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2",
|
|
53
|
-
"@deepseek-ai/dsh-session-
|
|
54
|
-
"@deepseek-ai/dsh-
|
|
55
|
-
"@deepseek-ai/dsh-
|
|
56
|
-
"@deepseek-ai/dsh-
|
|
57
|
-
"@deepseek-ai/dsh-typert-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
43
|
+
"@deepseek-ai/dsh-client-connection": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
44
|
+
"@deepseek-ai/dsh-client-locale": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
45
|
+
"@deepseek-ai/dsh-client-runtime": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
46
|
+
"@deepseek-ai/dsh-client-store": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
47
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
48
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
49
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
50
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
51
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
52
|
+
"@deepseek-ai/dsh-session": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
53
|
+
"@deepseek-ai/dsh-session-format-catalog": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
54
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
55
|
+
"@deepseek-ai/dsh-spill-local": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
56
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
57
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
58
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1",
|
|
59
|
+
"@deepseek-ai/dsh-workspace": "0.1.0-rc.8 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.6-alpha.1 || 0.1.6-alpha.2 || 0.1.7-alpha.1"
|
|
59
60
|
},
|
|
60
61
|
"peerDependenciesMeta": {
|
|
61
62
|
"@deepseek-ai/dsh-client-runtime": {
|
|
62
63
|
"optional": true
|
|
63
64
|
},
|
|
65
|
+
"@deepseek-ai/dsh-session-format-catalog": {
|
|
66
|
+
"optional": true
|
|
67
|
+
},
|
|
64
68
|
"@deepseek-ai/dsh-client-store": {
|
|
65
69
|
"optional": true
|
|
66
70
|
}
|
|
67
71
|
},
|
|
68
72
|
"devDependencies": {
|
|
69
|
-
"@deepseek-ai/cordis": "4.0.
|
|
70
|
-
"@deepseek-ai/dsh-api-gateway": "0.1.
|
|
71
|
-
"@deepseek-ai/dsh-client-connection": "0.1.
|
|
72
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
73
|
-
"@deepseek-ai/dsh-client-store": "0.1.
|
|
74
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.
|
|
75
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.1.
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-workspace": "0.1.
|
|
80
|
-
"@deepseek-ai/dsh-host-webserver": "0.1.
|
|
81
|
-
"@deepseek-ai/dsh-invariants": "0.1.
|
|
82
|
-
"@deepseek-ai/dsh-scope": "0.1.
|
|
83
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
84
|
-
"@deepseek-ai/dsh-session-
|
|
85
|
-
"@deepseek-ai/dsh-session-
|
|
86
|
-
"@deepseek-ai/dsh-session-projection
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-spill
|
|
89
|
-
"@deepseek-ai/dsh-
|
|
90
|
-
"@deepseek-ai/dsh-storage
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-typert-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
73
|
+
"@deepseek-ai/cordis": "4.0.3",
|
|
74
|
+
"@deepseek-ai/dsh-api-gateway": "0.1.7-alpha.1",
|
|
75
|
+
"@deepseek-ai/dsh-client-connection": "0.1.7-alpha.1",
|
|
76
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-alpha.1",
|
|
77
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-alpha.1",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-alpha.1",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-alpha.1",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-alpha.1",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "0.1.7-alpha.1",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-alpha.1",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.7-alpha.1",
|
|
84
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.7-alpha.1",
|
|
85
|
+
"@deepseek-ai/dsh-invariants": "0.1.7-alpha.1",
|
|
86
|
+
"@deepseek-ai/dsh-scope": "0.1.7-alpha.1",
|
|
87
|
+
"@deepseek-ai/dsh-session": "0.1.7-alpha.1",
|
|
88
|
+
"@deepseek-ai/dsh-session-format-catalog": "0.1.7-alpha.1",
|
|
89
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.7-alpha.1",
|
|
90
|
+
"@deepseek-ai/dsh-session-projection": "0.1.7-alpha.1",
|
|
91
|
+
"@deepseek-ai/dsh-session-projection-cache": "0.1.7-alpha.1",
|
|
92
|
+
"@deepseek-ai/dsh-spill": "0.1.7-alpha.1",
|
|
93
|
+
"@deepseek-ai/dsh-spill-local": "0.1.7-alpha.1",
|
|
94
|
+
"@deepseek-ai/dsh-storage": "0.1.7-alpha.1",
|
|
95
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.7-alpha.1",
|
|
96
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.7-alpha.1",
|
|
97
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.7-alpha.1",
|
|
98
|
+
"@deepseek-ai/dsh-workspace": "0.1.7-alpha.1",
|
|
94
99
|
"@types/node": "^22.20.4",
|
|
95
100
|
"@types/react": "^18.3.31",
|
|
96
101
|
"@types/react-dom": "^18.0.0",
|
|
102
|
+
"antd": "6.6.5",
|
|
103
|
+
"dayjs": "1.11.23",
|
|
97
104
|
"esbuild": "0.25.0",
|
|
98
105
|
"immer": "10.1.1",
|
|
99
106
|
"react": "18.3.1",
|