@dreb/coding-agent 2.34.2 → 2.35.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 (90) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -1
  3. package/dist/cli/args.d.ts +3 -0
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +3 -0
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/core/agent-session.d.ts +30 -2
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +172 -130
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/buddy/buddy-controller.d.ts +35 -1
  12. package/dist/core/buddy/buddy-controller.d.ts.map +1 -1
  13. package/dist/core/buddy/buddy-controller.js +65 -4
  14. package/dist/core/buddy/buddy-controller.js.map +1 -1
  15. package/dist/core/buddy/buddy-manager.d.ts +6 -0
  16. package/dist/core/buddy/buddy-manager.d.ts.map +1 -1
  17. package/dist/core/buddy/buddy-manager.js +25 -2
  18. package/dist/core/buddy/buddy-manager.js.map +1 -1
  19. package/dist/core/export-html/template.js +1 -1
  20. package/dist/core/footer-data-provider.d.ts.map +1 -1
  21. package/dist/core/footer-data-provider.js +5 -102
  22. package/dist/core/footer-data-provider.js.map +1 -1
  23. package/dist/core/git-branch.d.ts +19 -0
  24. package/dist/core/git-branch.d.ts.map +1 -0
  25. package/dist/core/git-branch.js +109 -0
  26. package/dist/core/git-branch.js.map +1 -0
  27. package/dist/core/sdk.d.ts.map +1 -1
  28. package/dist/core/sdk.js +1 -1
  29. package/dist/core/sdk.js.map +1 -1
  30. package/dist/core/session-manager.d.ts +21 -0
  31. package/dist/core/session-manager.d.ts.map +1 -1
  32. package/dist/core/session-manager.js +117 -42
  33. package/dist/core/session-manager.js.map +1 -1
  34. package/dist/core/settings-manager.d.ts +6 -0
  35. package/dist/core/settings-manager.d.ts.map +1 -1
  36. package/dist/core/settings-manager.js +8 -0
  37. package/dist/core/settings-manager.js.map +1 -1
  38. package/dist/{modes/interactive → core}/tab-title.d.ts +12 -3
  39. package/dist/core/tab-title.d.ts.map +1 -0
  40. package/dist/{modes/interactive → core}/tab-title.js +58 -16
  41. package/dist/core/tab-title.js.map +1 -0
  42. package/dist/core/tools/search.d.ts.map +1 -1
  43. package/dist/core/tools/search.js +4 -1
  44. package/dist/core/tools/search.js.map +1 -1
  45. package/dist/core/tools/subagent.d.ts +63 -2
  46. package/dist/core/tools/subagent.d.ts.map +1 -1
  47. package/dist/core/tools/subagent.js +459 -73
  48. package/dist/core/tools/subagent.js.map +1 -1
  49. package/dist/core/tools/web.d.ts +1 -1
  50. package/dist/core/tools/web.d.ts.map +1 -1
  51. package/dist/core/tools/web.js +60 -16
  52. package/dist/core/tools/web.js.map +1 -1
  53. package/dist/main.d.ts +10 -0
  54. package/dist/main.d.ts.map +1 -1
  55. package/dist/main.js +54 -4
  56. package/dist/main.js.map +1 -1
  57. package/dist/modes/index.d.ts +2 -2
  58. package/dist/modes/index.d.ts.map +1 -1
  59. package/dist/modes/index.js +1 -1
  60. package/dist/modes/index.js.map +1 -1
  61. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  62. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  63. package/dist/modes/interactive/components/session-selector.js +4 -40
  64. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  65. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  66. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  67. package/dist/modes/interactive/interactive-mode.js +20 -3
  68. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  69. package/dist/modes/rpc/index.d.ts +2 -2
  70. package/dist/modes/rpc/index.d.ts.map +1 -1
  71. package/dist/modes/rpc/index.js.map +1 -1
  72. package/dist/modes/rpc/rpc-client.d.ts +114 -6
  73. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  74. package/dist/modes/rpc/rpc-client.js +140 -2
  75. package/dist/modes/rpc/rpc-client.js.map +1 -1
  76. package/dist/modes/rpc/rpc-mode.d.ts +97 -0
  77. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  78. package/dist/modes/rpc/rpc-mode.js +656 -27
  79. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  80. package/dist/modes/rpc/rpc-types.d.ts +312 -1
  81. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  82. package/dist/modes/rpc/rpc-types.js.map +1 -1
  83. package/docs/buddy.md +9 -1
  84. package/docs/dashboard.md +152 -0
  85. package/docs/development.md +8 -5
  86. package/docs/rpc.md +652 -5
  87. package/examples/sdk/12-full-control.ts +1 -1
  88. package/package.json +1 -1
  89. package/dist/modes/interactive/tab-title.d.ts.map +0 -1
  90. package/dist/modes/interactive/tab-title.js.map +0 -1
