@dreb/coding-agent 2.60.1 → 2.61.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.
Files changed (72) hide show
  1. package/README.md +6 -4
  2. package/dist/cli/args.d.ts +1 -1
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +2 -2
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +49 -6
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +122 -25
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/dispatch-arbiter.d.ts.map +1 -1
  11. package/dist/core/dispatch-arbiter.js +2 -2
  12. package/dist/core/dispatch-arbiter.js.map +1 -1
  13. package/dist/core/model-registry.d.ts.map +1 -1
  14. package/dist/core/model-registry.js +1 -0
  15. package/dist/core/model-registry.js.map +1 -1
  16. package/dist/core/settings-manager.d.ts +4 -4
  17. package/dist/core/settings-manager.d.ts.map +1 -1
  18. package/dist/core/settings-manager.js.map +1 -1
  19. package/dist/core/thinking.d.ts.map +1 -1
  20. package/dist/core/thinking.js +9 -1
  21. package/dist/core/thinking.js.map +1 -1
  22. package/dist/core/tools/index.d.ts +6 -6
  23. package/dist/core/tools/subagent.d.ts +9 -9
  24. package/dist/core/tools/subagent.d.ts.map +1 -1
  25. package/dist/core/tools/subagent.js +4 -2
  26. package/dist/core/tools/subagent.js.map +1 -1
  27. package/dist/main.d.ts.map +1 -1
  28. package/dist/main.js +6 -1
  29. package/dist/main.js.map +1 -1
  30. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  31. package/dist/modes/interactive/components/settings-selector.js +3 -2
  32. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  33. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  34. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  35. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  36. package/dist/modes/interactive/components/user-message-selector.d.ts +7 -2
  37. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  38. package/dist/modes/interactive/components/user-message-selector.js +19 -12
  39. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  40. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  41. package/dist/modes/interactive/interactive-mode.js +27 -12
  42. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  43. package/dist/modes/interactive/theme/dark.json +1 -6
  44. package/dist/modes/interactive/theme/light.json +1 -6
  45. package/dist/modes/interactive/theme/theme-schema.json +10 -2
  46. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  47. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  48. package/dist/modes/interactive/theme/theme.js +9 -3
  49. package/dist/modes/interactive/theme/theme.js.map +1 -1
  50. package/dist/modes/rpc/rpc-client.d.ts +1 -0
  51. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  52. package/dist/modes/rpc/rpc-client.js +2 -1
  53. package/dist/modes/rpc/rpc-client.js.map +1 -1
  54. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  55. package/dist/modes/rpc/rpc-mode.js +2 -1
  56. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  57. package/dist/modes/rpc/rpc-types.d.ts +3 -0
  58. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  59. package/dist/modes/rpc/rpc-types.js.map +1 -1
  60. package/docs/agent-models.md +1 -1
  61. package/docs/custom-provider.md +2 -2
  62. package/docs/extensions.md +1 -1
  63. package/docs/models.md +3 -1
  64. package/docs/rpc.md +21 -10
  65. package/docs/sdk.md +1 -1
  66. package/docs/settings.md +2 -2
  67. package/docs/themes.md +3 -1
  68. package/docs/tree.md +1 -1
  69. package/docs/tui.md +1 -1
  70. package/examples/extensions/dynamic-resources/dynamic.json +1 -0
  71. package/examples/extensions/preset.ts +1 -1
  72. package/package.json +1 -1
@@ -3633,24 +3633,39 @@ export class InteractiveMode {
3633
3633
  });
3634
3634
  }
3635
3635
  showUserMessageSelector() {
3636
- const userMessages = this.session.getUserMessagesForForking();
3637
- if (userMessages.length === 0) {
3636
+ const messages = this.session.getForkableMessages();
3637
+ if (messages.length === 0) {
3638
3638
  this.showStatus("No messages to fork from");
3639
3639
  return;
3640
3640
  }
3641
+ // Every user or assistant message is a fork point. Assistant replies branch
3642
+ // so the answer is kept (continue from here); user messages rewind to before
3643
+ // the question and pre-fill the editor (re-ask).
3644
+ const items = messages.map((m) => ({ id: m.entryId, text: m.text, role: m.role }));
3641
3645
  this.showSelector((done) => {
3642
- const selector = new UserMessageSelectorComponent(userMessages.map((m) => ({ id: m.entryId, text: m.text })), async (entryId) => {
3643
- const result = await this.session.fork(entryId);
3644
- if (result.cancelled) {
3645
- // Extension cancelled the fork
3646
+ const selector = new UserMessageSelectorComponent(items, async (entryId) => {
3647
+ try {
3648
+ const result = await this.session.fork(entryId);
3649
+ if (result.cancelled) {
3650
+ // An extension vetoed the fork — tell the user rather than
3651
+ // silently dismissing the selector.
3652
+ done();
3653
+ this.showStatus("Fork cancelled — no new branch was created");
3654
+ return;
3655
+ }
3656
+ this.resetChatDisplay();
3657
+ // Assistant forks return empty text (nothing to re-ask); user forks
3658
+ // pre-fill the editor with the selected question.
3659
+ this.editor.setText(result.selectedText);
3646
3660
  done();
3647
- this.ui.requestRender();
3648
- return;
3661
+ this.showStatus("Branched to new session");
3662
+ }
3663
+ catch (err) {
3664
+ // Forking can throw (e.g. a stale entry or a filesystem error while
3665
+ // writing the branch). Surface it instead of crashing the TUI.
3666
+ done();
3667
+ this.showStatus(`Fork failed: ${err instanceof Error ? err.message : String(err)}`);
3649
3668
  }
3650
- this.resetChatDisplay();
3651
- this.editor.setText(result.selectedText);
3652
- done();
3653
- this.showStatus("Branched to new session");
3654
3669
  }, () => {
3655
3670
  done();
3656
3671
  this.ui.requestRender();