@markusylisiurunen/tau 0.3.39 → 0.3.41

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 (138) hide show
  1. package/README.md +34 -38
  2. package/dist/core/agent/agent_runtime.js +0 -22
  3. package/dist/core/agent/agent_runtime.js.map +1 -1
  4. package/dist/core/cli.js +2 -2
  5. package/dist/core/cli.js.map +1 -1
  6. package/dist/core/commands/registry.js +22 -20
  7. package/dist/core/commands/registry.js.map +1 -1
  8. package/dist/core/config/builtin_themes.js +936 -998
  9. package/dist/core/config/builtin_themes.js.map +1 -1
  10. package/dist/core/history/migrations.js +57 -0
  11. package/dist/core/history/migrations.js.map +1 -0
  12. package/dist/core/history/setup.js +18 -0
  13. package/dist/core/history/setup.js.map +1 -1
  14. package/dist/core/personas.js +8 -53
  15. package/dist/core/personas.js.map +1 -1
  16. package/dist/core/runtime/chat_runtime.js +0 -6
  17. package/dist/core/runtime/chat_runtime.js.map +1 -1
  18. package/dist/core/session/direct_bash.js +8 -8
  19. package/dist/core/session/direct_bash.js.map +1 -1
  20. package/dist/core/session/runner.js +6 -1
  21. package/dist/core/session/runner.js.map +1 -1
  22. package/dist/core/static/code_mode/history/documentation.md +3 -3
  23. package/dist/core/static/code_mode/nook/documentation.md +6 -4
  24. package/dist/core/static/code_mode/web/documentation.md +3 -3
  25. package/dist/core/tools/bash.js +80 -63
  26. package/dist/core/tools/bash.js.map +1 -1
  27. package/dist/core/tools/code_mode.js +45 -12
  28. package/dist/core/tools/code_mode.js.map +1 -1
  29. package/dist/core/tools/edit.js +72 -84
  30. package/dist/core/tools/edit.js.map +1 -1
  31. package/dist/core/tools/goal.js +97 -16
  32. package/dist/core/tools/goal.js.map +1 -1
  33. package/dist/core/tools/history.js +13 -15
  34. package/dist/core/tools/history.js.map +1 -1
  35. package/dist/core/tools/interrupt_agent.js +56 -37
  36. package/dist/core/tools/interrupt_agent.js.map +1 -1
  37. package/dist/core/tools/list_agents.js +28 -13
  38. package/dist/core/tools/list_agents.js.map +1 -1
  39. package/dist/core/tools/nook.js +15 -15
  40. package/dist/core/tools/nook.js.map +1 -1
  41. package/dist/core/tools/presentation.js +226 -0
  42. package/dist/core/tools/presentation.js.map +1 -0
  43. package/dist/core/tools/registry.js.map +1 -1
  44. package/dist/core/tools/send_input_to_agent.js +57 -47
  45. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  46. package/dist/core/tools/spawn_agent.js +81 -52
  47. package/dist/core/tools/spawn_agent.js.map +1 -1
  48. package/dist/core/tools/subagent_ui.js +14 -38
  49. package/dist/core/tools/subagent_ui.js.map +1 -1
  50. package/dist/core/tools/view_image.js +45 -45
  51. package/dist/core/tools/view_image.js.map +1 -1
  52. package/dist/core/tools/wait_for_agents.js +94 -56
  53. package/dist/core/tools/wait_for_agents.js.map +1 -1
  54. package/dist/core/tools/web.js +11 -13
  55. package/dist/core/tools/web.js.map +1 -1
  56. package/dist/core/tools/write.js +41 -39
  57. package/dist/core/tools/write.js.map +1 -1
  58. package/dist/core/utils/gemini_speech.js +1 -1
  59. package/dist/core/utils/gemini_speech.js.map +1 -1
  60. package/dist/core/utils/subagent_utils.js +3 -3
  61. package/dist/core/utils/subagent_utils.js.map +1 -1
  62. package/dist/core/version.js +1 -1
  63. package/dist/execution/cloudflare_sandbox_execution_environment.js +1 -1
  64. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -1
  65. package/dist/history/worker/index.js +149 -192
  66. package/dist/history/worker/index.js.map +1 -1
  67. package/dist/host/client_tool_broker.js +29 -31
  68. package/dist/host/client_tool_broker.js.map +1 -1
  69. package/dist/host/local_session_host.js +11 -5
  70. package/dist/host/local_session_host.js.map +1 -1
  71. package/dist/main.js +6 -6
  72. package/dist/main.js.map +1 -1
  73. package/dist/tui/chat_controller/diff_review_service.js +1 -1
  74. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  75. package/dist/tui/chat_controller/history_labels.js +13 -0
  76. package/dist/tui/chat_controller/history_labels.js.map +1 -1
  77. package/dist/tui/chat_view.js +24 -50
  78. package/dist/tui/chat_view.js.map +1 -1
  79. package/dist/tui/session_chat_app.js +3 -4
  80. package/dist/tui/session_chat_app.js.map +1 -1
  81. package/dist/tui/session_chat_controller.js +80 -111
  82. package/dist/tui/session_chat_controller.js.map +1 -1
  83. package/dist/tui/terminal_appearance.js +44 -25
  84. package/dist/tui/terminal_appearance.js.map +1 -1
  85. package/dist/tui/ui/autocomplete_item.js +2 -0
  86. package/dist/tui/ui/autocomplete_item.js.map +1 -0
  87. package/dist/tui/ui/chat_container.js +1 -14
  88. package/dist/tui/ui/chat_container.js.map +1 -1
  89. package/dist/tui/ui/chat_message_model.js +4 -12
  90. package/dist/tui/ui/chat_message_model.js.map +1 -1
  91. package/dist/tui/ui/components/autocomplete_list.js +138 -0
  92. package/dist/tui/ui/components/autocomplete_list.js.map +1 -0
  93. package/dist/tui/ui/components/editor.js +33 -40
  94. package/dist/tui/ui/components/editor.js.map +1 -1
  95. package/dist/tui/ui/components/one_line_segments.js +0 -67
  96. package/dist/tui/ui/components/one_line_segments.js.map +1 -1
  97. package/dist/tui/ui/custom_editor.js +15 -11
  98. package/dist/tui/ui/custom_editor.js.map +1 -1
  99. package/dist/tui/ui/diff_review_message.js +1 -11
  100. package/dist/tui/ui/diff_review_message.js.map +1 -1
  101. package/dist/tui/ui/footer.js +63 -13
  102. package/dist/tui/ui/footer.js.map +1 -1
  103. package/dist/tui/ui/rewind_picker.js +17 -47
  104. package/dist/tui/ui/rewind_picker.js.map +1 -1
  105. package/dist/tui/ui/slash_autocomplete.js +43 -64
  106. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  107. package/dist/tui/ui/subagent_editor_pane.js +3 -3
  108. package/dist/tui/ui/theme/index.js +1 -1
  109. package/dist/tui/ui/theme/index.js.map +1 -1
  110. package/dist/tui/ui/theme/palette.js +245 -8
  111. package/dist/tui/ui/theme/palette.js.map +1 -1
  112. package/dist/tui/ui/theme/theme.js +3 -30
  113. package/dist/tui/ui/theme/theme.js.map +1 -1
  114. package/dist/tui/ui/tool_card.js +137 -0
  115. package/dist/tui/ui/tool_card.js.map +1 -0
  116. package/dist/tui/ui/user_message.js +3 -6
  117. package/dist/tui/ui/user_message.js.map +1 -1
  118. package/package.json +2 -2
  119. package/dist/core/utils/tool_preview.js +0 -73
  120. package/dist/core/utils/tool_preview.js.map +0 -1
  121. package/dist/tui/chat_controller/command_hints.js +0 -35
  122. package/dist/tui/chat_controller/command_hints.js.map +0 -1
  123. package/dist/tui/ui/bash_execution.js +0 -129
  124. package/dist/tui/ui/bash_execution.js.map +0 -1
  125. package/dist/tui/ui/components/dynamic_border.js +0 -11
  126. package/dist/tui/ui/components/dynamic_border.js.map +0 -1
  127. package/dist/tui/ui/components/header_box.js +0 -107
  128. package/dist/tui/ui/components/header_box.js.map +0 -1
  129. package/dist/tui/ui/components/header_line.js +0 -60
  130. package/dist/tui/ui/components/header_line.js.map +0 -1
  131. package/dist/tui/ui/components/padded_container.js +0 -24
  132. package/dist/tui/ui/components/padded_container.js.map +0 -1
  133. package/dist/tui/ui/file_execution.js +0 -176
  134. package/dist/tui/ui/file_execution.js.map +0 -1
  135. package/dist/tui/ui/tool_output.js +0 -163
  136. package/dist/tui/ui/tool_output.js.map +0 -1
  137. package/dist/tui/ui/tool_ui_registry.js +0 -786
  138. package/dist/tui/ui/tool_ui_registry.js.map +0 -1
