dsh-plugin-om 0.0.38 → 0.0.40

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
@@ -21,7 +21,7 @@
21
21
 
22
22
  ## 安装与启用
23
23
 
24
- 本插件适配 dsh 0.1.2-rc.1 及以上版本(客户端压缩卡片依赖宿主 `uiConversation` 服务)。`$DSH_HOME` 缺省为 `~/.dsh`,profile 描述 dsh 进程的启动模式。
24
+ 本插件适配 dsh 0.1.5-rc.2 及以上版本(客户端压缩卡片依赖宿主 `uiConversation` 服务)。`$DSH_HOME` 缺省为 `~/.dsh`,profile 描述 dsh 进程的启动模式。
25
25
 
26
26
  ```sh
27
27
  dsh plugin --profile <profile> add dsh-plugin-om
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-log.d.ts","sourceRoot":"","sources":["../src/compaction-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAA2B,MAAM,sBAAsB,CAAC;AAG/F,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,YAAY,CAAC;AAErD,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAS3D,8CAA8C;AAC9C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,MAAM,CAER;AAkCD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACxC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAsBR;AAYD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE;IACP,2BAA2B;IAC3B,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiD7B"}
1
+ {"version":3,"file":"compaction-log.d.ts","sourceRoot":"","sources":["../src/compaction-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAA2B,MAAM,sBAAsB,CAAC;AAG/F,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,YAAY,CAAC;AAErD,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAS3D,8CAA8C;AAC9C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GACf,MAAM,CAER;AAkCD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EACxC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAsBR;AAYD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE;IACP,2BAA2B;IAC3B,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,EAAE,gBAAgB,CAAC;IACxB,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkD7B"}
@@ -77,10 +77,11 @@ export declare function resolveCompressionEffort(ctx: Context, session: Session,
77
77
  */
78
78
  export declare function isPairBalancedAfter(session: Session, seq: number): boolean;
79
79
  /**
80
- * 观察压缩区间:压缩边界后的首个表层节点 → 触发点完整消息(endMessageIndex)对应的
81
- * 表层终点(取该完整消息最后一个事件 seq 在表层中的位置);区间终点回退到
82
- * tool-call/result 配对平衡点(不切段)。触发点完整消息不存在或其事件已不在表层
83
- * (被后续压缩遮蔽)时返回 undefined。返回区间起止表层 seq 与被遮蔽 seq 列表。
80
+ * 观察压缩区间:压缩边界后的首个表层节点(无边界时从首个非 system/message 头节点的
81
+ * 表层节点起)→ 触发点完整消息(endMessageIndex)对应的表层终点(取该完整消息最后
82
+ * 一个事件 seq 在表层中的位置);区间终点回退到 tool-call/result 配对平衡点(不切段)。
83
+ * 触发点完整消息不存在或其事件已不在表层(被后续压缩遮蔽)时返回 undefined。
84
+ * 返回区间起止表层 seq 与被遮蔽 seq 列表。
84
85
  */
85
86
  export declare function computeCompressRange(session: Session, endMessageIndex: number): {
86
87
  start: number;
@@ -1 +1 @@
1
- {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -274,7 +274,8 @@ async function recordCompressionSession(ctx, parentSession, options) {
274
274
  if (message.role === "assistant") child.append("assistant/message", {
275
275
  turn: 0,
276
276
  step,
277
- message
277
+ message,
278
+ stream: []
278
279
  }, { surfaceOp: "append" });
279
280
  else child.append("user/message", message, { surfaceOp: "append" });
280
281
  }
@@ -9036,16 +9037,19 @@ function isPairBalancedAfter(session, seq) {
9036
9037
  return false;
9037
9038
  }
9038
9039
  /**
9039
- * 观察压缩区间:压缩边界后的首个表层节点 → 触发点完整消息(endMessageIndex)对应的
9040
- * 表层终点(取该完整消息最后一个事件 seq 在表层中的位置);区间终点回退到
9041
- * tool-call/result 配对平衡点(不切段)。触发点完整消息不存在或其事件已不在表层
9042
- * (被后续压缩遮蔽)时返回 undefined。返回区间起止表层 seq 与被遮蔽 seq 列表。
9040
+ * 观察压缩区间:压缩边界后的首个表层节点(无边界时从首个非 system/message 头节点的
9041
+ * 表层节点起)→ 触发点完整消息(endMessageIndex)对应的表层终点(取该完整消息最后
9042
+ * 一个事件 seq 在表层中的位置);区间终点回退到 tool-call/result 配对平衡点(不切段)。
9043
+ * 触发点完整消息不存在或其事件已不在表层(被后续压缩遮蔽)时返回 undefined。
9044
+ * 返回区间起止表层 seq 与被遮蔽 seq 列表。
9043
9045
  */
9044
9046
  function computeCompressRange(session, endMessageIndex) {
9045
9047
  const surface = [...session.surface.nodes];
9046
9048
  if (surface.length === 0) return void 0;
9047
9049
  const { boundarySeq } = historySection(session);
9048
- const startIdx = boundarySeq === void 0 ? 0 : surface.findIndex((node) => node === boundarySeq) + 1;
9050
+ const headSeq = surface[0];
9051
+ const headOffset = (headSeq === void 0 ? void 0 : session.snapshotEvents()[headSeq])?.type === "system/message" ? 1 : 0;
9052
+ const startIdx = boundarySeq === void 0 ? headOffset : surface.indexOf(SessionSeq(boundarySeq)) + 1;
9049
9053
  if (startIdx >= surface.length) return void 0;
9050
9054
  const target = indexCompleteMessages(session).find((cm) => cm.index === endMessageIndex);
9051
9055
  if (target === void 0) return void 0;
@@ -9209,8 +9213,8 @@ function appendHistoryMessage(session, content, sourceEventSeqs, surfaceOp, comp
9209
9213
  session.append("user/message", message, {
9210
9214
  surfaceOp: {
9211
9215
  op: "replace",
9212
- start: SessionSeq(surfaceOp.start),
9213
- end: SessionSeq(surfaceOp.end)
9216
+ startSeq: SessionSeq(surfaceOp.startSeq),
9217
+ endSeq: SessionSeq(surfaceOp.endSeq)
9214
9218
  },
9215
9219
  sourceEventSeqs: sourceEventSeqs.map(SessionSeq)
9216
9220
  });
@@ -9303,8 +9307,8 @@ async function reflectPass(ctx, agent, config, target, signal, reasoningEffort)
9303
9307
  logger.step("反思提交:替换整个 <history> 块区段为合并摘要");
9304
9308
  appendHistoryMessage(session, report, [summarySeq, ...blockSeqs], {
9305
9309
  op: "replace",
9306
- start: first.seq,
9307
- end: last.seq
9310
+ startSeq: first.seq,
9311
+ endSeq: last.seq
9308
9312
  }, lifecycle.compactionId);
9309
9313
  logger.step("反思提交:追加 compaction/end");
9310
9314
  appendCompactionEnd(session, lifecycle, void 0, summaryResult.recordSessionId);
@@ -9543,8 +9547,8 @@ async function observePass(ctx, agent, config, waitCount, target, signal, reason
9543
9547
  logger.step("观察提交:替换被压缩新消息区间为 <history>(旧块保留)");
9544
9548
  appendHistoryMessage(session, report, [summarySeq, ...replaceSeqs], {
9545
9549
  op: "replace",
9546
- start: replaceStart,
9547
- end: range.end
9550
+ startSeq: replaceStart,
9551
+ endSeq: range.end
9548
9552
  }, lifecycle.compactionId);
9549
9553
  logger.step("观察提交:追加 compaction/end");
9550
9554
  appendCompactionEnd(session, lifecycle, void 0, summaryResult.recordSessionId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-om",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "type": "module",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",
@@ -65,26 +65,26 @@
65
65
  "devDependencies": {
66
66
  "@biomejs/biome": "^2.5.8",
67
67
  "@deepseek-ai/cordis": "^4.0.1",
68
- "@deepseek-ai/dsh-agent": "^0.1.2-rc.1",
69
- "@deepseek-ai/dsh-client-locale": "^0.1.2-rc.1",
70
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.2-rc.1",
71
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-rc.1",
72
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-rc.1",
73
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-rc.1",
74
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-rc.1",
75
- "@deepseek-ai/dsh-code-runtime": "^0.1.2-rc.1",
76
- "@deepseek-ai/dsh-compaction": "^0.1.2-rc.1",
77
- "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.2-rc.1",
78
- "@deepseek-ai/dsh-invariants": "^0.1.2-rc.1",
79
- "@deepseek-ai/dsh-llm": "^0.1.2-rc.1",
80
- "@deepseek-ai/dsh-scope": "^0.1.2-rc.1",
81
- "@deepseek-ai/dsh-session": "^0.1.2-rc.1",
82
- "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
83
- "@deepseek-ai/dsh-subagent": "^0.1.2-rc.1",
84
- "@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1",
85
- "@deepseek-ai/dsh-token-meter": "^0.1.2-rc.1",
86
- "@deepseek-ai/dsh-tools": "^0.1.2-rc.1",
87
- "@deepseek-ai/dsh-user-approval": "^0.1.2-rc.1",
68
+ "@deepseek-ai/dsh-agent": "^0.1.5-rc.2",
69
+ "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.2",
70
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.5-rc.2",
71
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2",
72
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2",
73
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2",
74
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2",
75
+ "@deepseek-ai/dsh-code-runtime": "^0.1.5-rc.2",
76
+ "@deepseek-ai/dsh-compaction": "^0.1.5-rc.2",
77
+ "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.5-rc.2",
78
+ "@deepseek-ai/dsh-invariants": "^0.1.5-rc.2",
79
+ "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
80
+ "@deepseek-ai/dsh-scope": "^0.1.5-rc.2",
81
+ "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
82
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
83
+ "@deepseek-ai/dsh-subagent": "^0.1.5-rc.2",
84
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2",
85
+ "@deepseek-ai/dsh-token-meter": "^0.1.5-rc.2",
86
+ "@deepseek-ai/dsh-tools": "^0.1.5-rc.2",
87
+ "@deepseek-ai/dsh-user-approval": "^0.1.5-rc.2",
88
88
  "@types/node": "^22.20.0",
89
89
  "@types/react": "~18.3.1",
90
90
  "@types/react-dom": "~18.3.0",