@markusylisiurunen/tau 0.3.35 → 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.
- package/README.md +62 -15
- package/dist/core/auth/cli.js +10 -0
- package/dist/core/auth/cli.js.map +1 -1
- package/dist/core/auth/providers/openai_codex.js +36 -16
- package/dist/core/auth/providers/openai_codex.js.map +1 -1
- package/dist/core/cli.js +7 -0
- package/dist/core/cli.js.map +1 -1
- package/dist/core/config/builtin_themes.js +0 -93
- package/dist/core/config/builtin_themes.js.map +1 -1
- package/dist/core/config/client_tools.js +109 -0
- package/dist/core/config/client_tools.js.map +1 -0
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/schema.js +33 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/debug.js +16 -30
- package/dist/core/debug.js.map +1 -1
- package/dist/core/runtime/runtime_bootstrap.js +68 -25
- package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
- package/dist/core/telegram/adapter.js +319 -67
- package/dist/core/telegram/adapter.js.map +1 -1
- package/dist/core/telegram/config.js +1 -1
- package/dist/core/telegram/runtime.js +20 -1
- package/dist/core/telegram/runtime.js.map +1 -1
- package/dist/core/telegram/session_manager.js +12 -0
- package/dist/core/telegram/session_manager.js.map +1 -1
- package/dist/core/tools/tool_names.js +1 -0
- package/dist/core/tools/tool_names.js.map +1 -1
- package/dist/core/tools/view_image.js +8 -5
- package/dist/core/tools/view_image.js.map +1 -1
- package/dist/core/utils/context.js +0 -1
- package/dist/core/utils/context.js.map +1 -1
- package/dist/core/utils/context_builder.js +2 -3
- package/dist/core/utils/context_builder.js.map +1 -1
- package/dist/core/utils/spawn_capture.js +58 -22
- package/dist/core/utils/spawn_capture.js.map +1 -1
- package/dist/core/utils/user_metadata.js +14 -0
- package/dist/core/utils/user_metadata.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/main.js +91 -31
- package/dist/main.js.map +1 -1
- package/dist/protocol/session_protocol.d.ts +1 -1
- package/dist/protocol/session_protocol.js +1 -1
- package/dist/sdk/client.js +7 -108
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/local_client.d.ts +3 -0
- package/dist/sdk/local_client.js +106 -0
- package/dist/sdk/local_client.js.map +1 -0
- package/dist/sdk/session.js +22 -3
- package/dist/sdk/session.js.map +1 -1
- package/dist/store/session_snapshot_migrations.js +5 -1
- package/dist/store/session_snapshot_migrations.js.map +1 -1
- package/dist/transport/in_process_session_transport.js +3 -0
- package/dist/transport/in_process_session_transport.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/session_protocol_transport_helpers.js +10 -0
- package/dist/transport/session_protocol_transport_helpers.js.map +1 -1
- package/dist/transport/session_transport.d.ts +2 -0
- package/dist/transport/stdio_session_transport.d.ts +3 -1
- package/dist/transport/stdio_session_transport.js +13 -6
- package/dist/transport/stdio_session_transport.js.map +1 -1
- package/dist/transport/websocket_session_transport.d.ts +3 -1
- package/dist/transport/websocket_session_transport.js +11 -2
- package/dist/transport/websocket_session_transport.js.map +1 -1
- package/dist/tui/chat_controller/diff_review_service.js +12 -11
- package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
- package/dist/tui/chat_controller/diff_review_user_message.js +1 -0
- package/dist/tui/chat_controller/diff_review_user_message.js.map +1 -1
- package/dist/tui/chat_controller/history_message_model.js +4 -1
- package/dist/tui/chat_controller/history_message_model.js.map +1 -1
- package/dist/tui/chat_view.js +0 -11
- package/dist/tui/chat_view.js.map +1 -1
- package/dist/tui/command_client_tools.js +80 -0
- package/dist/tui/command_client_tools.js.map +1 -0
- package/dist/tui/session_chat_app.js +72 -5
- package/dist/tui/session_chat_app.js.map +1 -1
- package/dist/tui/session_chat_controller.js +30 -56
- package/dist/tui/session_chat_controller.js.map +1 -1
- package/dist/tui/ui/theme/palette.js +0 -3
- package/dist/tui/ui/theme/palette.js.map +1 -1
- package/dist/tui/ui/theme/theme.js.map +1 -1
- package/dist/tui/ui/user_message.js +4 -10
- package/dist/tui/ui/user_message.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/utils/agents_files.js +0 -282
- package/dist/core/utils/agents_files.js.map +0 -1
- package/dist/tui/memory_mode.js +0 -24
- package/dist/tui/memory_mode.js.map +0 -1
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
import { spawn as spawnProcess } from "node:child_process";
|
|
2
2
|
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { Type } from "typebox";
|
|
4
|
+
import { z } from "zod";
|
|
3
5
|
import { createCommandRegistry } from "../core/commands/index.js";
|
|
4
6
|
import { DIFF_REVIEW_TOOL } from "../core/diff_review/index.js";
|
|
7
|
+
import { TOOL_NAME_PREFILL_INPUT } from "../core/tools/tool_names.js";
|
|
8
|
+
import { formatZodError } from "../core/utils/zod.js";
|
|
5
9
|
import { createTauSdkClientFromTransport } from "../sdk/session.js";
|
|
6
10
|
import { StdioSessionProtocolTransport } from "../transport/stdio_session_transport.js";
|
|
7
11
|
import { WebSocketSessionProtocolTransport } from "../transport/websocket_session_transport.js";
|
|
8
12
|
import { TuiChatView } from "./chat_view.js";
|
|
13
|
+
import { createCommandClientTools } from "./command_client_tools.js";
|
|
9
14
|
import { EXIT_DOUBLE_PRESS_WINDOW_MS, EXIT_TOAST_DURATION_MS } from "./constants.js";
|
|
10
15
|
import { SessionChatController } from "./session_chat_controller.js";
|
|
11
16
|
import { SlashAutocompleteProvider } from "./ui/slash_autocomplete.js";
|
|
17
|
+
const prefillInputArgsSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
text: z
|
|
20
|
+
.string()
|
|
21
|
+
.min(1)
|
|
22
|
+
.refine((value) => value.trim().length > 0, "must contain non-whitespace text"),
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
12
25
|
export function createTuiClientTools(options) {
|
|
13
|
-
|
|
26
|
+
if (!options.enabled) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const tools = [
|
|
14
30
|
{
|
|
15
31
|
schema: {
|
|
16
32
|
...DIFF_REVIEW_TOOL,
|
|
@@ -24,7 +40,45 @@ export function createTuiClientTools(options) {
|
|
|
24
40
|
return await controller.runClientDiffReview(args, context.signal);
|
|
25
41
|
},
|
|
26
42
|
},
|
|
43
|
+
{
|
|
44
|
+
schema: {
|
|
45
|
+
name: TOOL_NAME_PREFILL_INPUT,
|
|
46
|
+
description: [
|
|
47
|
+
"Prefill the user's TUI input editor with a draft for them to review, edit, and submit.",
|
|
48
|
+
"Use this sparingly, only when an editable structured draft would save the user meaningful effort; respond normally for routine content.",
|
|
49
|
+
"Use short, obvious placeholders such as [name] or [details] for information only the user can provide.",
|
|
50
|
+
"This tool does not submit the input and fails without changing the editor when it already contains text.",
|
|
51
|
+
].join(" "),
|
|
52
|
+
parameters: Type.Object({
|
|
53
|
+
text: Type.String({
|
|
54
|
+
minLength: 1,
|
|
55
|
+
pattern: "\\S",
|
|
56
|
+
description: "Complete non-blank draft text to place in the empty input editor.",
|
|
57
|
+
}),
|
|
58
|
+
}, { additionalProperties: false }),
|
|
59
|
+
},
|
|
60
|
+
execute: (args) => {
|
|
61
|
+
const parsed = prefillInputArgsSchema.safeParse(args);
|
|
62
|
+
if (!parsed.success) {
|
|
63
|
+
throw new Error(`Invalid prefill_input arguments: ${formatZodError(parsed.error)}`);
|
|
64
|
+
}
|
|
65
|
+
const controller = options.getController();
|
|
66
|
+
if (!controller) {
|
|
67
|
+
throw new Error("prefill_input is unavailable because the TUI is not ready");
|
|
68
|
+
}
|
|
69
|
+
return controller.prefillInput(parsed.data.text);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
27
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;
|
|
28
82
|
}
|
|
29
83
|
export class SessionChatApp {
|
|
30
84
|
view;
|
|
@@ -39,6 +93,13 @@ export class SessionChatApp {
|
|
|
39
93
|
this.initialUserMessage = options.initialUserMessage;
|
|
40
94
|
}
|
|
41
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
|
+
});
|
|
42
103
|
const transport = options.transport === "stdio"
|
|
43
104
|
? new StdioSessionProtocolTransport(spawnProcess(options.command, options.args, {
|
|
44
105
|
stdio: "pipe",
|
|
@@ -47,14 +108,16 @@ export class SessionChatApp {
|
|
|
47
108
|
url: options.url,
|
|
48
109
|
authToken: options.authToken,
|
|
49
110
|
});
|
|
50
|
-
let controller;
|
|
51
111
|
const client = await createTauSdkClientFromTransport(transport, {
|
|
52
112
|
initialize: { client: { name: "tau-tui", version: "1" } },
|
|
53
|
-
clientTools
|
|
113
|
+
clientTools,
|
|
54
114
|
});
|
|
55
115
|
const app = await SessionChatApp.open({
|
|
56
116
|
...options,
|
|
57
117
|
client,
|
|
118
|
+
configuredClientToolNames: options.clientToolsEnabled
|
|
119
|
+
? (options.config?.clientTools ?? []).map((tool) => tool.name)
|
|
120
|
+
: [],
|
|
58
121
|
targetLabel: options.transport === "stdio" ? [options.command, ...options.args].join(" ") : options.url,
|
|
59
122
|
});
|
|
60
123
|
controller = app.controller;
|
|
@@ -62,12 +125,15 @@ export class SessionChatApp {
|
|
|
62
125
|
}
|
|
63
126
|
static async open(options) {
|
|
64
127
|
try {
|
|
65
|
-
const session = await
|
|
128
|
+
const [session, terminalAppearance] = await Promise.all([
|
|
129
|
+
resolveSession(options.client, options.sessionSelection),
|
|
130
|
+
options.terminalAppearance,
|
|
131
|
+
]);
|
|
66
132
|
const snapshot = await session.snapshot();
|
|
67
133
|
const view = new TuiChatView({
|
|
68
134
|
compactToolUi: true,
|
|
69
135
|
showThinking: false,
|
|
70
|
-
terminalAppearance
|
|
136
|
+
terminalAppearance,
|
|
71
137
|
themeId: options.themeId,
|
|
72
138
|
themes: options.themes ?? [],
|
|
73
139
|
});
|
|
@@ -78,6 +144,7 @@ export class SessionChatApp {
|
|
|
78
144
|
snapshot,
|
|
79
145
|
createSession: (input) => options.client.sessions.create(input),
|
|
80
146
|
targetLabel: options.targetLabel,
|
|
147
|
+
configuredClientToolNames: options.configuredClientToolNames,
|
|
81
148
|
config: options.config,
|
|
82
149
|
defaultDiffTool: options.defaultDiffTool,
|
|
83
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,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,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;AA8BvE,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,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;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,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;SACvE,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,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC/E,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,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,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
|
-
|
|
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.
|
|
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.
|
|
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() {
|
|
@@ -1694,6 +1664,13 @@ export class SessionChatController {
|
|
|
1694
1664
|
async runClientDiffReview(rawArgs, signal) {
|
|
1695
1665
|
return await this.diffReviewService.runModelTool(rawArgs, signal);
|
|
1696
1666
|
}
|
|
1667
|
+
prefillInput(text) {
|
|
1668
|
+
if (this.view.getEditorText().length > 0) {
|
|
1669
|
+
throw new Error("Cannot prefill input because the editor already contains text.");
|
|
1670
|
+
}
|
|
1671
|
+
this.view.setEditorText(text);
|
|
1672
|
+
return "Prefilled the input editor. The user can review, edit, and submit it.";
|
|
1673
|
+
}
|
|
1697
1674
|
async startDiffReview(argsText) {
|
|
1698
1675
|
if (this.diffReviewService.isActive()) {
|
|
1699
1676
|
this.view.addSystemMessage("diff review is already active.", "warn");
|
|
@@ -1788,15 +1765,6 @@ export class SessionChatController {
|
|
|
1788
1765
|
return { bridge, result };
|
|
1789
1766
|
}
|
|
1790
1767
|
async handleReturnedDiffReview(review, session) {
|
|
1791
|
-
const model = {
|
|
1792
|
-
type: "user",
|
|
1793
|
-
text: review.review,
|
|
1794
|
-
kind: "review",
|
|
1795
|
-
};
|
|
1796
|
-
this.clientRenderedUserMessages.set(review.historyEntryId, model);
|
|
1797
|
-
if (!this.renderedMessageIds.includes(review.historyEntryId)) {
|
|
1798
|
-
this.renderedMessageIds.push(review.historyEntryId);
|
|
1799
|
-
}
|
|
1800
1768
|
try {
|
|
1801
1769
|
const result = await session.record(formatDiffReviewUserMessage(review), {
|
|
1802
1770
|
historyEntryId: review.historyEntryId,
|
|
@@ -1806,7 +1774,13 @@ export class SessionChatController {
|
|
|
1806
1774
|
}
|
|
1807
1775
|
}
|
|
1808
1776
|
catch (error) {
|
|
1809
|
-
|
|
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
|
+
}
|
|
1810
1784
|
}
|
|
1811
1785
|
}
|
|
1812
1786
|
startRewindFlow() {
|