@khorsheed/dsh-client-message-tools 0.1.0 → 0.2.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.en.md +15 -11
  3. package/README.i18n.yaml +2 -2
  4. package/README.md +35 -31
  5. package/lib/client.js +276 -131
  6. package/lib/client.js.map +1 -1
  7. package/lib/index.js +16 -15
  8. package/lib/tsconfig.client.tsbuildinfo +1 -1
  9. package/lib/tsconfig.host.tsbuildinfo +1 -1
  10. package/lib/typert.host.js +3 -3
  11. package/lib/typert.remote-client.d.ts.map +1 -1
  12. package/lib/typert.remote-client.js +3 -3
  13. package/lib/types/client/RestoredMessageView.d.ts +1 -1
  14. package/lib/types/client/RestoredMessageView.d.ts.map +1 -1
  15. package/lib/types/client/RestoredMessageView.js +20 -1
  16. package/lib/types/client/UserMessageView.d.ts +1 -1
  17. package/lib/types/client/UserMessageView.d.ts.map +1 -1
  18. package/lib/types/client/UserMessageView.js +9 -6
  19. package/lib/types/client/WithdrawnDividerView.d.ts +1 -1
  20. package/lib/types/client/WithdrawnDividerView.d.ts.map +1 -1
  21. package/lib/types/client/WithdrawnDividerView.js +11 -7
  22. package/lib/types/client/chat-hook.d.ts +36 -0
  23. package/lib/types/client/chat-hook.d.ts.map +1 -0
  24. package/lib/types/client/chat-hook.js +51 -0
  25. package/lib/types/client/dom-hider.d.ts +3 -2
  26. package/lib/types/client/dom-hider.d.ts.map +1 -1
  27. package/lib/types/client/dom-hider.js +20 -13
  28. package/lib/types/client/edit-in-place.d.ts +2 -1
  29. package/lib/types/client/edit-in-place.d.ts.map +1 -1
  30. package/lib/types/client/index.d.ts +6 -4
  31. package/lib/types/client/index.d.ts.map +1 -1
  32. package/lib/types/client/index.js +42 -8
  33. package/lib/types/client/locales.d.ts +8 -0
  34. package/lib/types/client/locales.d.ts.map +1 -1
  35. package/lib/types/client/locales.js +8 -0
  36. package/lib/types/client/slots.d.ts.map +1 -1
  37. package/lib/types/client/withdrawn-node.d.ts +3 -2
  38. package/lib/types/client/withdrawn-node.d.ts.map +1 -1
  39. package/lib/types/client/withdrawn-node.js +43 -52
  40. package/lib/types/index.d.ts.map +1 -1
  41. package/lib/types/index.js +10 -8
  42. package/lib/types/withdraw.d.ts.map +1 -1
  43. package/lib/types/withdraw.js +10 -6
  44. package/package.json +19 -18
package/lib/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { SessionSeq } from "@deepseek-ai/dsh-session";
1
2
  import { createUserMessage } from "@deepseek-ai/dsh-llm";
2
3
  import { Remote, TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
3
4
  import { isAppendSurfaceEvent, isReplacementSurfaceEvent } from "@deepseek-ai/dsh-session/surface";
@@ -234,11 +235,11 @@ function joinAssistantMessageText(blocks) {
234
235
  function findWithdrawnSpan(events, targetSeq) {
235
236
  for (let index = events.length - 1; index > targetSeq; index--) {
236
237
  const event = events[index];
237
- if (event !== void 0 && isMessageToolsReplacement(event) && event.sourceEventSeqs?.includes(targetSeq)) {
238
- const span = [];
239
- for (let seq = event.surfaceOp.start; seq < event.seq; seq++) span.push(seq);
240
- return span;
241
- }
238
+ if (event === void 0 || !isMessageToolsReplacement(event)) continue;
239
+ if (event.sourceEventSeqs?.includes(targetSeq) !== true) continue;
240
+ const span = [];
241
+ for (let seq = event.surfaceOp.start; seq < event.seq; seq++) span.push(seq);
242
+ return span;
242
243
  }
243
244
  }
244
245
  /**
@@ -502,7 +503,7 @@ let MessageToolsService = (() => {
502
503
  ok: false,
503
504
  error: { code: "session-not-found" }
504
505
  };
505
- const planned = planWithdrawal(session.events, session.surface.nodes, request.targetSeq);
506
+ const planned = planWithdrawal(session.snapshotEvents(), session.surface.nodes, request.targetSeq);
506
507
  if (!planned.ok) return {
507
508
  ok: false,
508
509
  error: { code: planned.code }
@@ -519,10 +520,10 @@ let MessageToolsService = (() => {
519
520
  }), {
520
521
  surfaceOp: {
521
522
  op: "replace",
522
- start: planned.plan.start,
523
- end: planned.plan.end
523
+ start: SessionSeq(planned.plan.start),
524
+ end: SessionSeq(planned.plan.end)
524
525
  },
525
- sourceEventSeqs: [...planned.plan.sourceEventSeqs]
526
+ sourceEventSeqs: planned.plan.sourceEventSeqs.map((seq) => SessionSeq(seq))
526
527
  });
527
528
  await this.ctx.sessions.flush(session);
528
529
  return {
@@ -553,7 +554,7 @@ let MessageToolsService = (() => {
553
554
  ok: false,
554
555
  error: { code: "session-not-found" }
555
556
  };
556
- const planned = planRestore(session.events, session.surface.nodes, request.targetSeq);
557
+ const planned = planRestore(session.snapshotEvents(), session.surface.nodes, request.targetSeq);
557
558
  if (!planned.ok) return {
558
559
  ok: false,
559
560
  error: { code: planned.code }
@@ -575,7 +576,7 @@ let MessageToolsService = (() => {
575
576
  });
576
577
  appendedSeqs.push(session.append("user/message", message, {
577
578
  surfaceOp: "append",
578
- sourceEventSeqs: [entry.sourceSeq]
579
+ sourceEventSeqs: [SessionSeq(entry.sourceSeq)]
579
580
  }).seq);
580
581
  }
581
582
  await this.ctx.sessions.flush(session);
@@ -602,7 +603,7 @@ let MessageToolsService = (() => {
602
603
  ok: false,
603
604
  error: { code: "session-not-found" }
604
605
  };
605
- const planned = planEdit(session.events, session.surface.nodes, request.targetSeq, request.text);
606
+ const planned = planEdit(session.snapshotEvents(), session.surface.nodes, request.targetSeq, request.text);
606
607
  if (!planned.ok) return {
607
608
  ok: false,
608
609
  error: { code: planned.code }
@@ -616,10 +617,10 @@ let MessageToolsService = (() => {
616
617
  }), {
617
618
  surfaceOp: {
618
619
  op: "replace",
619
- start: planned.plan.start,
620
- end: planned.plan.end
620
+ start: SessionSeq(planned.plan.start),
621
+ end: SessionSeq(planned.plan.end)
621
622
  },
622
- sourceEventSeqs: [...planned.plan.sourceEventSeqs]
623
+ sourceEventSeqs: planned.plan.sourceEventSeqs.map((seq) => SessionSeq(seq))
623
624
  });
624
625
  await this.ctx.sessions.flush(session);
625
626
  const agent = this.ctx.agents.get(request.sessionId);