@markusylisiurunen/tau 0.3.36 → 0.3.37

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 (64) hide show
  1. package/README.md +55 -13
  2. package/dist/core/auth/cli.js +10 -0
  3. package/dist/core/auth/cli.js.map +1 -1
  4. package/dist/core/auth/providers/openai_codex.js +36 -16
  5. package/dist/core/auth/providers/openai_codex.js.map +1 -1
  6. package/dist/core/cli.js +1 -1
  7. package/dist/core/cli.js.map +1 -1
  8. package/dist/core/config/builtin_themes.js +0 -93
  9. package/dist/core/config/builtin_themes.js.map +1 -1
  10. package/dist/core/config/client_tools.js +109 -0
  11. package/dist/core/config/client_tools.js.map +1 -0
  12. package/dist/core/config/index.js.map +1 -1
  13. package/dist/core/config/schema.js +33 -1
  14. package/dist/core/config/schema.js.map +1 -1
  15. package/dist/core/utils/spawn_capture.js +58 -22
  16. package/dist/core/utils/spawn_capture.js.map +1 -1
  17. package/dist/core/utils/user_metadata.js +14 -0
  18. package/dist/core/utils/user_metadata.js.map +1 -1
  19. package/dist/core/version.js +1 -1
  20. package/dist/main.js +10 -5
  21. package/dist/main.js.map +1 -1
  22. package/dist/protocol/session_protocol.d.ts +1 -1
  23. package/dist/protocol/session_protocol.js +1 -1
  24. package/dist/sdk/index.d.ts +1 -1
  25. package/dist/sdk/index.js.map +1 -1
  26. package/dist/sdk/session.js +22 -3
  27. package/dist/sdk/session.js.map +1 -1
  28. package/dist/store/session_snapshot_migrations.js +5 -1
  29. package/dist/store/session_snapshot_migrations.js.map +1 -1
  30. package/dist/transport/in_process_session_transport.js +3 -0
  31. package/dist/transport/in_process_session_transport.js.map +1 -1
  32. package/dist/transport/index.d.ts +1 -1
  33. package/dist/transport/index.js.map +1 -1
  34. package/dist/transport/session_protocol_transport_helpers.js +10 -0
  35. package/dist/transport/session_protocol_transport_helpers.js.map +1 -1
  36. package/dist/transport/session_transport.d.ts +2 -0
  37. package/dist/transport/stdio_session_transport.d.ts +3 -1
  38. package/dist/transport/stdio_session_transport.js +13 -6
  39. package/dist/transport/stdio_session_transport.js.map +1 -1
  40. package/dist/transport/websocket_session_transport.d.ts +3 -1
  41. package/dist/transport/websocket_session_transport.js +11 -2
  42. package/dist/transport/websocket_session_transport.js.map +1 -1
  43. package/dist/tui/chat_controller/diff_review_service.js +12 -11
  44. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  45. package/dist/tui/chat_controller/diff_review_user_message.js +1 -0
  46. package/dist/tui/chat_controller/diff_review_user_message.js.map +1 -1
  47. package/dist/tui/chat_controller/history_message_model.js +4 -1
  48. package/dist/tui/chat_controller/history_message_model.js.map +1 -1
  49. package/dist/tui/chat_view.js +0 -11
  50. package/dist/tui/chat_view.js.map +1 -1
  51. package/dist/tui/command_client_tools.js +80 -0
  52. package/dist/tui/command_client_tools.js.map +1 -0
  53. package/dist/tui/session_chat_app.js +23 -6
  54. package/dist/tui/session_chat_app.js.map +1 -1
  55. package/dist/tui/session_chat_controller.js +23 -56
  56. package/dist/tui/session_chat_controller.js.map +1 -1
  57. package/dist/tui/ui/theme/palette.js +0 -3
  58. package/dist/tui/ui/theme/palette.js.map +1 -1
  59. package/dist/tui/ui/theme/theme.js.map +1 -1
  60. package/dist/tui/ui/user_message.js +4 -10
  61. package/dist/tui/ui/user_message.js.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/tui/memory_mode.js +0 -24
  64. package/dist/tui/memory_mode.js.map +0 -1