@@ -23,6 +23,7 @@ import { DefaultPackageManager } from "../../core/package-manager.js";
23
23
  import { SessionManager } from "../../core/session-manager.js";
24
24
  import { BUILTIN_SLASH_COMMANDS } from "../../core/slash-commands.js";
25
25
  import { restoreStderr, takeOverStderr } from "../../core/stderr-guard.js";
26
+ import { TabTitleGenerator } from "../../core/tab-title.js";
26
27
  import { resolveThinkingDisplay } from "../../core/thinking.js";
27
28
  import { resolveToCwd } from "../../core/tools/path-utils.js";
28
29
  import { abortBackgroundAgents, discoverAgentTypes, getRunningBackgroundAgents } from "../../core/tools/subagent.js";
@@ -61,7 +62,6 @@ import { ToolExecutionComponent } from "./components/tool-execution.js";
61
62
  import { TreeSelectorComponent } from "./components/tree-selector.js";
62
63
  import { UserMessageComponent } from "./components/user-message.js";
63
64
  import { UserMessageSelectorComponent } from "./components/user-message-selector.js";
64
- import { TabTitleGenerator } from "./tab-title.js";
65
65
  import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, initTheme, onThemeChange, setRegisteredThemes, setTheme, setThemeInstance, Theme, theme, } from "./theme/theme.js";
66
66
  function isExpandable(obj) {
67
67
  return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
@@ -197,6 +197,7 @@ export class InteractiveMode {
197
197
  throw new Error("No API key available for the current model.");
198
198
  return manager.reroll(model, apiKey);
199
199
  },
200
+ onVisibilityChange: (visible) => this.syncBuddyWidget(visible),
200
201
  });
201
202
  this.ui = new TUI(new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());
202
203
  this.headerContainer = new Container();
@@ -516,7 +517,7 @@ export class InteractiveMode {
516
517
  this.tabTitleGenerator = new TabTitleGenerator(settings, {
517
518
  setTitle: (title) => this.ui.terminal.setTitle(title),
518
519
  setSessionName: (name) => {
519
- this.sessionManager.appendSessionInfo(name);
520
+ this.session.setSessionName(name);
520
521
  },
521
522
  getMessages: () => this.session.state.messages,
522
523
  getModel: () => this.session.model,
@@ -1993,7 +1994,10 @@ export class InteractiveMode {
1993
1994
  return;
1994
1995
  }
1995
1996
  }
1996
- // Capture user message for buddy context and reset idle timer
1997
+ // Capture user message for buddy context and reset idle timer.
1998
+ // refreshVisibility() first, so a /buddy off from another concurrent
1999
+ // instance unmounts this TUI's widget as the user resumes interacting.
2000
+ this.buddyController.refreshVisibility();
1997
2001
  this.buddyController.appendContext(`User: ${text}`);
1998
2002
  this.buddyController.markActivity();
1999
2003
  this.buddyController.resetIdleTimer();
@@ -4569,6 +4573,19 @@ ${cycleModelForward || cycleModelBackward ? `| \`${cycleModelForward}\` / \`${cy
4569
4573
  this.mountBuddy(existingBuddy);
4570
4574
  }
4571
4575
  }
4576
+ syncBuddyWidget(visible) {
4577
+ // Another concurrent dreb instance toggled the buddy via /buddy off
4578
+ // or /buddy. Converge this TUI's widget to the persisted state.
4579
+ if (visible) {
4580
+ const state = this.buddyController.manager.getState() ?? this.buddyController.manager.load();
4581
+ if (state)
4582
+ this.mountBuddy(state);
4583
+ }
4584
+ else {
4585
+ this.removeBuddy();
4586
+ }
4587
+ this.ui.requestRender();
4588
+ }
4572
4589
  mountBuddy(state) {
4573
4590
  // Remove existing if any
4574
4591
  this.removeBuddy();