@@ -1,176 +0,0 @@
1
- import { buildBlockedToolView, buildSection, buildToolHeaderLine, inlineText, renderToolOutput, renderToolUiCompactText, renderToolUiTextLines, } from "./tool_output.js";
2
- export function buildWriteSuccessView(theme, path, uiText, headerTarget) {
3
- const { palette, text } = theme;
4
- const writeColor = (s) => palette.actionSuccess(s);
5
- const successBullet = (s) => palette.actionSuccess(s);
6
- const pathInline = inlineText(headerTarget);
7
- const header = buildToolHeaderLine({
8
- bulletStyle: successBullet,
9
- bullet: "✓",
10
- label: "wrote",
11
- labelStyle: palette.textMuted,
12
- accent: pathInline,
13
- accentStyle: palette.brandAccent,
14
- });
15
- const compactText = renderToolUiCompactText({
16
- uiText,
17
- theme,
18
- previewStyle: palette.textDim,
19
- statusStyle: palette.textMuted,
20
- });
21
- const fullText = renderToolUiTextLines({
22
- uiText,
23
- kind: "full",
24
- theme,
25
- baseStyle: palette.actionOutput,
26
- });
27
- return {
28
- borderColor: writeColor,
29
- expanded: {
30
- title: writeColor(text.bold(`write ${path}`)),
31
- sections: fullText ? [fullText] : [],
32
- },
33
- compact: {
34
- header,
35
- extraText: compactText,
36
- },
37
- };
38
- }
39
- export function buildWriteBlockedView(theme, path, reason, headerTarget) {
40
- return buildBlockedToolView({
41
- theme,
42
- label: "write blocked",
43
- title: `write ${path}`,
44
- accent: headerTarget,
45
- reason,
46
- });
47
- }
48
- export function buildEditSuccessView(theme, path, uiText, headerTarget) {
49
- const { palette, text } = theme;
50
- const editColor = (s) => palette.actionSuccess(s);
51
- const successBullet = (s) => palette.actionSuccess(s);
52
- const pathInline = inlineText(headerTarget);
53
- const header = buildToolHeaderLine({
54
- bulletStyle: successBullet,
55
- bullet: "✓",
56
- label: "edited",
57
- labelStyle: palette.textMuted,
58
- accent: pathInline,
59
- accentStyle: palette.brandAccent,
60
- });
61
- const compactText = renderToolUiCompactText({
62
- uiText,
63
- theme,
64
- previewStyle: palette.textDim,
65
- statusStyle: palette.textMuted,
66
- });
67
- const fullText = renderToolUiTextLines({
68
- uiText,
69
- kind: "full",
70
- theme,
71
- baseStyle: palette.actionOutput,
72
- });
73
- return {
74
- borderColor: editColor,
75
- expanded: {
76
- title: editColor(text.bold(`edit ${path}`)),
77
- sections: fullText ? [fullText] : [],
78
- },
79
- compact: {
80
- header,
81
- extraText: compactText,
82
- },
83
- };
84
- }
85
- export function buildEditBlockedView(theme, path, reason, headerTarget) {
86
- return buildBlockedToolView({
87
- theme,
88
- label: "edit blocked",
89
- title: `edit ${path}`,
90
- accent: headerTarget,
91
- reason,
92
- });
93
- }
94
- export function buildViewImageSuccessView(theme, path, uiText, headerTarget) {
95
- const { palette, text } = theme;
96
- const viewColor = (s) => palette.actionSuccess(s);
97
- const successBullet = (s) => palette.actionSuccess(s);
98
- const pathInline = inlineText(headerTarget);
99
- const header = buildToolHeaderLine({
100
- bulletStyle: successBullet,
101
- bullet: "✓",
102
- label: "viewed",
103
- labelStyle: palette.textMuted,
104
- accent: pathInline,
105
- accentStyle: palette.brandAccent,
106
- });
107
- const compactText = renderToolUiCompactText({
108
- uiText,
109
- theme,
110
- previewStyle: palette.textDim,
111
- statusStyle: palette.textMuted,
112
- });
113
- const fullText = renderToolUiTextLines({
114
- uiText,
115
- kind: "full",
116
- theme,
117
- baseStyle: palette.actionOutput,
118
- });
119
- return {
120
- borderColor: viewColor,
121
- expanded: {
122
- title: viewColor(text.bold(`view image ${path}`)),
123
- sections: fullText ? [fullText] : [],
124
- },
125
- compact: {
126
- header,
127
- extraText: compactText,
128
- },
129
- };
130
- }
131
- export function buildViewImageBlockedView(theme, path, reason, headerTarget) {
132
- const { palette, text } = theme;
133
- const errorColor = (s) => palette.actionError(s);
134
- const msg = reason.trim();
135
- const sections = buildSection(msg ? [errorColor(msg)] : []);
136
- const accentInline = inlineText(headerTarget);
137
- const whyInline = inlineText(reason);
138
- const header = buildToolHeaderLine({
139
- bulletStyle: errorColor,
140
- bullet: "✗",
141
- label: "view image blocked",
142
- labelStyle: palette.textMuted,
143
- accent: accentInline,
144
- accentStyle: palette.brandAccent,
145
- });
146
- return {
147
- borderColor: errorColor,
148
- expanded: {
149
- title: errorColor(text.bold(`view image ${path}`)),
150
- sections: sections ? [sections] : [],
151
- },
152
- compact: {
153
- header,
154
- extraText: whyInline ? ` ${errorColor(whyInline)}` : undefined,
155
- },
156
- };
157
- }
158
- export function renderWriteSuccess(theme, path, uiText, compact, headerTarget) {
159
- return renderToolOutput(buildWriteSuccessView(theme, path, uiText, headerTarget), compact);
160
- }
161
- export function renderWriteBlocked(theme, path, reason, compact, headerTarget) {
162
- return renderToolOutput(buildWriteBlockedView(theme, path, reason, headerTarget), compact);
163
- }
164
- export function renderEditSuccess(theme, path, uiText, compact, headerTarget) {
165
- return renderToolOutput(buildEditSuccessView(theme, path, uiText, headerTarget), compact);
166
- }
167
- export function renderEditBlocked(theme, path, reason, compact, headerTarget) {
168
- return renderToolOutput(buildEditBlockedView(theme, path, reason, headerTarget), compact);
169
- }
170
- export function renderViewImageSuccess(theme, path, uiText, compact, headerTarget) {
171
- return renderToolOutput(buildViewImageSuccessView(theme, path, uiText, headerTarget), compact);
172
- }
173
- export function renderViewImageBlocked(theme, path, reason, compact, headerTarget) {
174
- return renderToolOutput(buildViewImageBlockedView(theme, path, reason, headerTarget), compact);
175
- }
176
- //# sourceMappingURL=file_execution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file_execution.js","sourceRoot":"","sources":["../../../src/tui/ui/file_execution.ts"],"names":[],"mappings":"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"}
@@ -1,163 +0,0 @@
1
- import { Container, Text } from "@earendil-works/pi-tui";
2
- import { DynamicBorder } from "./components/dynamic_border.js";
3
- import { HeaderLineComponent } from "./components/header_line.js";
4
- export function inlineText(text) {
5
- return text.replace(/\s+/g, " ").trim();
6
- }
7
- function buildHeaderSegments(spec) {
8
- const bullet = spec.bullet ?? "▪";
9
- return [
10
- { text: " ", style: (s) => s },
11
- { text: bullet, style: spec.bulletStyle },
12
- { text: " ", style: (s) => s },
13
- { text: spec.label, style: spec.labelStyle },
14
- { text: " ", style: (s) => s },
15
- { text: spec.accent, style: spec.accentStyle ?? ((s) => s) },
16
- ];
17
- }
18
- export function buildSection(lines) {
19
- const filtered = lines.filter((line) => Boolean(line?.trim()));
20
- return filtered.length > 0 ? filtered.join("\n") : undefined;
21
- }
22
- export function buildExpandedText(expanded) {
23
- const sections = expanded.sections ?? [];
24
- const filteredSections = sections.filter((section) => Boolean(section));
25
- const parts = [expanded.title, ...filteredSections];
26
- return parts.join("\n\n");
27
- }
28
- function styleToolUiLine(line, theme, baseStyle) {
29
- if (!line.tone)
30
- return baseStyle(line.text);
31
- switch (line.tone) {
32
- case "diffAdd":
33
- return theme.palette.diffAdd(line.text);
34
- case "diffRemove":
35
- return theme.palette.diffRemove(line.text);
36
- default:
37
- return baseStyle(line.text);
38
- }
39
- }
40
- export function renderToolUiTextLines(args) {
41
- const { uiText, kind, theme, baseStyle } = args;
42
- const lines = kind === "preview" ? uiText.previewLines : uiText.fullLines;
43
- if (!lines.some((line) => line.text.trim()))
44
- return undefined;
45
- return lines.map((line) => styleToolUiLine(line, theme, baseStyle)).join("\n");
46
- }
47
- export const TOOL_UI_INDENT = 4;
48
- const DEFAULT_STATUS_WRAPPER = (text) => `(${text})`;
49
- export function buildToolHeaderLine(spec) {
50
- return { segments: buildHeaderSegments(spec) };
51
- }
52
- export function renderToolUiCompactText(args) {
53
- const { uiText, theme, previewStyle, statusStyle, indent = TOOL_UI_INDENT, statusWrapper = DEFAULT_STATUS_WRAPPER, } = args;
54
- const pad = " ".repeat(Math.max(0, indent));
55
- const statusText = uiText.statusLine?.trim();
56
- const formattedStatus = statusText ? `${pad}${statusWrapper(statusText)}` : undefined;
57
- const indentedUiText = {
58
- ...uiText,
59
- previewLines: uiText.previewLines.map((line) => ({
60
- ...line,
61
- text: `${pad}${line.text}`,
62
- })),
63
- statusLine: formattedStatus,
64
- };
65
- const compactParts = [];
66
- const previewText = renderToolUiTextLines({
67
- uiText: indentedUiText,
68
- kind: "preview",
69
- theme,
70
- baseStyle: previewStyle,
71
- });
72
- if (previewText) {
73
- compactParts.push(previewText);
74
- }
75
- if (formattedStatus) {
76
- compactParts.push(statusStyle(formattedStatus));
77
- }
78
- return compactParts.length > 0 ? compactParts.join("\n") : undefined;
79
- }
80
- export class ToolOutputComponent extends Container {
81
- constructor(props) {
82
- super();
83
- this.update(props);
84
- }
85
- update(props) {
86
- this.clear();
87
- if (props.compact) {
88
- const { headerComponent, extraText, extraComponent, paddingX, paddingY } = props.compactView;
89
- if (headerComponent) {
90
- this.addChild(headerComponent);
91
- }
92
- if (extraComponent) {
93
- this.addChild(extraComponent);
94
- }
95
- else if (extraText && extraText.trim() !== "") {
96
- this.addChild(new Text(extraText, paddingX ?? 0, paddingY ?? 0));
97
- }
98
- return;
99
- }
100
- const { borderColor, text, paddingX, paddingY } = props.expanded;
101
- this.addChild(new DynamicBorder(borderColor));
102
- this.addChild(new Text(text, paddingX ?? 1, paddingY ?? 0));
103
- this.addChild(new DynamicBorder(borderColor));
104
- }
105
- }
106
- function isComponent(value) {
107
- return typeof value.render === "function";
108
- }
109
- export function renderToolOutput(view, compact) {
110
- return new ToolOutputComponent(buildToolOutputProps(view, compact));
111
- }
112
- export function buildBlockedToolView(args) {
113
- const { theme, label, title, accent, reason } = args;
114
- const { palette, text } = theme;
115
- const errorColor = (s) => palette.actionError(s);
116
- const msg = reason.trim();
117
- const section = buildSection(msg ? [errorColor(msg)] : []);
118
- const accentInline = inlineText(accent);
119
- const whyInline = inlineText(reason);
120
- const header = buildToolHeaderLine({
121
- bulletStyle: errorColor,
122
- bullet: "✗",
123
- label,
124
- labelStyle: palette.textMuted,
125
- accent: accentInline,
126
- accentStyle: palette.brandAccent,
127
- });
128
- return {
129
- borderColor: errorColor,
130
- expanded: {
131
- title: errorColor(text.bold(title)),
132
- sections: section ? [section] : [],
133
- },
134
- compact: {
135
- header,
136
- extraText: whyInline ? ` ${errorColor(whyInline)}` : undefined,
137
- },
138
- };
139
- }
140
- export function buildToolOutputProps(view, compact) {
141
- const header = view.compact.header === undefined
142
- ? undefined
143
- : isComponent(view.compact.header)
144
- ? view.compact.header
145
- : new HeaderLineComponent(view.compact.header);
146
- return {
147
- compact,
148
- expanded: {
149
- borderColor: view.borderColor,
150
- text: buildExpandedText(view.expanded),
151
- paddingX: view.expanded.paddingX,
152
- paddingY: view.expanded.paddingY,
153
- },
154
- compactView: {
155
- headerComponent: header,
156
- extraText: view.compact.extraText,
157
- extraComponent: view.compact.extraComponent,
158
- paddingX: view.compact.paddingX,
159
- paddingY: view.compact.paddingY,
160
- },
161
- };
162
- }
163
- //# sourceMappingURL=tool_output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool_output.js","sourceRoot":"","sources":["../../../src/tui/ui/tool_output.ts"],"names":[],"mappings":"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"}