@@ -10,6 +10,7 @@ import { createTauSdkClientFromTransport } from "../sdk/session.js";
10
10
  import { StdioSessionProtocolTransport } from "../transport/stdio_session_transport.js";
11
11
  import { WebSocketSessionProtocolTransport } from "../transport/websocket_session_transport.js";
12
12
  import { TuiChatView } from "./chat_view.js";
13
+ import { createCommandClientTools } from "./command_client_tools.js";
13
14
  import { EXIT_DOUBLE_PRESS_WINDOW_MS, EXIT_TOAST_DURATION_MS } from "./constants.js";
14
15
  import { SessionChatController } from "./session_chat_controller.js";
15
16
  import { SlashAutocompleteProvider } from "./ui/slash_autocomplete.js";
@@ -25,7 +26,7 @@ export function createTuiClientTools(options) {
25
26
  if (!options.enabled) {
26
27
  return [];
27
28
  }
28
- return [
29
+ const tools = [
29
30
  {
30
31
  schema: {
31
32
  ...DIFF_REVIEW_TOOL,
@@ -69,6 +70,15 @@ export function createTuiClientTools(options) {
69
70
  },
70
71
  },
71
72
  ];
73
+ tools.push(...createCommandClientTools(options.commandTools ?? [], options.deps));
74
+ const names = new Set();
75
+ for (const tool of tools) {
76
+ if (names.has(tool.schema.name)) {
77
+ throw new Error(`duplicate TUI client tool '${tool.schema.name}'`);
78
+ }
79
+ names.add(tool.schema.name);
80
+ }
81
+ return tools;
72
82
  }
73
83
  export class SessionChatApp {
74
84
  view;
@@ -83,6 +93,13 @@ export class SessionChatApp {
83
93
  this.initialUserMessage = options.initialUserMessage;
84
94
  }
85
95
  static async connect(options) {
96
+ let controller;
97
+ const clientTools = createTuiClientTools({
98
+ enabled: options.clientToolsEnabled,
99
+ getController: () => controller,
100
+ commandTools: options.config?.clientTools,
101
+ deps: options.deps,
102
+ });
86
103
  const transport = options.transport === "stdio"
87
104
  ? new StdioSessionProtocolTransport(spawnProcess(options.command, options.args, {
88
105
  stdio: "pipe",
@@ -91,17 +108,16 @@ export class SessionChatApp {
91
108
  url: options.url,
92
109
  authToken: options.authToken,
93
110
  });
94
- let controller;
95
111
  const client = await createTauSdkClientFromTransport(transport, {
96
112
  initialize: { client: { name: "tau-tui", version: "1" } },
97
- clientTools: createTuiClientTools({
98
- enabled: options.clientToolsEnabled,
99
- getController: () => controller,
100
- }),
113
+ clientTools,
101
114
  });
102
115
  const app = await SessionChatApp.open({
103
116
  ...options,
104
117
  client,
118
+ configuredClientToolNames: options.clientToolsEnabled
119
+ ? (options.config?.clientTools ?? []).map((tool) => tool.name)
120
+ : [],
105
121
  targetLabel: options.transport === "stdio" ? [options.command, ...options.args].join(" ") : options.url,
106
122
  });
107
123
  controller = app.controller;
@@ -128,6 +144,7 @@ export class SessionChatApp {
128
144
  snapshot,
129
145
  createSession: (input) => options.client.sessions.create(input),
130
146
  targetLabel: options.targetLabel,
147
+ configuredClientToolNames: options.configuredClientToolNames,
131
148
  config: options.config,
132
149
  defaultDiffTool: options.defaultDiffTool,
133
150
  deps: options.deps,
@@ -1 +1 @@
1
- {"version":3,"file":"session_chat_app.js","sourceRoot":"","sources":["../../src/tui/session_chat_app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,iCAAiC,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AA+BvE,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,kCAAkC,CAAC;CAClF,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,oBAAoB,CAAC,OAGpC;IACC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL;YACE,MAAM,EAAE;gBACN,GAAG,gBAAgB;gBACnB,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;aACnC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;gBAC7E,CAAC;gBACD,OAAO,MAAM,UAAU,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC;SACF;QACD;YACE,MAAM,EAAE;gBACN,IAAI,EAAE,uBAAuB;gBAC7B,WAAW,EAAE;oBACX,wFAAwF;oBACxF,yIAAyI;oBACzI,wGAAwG;oBACxG,0GAA0G;iBAC3G,CAAC,IAAI,CAAC,GAAG,CAAC;gBACX,UAAU,EAAE,IAAI,CAAC,MAAM,CACrB;oBACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;wBAChB,SAAS,EAAE,CAAC;wBACZ,OAAO,EAAE,KAAK;wBACd,WAAW,EAAE,mEAAmE;qBACjF,CAAC;iBACH,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC;aACF;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtF,CAAC;gBACD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAeD,MAAM,OAAO,cAAc;IACR,IAAI,CAAc;IAClB,UAAU,CAAwB;IAClC,MAAM,CAAe;IACrB,kBAAkB,CAAU;IACrC,WAAW,CAAU;IAE7B,YAAoB,OAKnB;QACC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAoC;QACvD,MAAM,SAAS,GACb,OAAO,CAAC,SAAS,KAAK,OAAO;YAC3B,CAAC,CAAC,IAAI,6BAA6B,CAC/B,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC1C,KAAK,EAAE,MAAM;aACd,CAAC,CACH;YACH,CAAC,CAAC,IAAI,iCAAiC,CAAC;gBACpC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;QACT,IAAI,UAA6C,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,SAAS,EAAE;YAC9D,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YACzD,WAAW,EAAE,oBAAoB,CAAC;gBAChC,OAAO,EAAE,OAAO,CAAC,kBAAkB;gBACnC,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU;aAChC,CAAC;SACH,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YACpC,GAAG,OAAO;YACV,MAAM;YACN,WAAW,EACT,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;SAC7F,CAAC,CAAC;QACH,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAA8B;QAC9C,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtD,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC;gBACxD,OAAO,CAAC,kBAAkB;aAC3B,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;gBAC3B,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,KAAK;gBACnB,kBAAkB;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAC,CAAC;YACH,IAAI,GAAmB,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC;gBAC3C,IAAI;gBACJ,OAAO;gBACP,QAAQ;gBACR,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/D,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;aACzB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,sBAAsB,EAAE,CAAC;YACpD,IAAI,CAAC,uBAAuB,CAC1B,IAAI,yBAAyB,CAC3B,qBAAqB,EAAE,EACvB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,EACd,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7B,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,CAAC;gBAC9B,OAAO,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC,EACD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CACF,CAAC;YACF,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAC/C,GAAG,GAAG,IAAI,cAAc,CAAC;gBACvB,IAAI;gBACJ,UAAU;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;aAC/C,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,2BAA2B,EAAE,CAAC;YAC5F,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,MAAM,EAAE;YAC/D,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAC;IACL,CAAC;IAEO,IAAI;QACV,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;CACF;AAED,KAAK,UAAU,cAAc,CAC3B,MAAoB,EACpB,SAA+B;IAE/B,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvD,KAAK,QAAQ;YACX,OAAO,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAoB;IAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC,CAAC;iBACzF,IAAI,EAAE;iBACN,WAAW,EAAE,CAAC;YACjB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACvC,OAAO,MAAM,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,MAAM,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtE,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAoB,EACpB,EAAsC;IAEtC,MAAM,OAAO,GAAG,CACd,MAAM,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC,CAC3F;SACE,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,MAAM,IAAI,GACR,OAAO,KAAK,EAAE;QACZ,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,oBAAoB,IAAI,OAAO,KAAK,YAAY;YACnF,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,oBAAoB,EAAE;gBACpB,IAAI;gBACJ,GAAG;aACJ;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClC,oBAAoB,EAAE;gBACpB,IAAI;gBACJ,QAAQ;gBACR,SAAS;gBACT,GAAG;aACJ;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClC,oBAAoB,EAAE;YACpB,IAAI;YACJ,KAAK;YACL,UAAU;YACV,GAAG;SACJ;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"session_chat_app.js","sourceRoot":"","sources":["../../src/tui/session_chat_app.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { randomUUID } from "node:crypto";
2
1
  import { dirname } from "node:path/posix";
3
2
  import { createCommandRegistry, } from "../core/commands/index.js";
4
3
  import { getGoogleApiKey } from "../core/config/index.js";
@@ -26,7 +25,6 @@ import { formatDurationMs, formatSessionCost } from "./chat_controller/status_fo
26
25
  import { copyTextToClipboard } from "./clipboard.js";
27
26
  import { DOUBLE_PRESS_WINDOW_MS } from "./constants.js";
28
27
  import { cleanupListenTempFile, createListenTempFilePath, getSpeechToTextApiKey, getSpeechToTextApiKeyErrorMessage, LISTEN_RECORDING_MAX_DURATION_MS, LISTEN_RECORDING_MIN_BYTES, readListenAudio, startListenAudioCapture, transcribeListenAudio, } from "./listen_capture.js";
29
- import { formatDefaultMemoryModeFilePath, formatMemoryModeUserMessage } from "./memory_mode.js";
30
28
  import { createSdkDiffSnapshotDeps, createSdkToolExecutionBackend, } from "./session_tool_execution_backend.js";
31
29
  import { runSpeechPlaybackTask } from "./speech_playback.js";
32
30
  const CAFFEINATE_COMMAND = "/usr/bin/caffeinate";
@@ -35,6 +33,7 @@ export class SessionChatController {
35
33
  session;
36
34
  createSession;
37
35
  targetLabel;
36
+ configuredClientToolNames;
38
37
  config;
39
38
  defaultDiffTool;
40
39
  diffToolLauncher;
@@ -47,7 +46,6 @@ export class SessionChatController {
47
46
  snapshot;
48
47
  renderedMessageIds = [];
49
48
  hiddenHistoryEntryIds = new Set();
50
- clientRenderedUserMessages = new Map();
51
49
  observedSessionRevision;
52
50
  eventUnsubscribe;
53
51
  pendingUserMessagesUnsubscribe;
@@ -62,7 +60,6 @@ export class SessionChatController {
62
60
  sessionReplacementInProgress = false;
63
61
  isBashMode = false;
64
62
  isBashIncognito = false;
65
- isMemoryMode = false;
66
63
  showThinking = false;
67
64
  compactToolUi = true;
68
65
  commandHint;
@@ -85,6 +82,7 @@ export class SessionChatController {
85
82
  this.createSession = options.createSession;
86
83
  this.snapshot = options.snapshot;
87
84
  this.targetLabel = options.targetLabel;
85
+ this.configuredClientToolNames = options.configuredClientToolNames ?? [];
88
86
  this.config = options.config ?? {};
89
87
  this.defaultDiffTool = options.defaultDiffTool;
90
88
  this.diffToolLauncher = options.diffToolLauncher;
@@ -269,20 +267,7 @@ export class SessionChatController {
269
267
  }
270
268
  return;
271
269
  }
272
- if (this.isSingleLineInput(text) && trimmed.startsWith("#")) {
273
- const request = trimmed.slice(1).trim();
274
- if (!request) {
275
- this.view.addSystemMessage("memory mode request was empty.", "warn");
276
- return;
277
- }
278
- const agentsFilePath = formatDefaultMemoryModeFilePath(this.snapshot.executionEnvironment.cwd);
279
- await this.submitUserText(request, {
280
- textForModel: formatMemoryModeUserMessage(agentsFilePath, request),
281
- kind: "memory",
282
- });
283
- return;
284
- }
285
- await this.submitUserText(trimmed);
270
+ await this.runSessionTurn(() => this.session.submit(trimmed));
286
271
  }
287
272
  async onUserInput(text) {
288
273
  await this.handleSubmit(text);
@@ -302,21 +287,17 @@ export class SessionChatController {
302
287
  handleEditorChange(text) {
303
288
  const wasBash = this.isBashMode;
304
289
  const wasBashIncognito = this.isBashIncognito;
305
- const wasMemory = this.isMemoryMode;
306
290
  const previousCommandHint = this.commandHint;
307
291
  if (text.trim().length > 0) {
308
292
  this.lastEmptySubmitAt = undefined;
309
293
  }
310
294
  const trimmed = text.trimStart();
311
- const isSingleLine = this.isSingleLineInput(text);
312
295
  const isIncognito = trimmed.startsWith("!!");
313
296
  this.isBashIncognito = isIncognito;
314
297
  this.isBashMode = trimmed.startsWith("!") && !isIncognito;
315
- this.isMemoryMode = isSingleLine && trimmed.startsWith("#");
316
298
  this.commandHint = this.getCommandHintForInput(text);
317
299
  if (wasBash !== this.isBashMode ||
318
300
  wasBashIncognito !== this.isBashIncognito ||
319
- wasMemory !== this.isMemoryMode ||
320
301
  previousCommandHint !== this.commandHint) {
321
302
  this.refreshStatus();
322
303
  }
@@ -357,6 +338,10 @@ export class SessionChatController {
357
338
  if (this.snapshot.catalog.skills.length > 0) {
358
339
  parts.push(`${this.snapshot.catalog.skills.length} skills`);
359
340
  }
341
+ if (this.configuredClientToolNames.length > 0) {
342
+ const count = this.configuredClientToolNames.length;
343
+ parts.push(`${count} client tool${count === 1 ? "" : "s"}`);
344
+ }
360
345
  return parts.join(" · ");
361
346
  }
362
347
  buildStartupIntroBody() {
@@ -364,7 +349,6 @@ export class SessionChatController {
364
349
  "type `/help` for commands and keybindings",
365
350
  "mention files with `@`, agents and skills with `@@`",
366
351
  "run bash commands with `!` or `!!`",
367
- "use `#` to update AGENTS.md",
368
352
  ];
369
353
  if (this.snapshot.catalog.skills.length > 0) {
370
354
  lines.push("", "skills:");
@@ -380,21 +364,15 @@ export class SessionChatController {
380
364
  lines.push(` ${agentsFile}`);
381
365
  }
382
366
  }
367
+ if (this.configuredClientToolNames.length > 0) {
368
+ lines.push("", "client tools:");
369
+ for (const clientToolName of this.configuredClientToolNames) {
370
+ lines.push(` ${clientToolName}`);
371
+ }
372
+ }
383
373
  lines.push("", this.formatSessionIdentityText());
384
374
  return lines;
385
375
  }
386
- async submitUserText(text, options = {}) {
387
- const historyEntryId = `session-user-${randomUUID()}`;
388
- const model = {
389
- type: "user",
390
- text,
391
- ...(options.kind ? { kind: options.kind } : {}),
392
- };
393
- this.clientRenderedUserMessages.set(historyEntryId, model);
394
- this.view.addMessage(model, historyEntryId);
395
- this.renderedMessageIds.push(historyEntryId);
396
- await this.runSessionTurn(() => this.session.submit(options.textForModel ?? text, { historyEntryId }));
397
- }
398
376
  async retryTurn() {
399
377
  await this.runSessionTurn(() => this.session.retry());
400
378
  }
@@ -492,7 +470,7 @@ export class SessionChatController {
492
470
  return;
493
471
  }
494
472
  if (!this.isSessionOperationActive()) {
495
- await this.submitUserText(trimmed);
473
+ await this.runSessionTurn(() => this.session.submit(trimmed));
496
474
  return;
497
475
  }
498
476
  if (this.isBlockingSessionOperationActive()) {
@@ -502,9 +480,7 @@ export class SessionChatController {
502
480
  this.submitSteeringText(trimmed);
503
481
  }
504
482
  submitQueuedText(text) {
505
- void this.session
506
- .queue(text, { historyEntryId: `session-queue-${randomUUID()}` })
507
- .catch((error) => {
483
+ void this.session.queue(text).catch((error) => {
508
484
  if (!this.isPendingMessageCancellation(error)) {
509
485
  this.view.addSystemMessage(`queueing failed: ${formatSessionError(error)}`, "error");
510
486
  }
@@ -1084,9 +1060,6 @@ export class SessionChatController {
1084
1060
  const staleIds = this.renderedMessageIds.filter((id) => !snapshotIds.has(id));
1085
1061
  if (staleIds.length > 0) {
1086
1062
  this.view.removeMessages(staleIds);
1087
- for (const id of staleIds) {
1088
- this.clientRenderedUserMessages.delete(id);
1089
- }
1090
1063
  }
1091
1064
  const renderedIds = new Set(this.renderedMessageIds);
1092
1065
  this.renderedMessageIds.splice(0, this.renderedMessageIds.length, ...this.renderedMessageIds.filter((id) => snapshotIds.has(id)));
@@ -1097,7 +1070,7 @@ export class SessionChatController {
1097
1070
  }
1098
1071
  continue;
1099
1072
  }
1100
- const model = this.clientRenderedUserMessages.get(entry.id) ?? this.buildProtocolMessageModel(entry);
1073
+ const model = this.buildProtocolMessageModel(entry);
1101
1074
  if (!model) {
1102
1075
  continue;
1103
1076
  }
@@ -1250,7 +1223,6 @@ export class SessionChatController {
1250
1223
  }
1251
1224
  startLocalUiSession() {
1252
1225
  this.hiddenHistoryEntryIds.clear();
1253
- this.clientRenderedUserMessages.clear();
1254
1226
  this.renderedMessageIds.splice(0);
1255
1227
  this.view.addMessage({ type: "session_divider", label: "new session" });
1256
1228
  }
@@ -1548,8 +1520,6 @@ export class SessionChatController {
1548
1520
  return "bash_incognito";
1549
1521
  if (this.isBashMode)
1550
1522
  return "bash";
1551
- if (this.isMemoryMode)
1552
- return "memory";
1553
1523
  return "normal";
1554
1524
  }
1555
1525
  getSessionOperationStatusHint() {
@@ -1795,15 +1765,6 @@ export class SessionChatController {
1795
1765
  return { bridge, result };
1796
1766
  }
1797
1767
  async handleReturnedDiffReview(review, session) {
1798
- const model = {
1799
- type: "user",
1800
- text: review.review,
1801
- kind: "review",
1802
- };
1803
- this.clientRenderedUserMessages.set(review.historyEntryId, model);
1804
- if (!this.renderedMessageIds.includes(review.historyEntryId)) {
1805
- this.renderedMessageIds.push(review.historyEntryId);
1806
- }
1807
1768
  try {
1808
1769
  const result = await session.record(formatDiffReviewUserMessage(review), {
1809
1770
  historyEntryId: review.historyEntryId,
@@ -1813,7 +1774,13 @@ export class SessionChatController {
1813
1774
  }
1814
1775
  }
1815
1776
  catch (error) {
1816
- this.view.addSystemMessage(`failed to add diff review to session: ${error.message}`, "error");
1777
+ const reviewWasCommitted = this.session === session &&
1778
+ this.snapshot.messages.some((entry) => entry.id === review.historyEntryId &&
1779
+ entry.state === "committed" &&
1780
+ entry.message.role === "user");
1781
+ if (!reviewWasCommitted) {
1782
+ throw error;
1783
+ }
1817
1784
  }
1818
1785
  }
1819
1786
  startRewindFlow() {