@timetotest/cli 0.3.1 → 0.3.3

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 (77) hide show
  1. package/README.md +12 -2
  2. package/dist/bin/ttt.js +0 -6
  3. package/dist/bin/ttt.js.map +1 -1
  4. package/dist/package.json +1 -1
  5. package/dist/src/commands/chat/ChatApp.js +229 -124
  6. package/dist/src/commands/chat/ChatApp.js.map +1 -1
  7. package/dist/src/commands/chat/OnboardingApp.js +13 -6
  8. package/dist/src/commands/chat/OnboardingApp.js.map +1 -1
  9. package/dist/src/commands/chat/components/ChatInput.js +22 -9
  10. package/dist/src/commands/chat/components/ChatInput.js.map +1 -1
  11. package/dist/src/commands/chat/components/ModelPicker.js +62 -0
  12. package/dist/src/commands/chat/components/ModelPicker.js.map +1 -0
  13. package/dist/src/commands/chat/components/TodoPanel.js +71 -0
  14. package/dist/src/commands/chat/components/TodoPanel.js.map +1 -0
  15. package/dist/src/commands/chat/components/ToolCallDisplay.js +45 -28
  16. package/dist/src/commands/chat/components/ToolCallDisplay.js.map +1 -1
  17. package/dist/src/commands/chat/tool-message-matcher.js +20 -0
  18. package/dist/src/commands/chat/tool-message-matcher.js.map +1 -0
  19. package/dist/src/commands/chat-ink.js +200 -341
  20. package/dist/src/commands/chat-ink.js.map +1 -1
  21. package/dist/src/commands/login.js +21 -5
  22. package/dist/src/commands/login.js.map +1 -1
  23. package/dist/src/lib/__tests__/code-mode-integration.test.js +45 -356
  24. package/dist/src/lib/__tests__/code-mode-integration.test.js.map +1 -1
  25. package/dist/src/lib/__tests__/login-auth-flow.test.js +14 -0
  26. package/dist/src/lib/__tests__/login-auth-flow.test.js.map +1 -0
  27. package/dist/src/lib/__tests__/model-picker-window.test.js +20 -0
  28. package/dist/src/lib/__tests__/model-picker-window.test.js.map +1 -0
  29. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js +46 -0
  30. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js.map +1 -0
  31. package/dist/src/lib/__tests__/tool-message-matcher.test.js +26 -0
  32. package/dist/src/lib/__tests__/tool-message-matcher.test.js.map +1 -0
  33. package/dist/src/lib/__tests__/ui-browser-integration.test.js +35 -0
  34. package/dist/src/lib/__tests__/ui-browser-integration.test.js.map +1 -0
  35. package/dist/src/lib/agent-orchestrator.js +16 -717
  36. package/dist/src/lib/agent-orchestrator.js.map +1 -1
  37. package/dist/src/lib/backend-loop-client.js +377 -0
  38. package/dist/src/lib/backend-loop-client.js.map +1 -0
  39. package/dist/src/lib/cli-tool-manifest.js +71 -0
  40. package/dist/src/lib/cli-tool-manifest.js.map +1 -0
  41. package/dist/src/lib/config.js +60 -9
  42. package/dist/src/lib/config.js.map +1 -1
  43. package/dist/src/lib/conversation/turns.js +58 -0
  44. package/dist/src/lib/conversation/turns.js.map +1 -0
  45. package/dist/src/lib/events.js +20 -4
  46. package/dist/src/lib/events.js.map +1 -1
  47. package/dist/src/lib/http.js +7 -2
  48. package/dist/src/lib/http.js.map +1 -1
  49. package/dist/src/lib/prompts/templates.js +18 -0
  50. package/dist/src/lib/prompts/templates.js.map +1 -1
  51. package/dist/src/lib/session-manager.js +74 -33
  52. package/dist/src/lib/session-manager.js.map +1 -1
  53. package/dist/src/lib/socket.js +15 -3
  54. package/dist/src/lib/socket.js.map +1 -1
  55. package/dist/src/lib/todo.js +7 -0
  56. package/dist/src/lib/todo.js.map +1 -0
  57. package/dist/src/lib/tool-executor.js +196 -51
  58. package/dist/src/lib/tool-executor.js.map +1 -1
  59. package/dist/src/lib/tui/events.js +10 -9
  60. package/dist/src/lib/tui/events.js.map +1 -1
  61. package/dist/src/lib/tui/ink/components/TimetoTestLogo.js +1 -1
  62. package/dist/src/lib/tui/ink/components/TimetoTestLogo.js.map +1 -1
  63. package/dist/src/lib/utils/json.js +15 -0
  64. package/dist/src/lib/utils/json.js.map +1 -0
  65. package/package.json +1 -1
  66. package/dist/src/commands/report.js +0 -25
  67. package/dist/src/commands/report.js.map +0 -1
  68. package/dist/src/commands/restart.js +0 -17
  69. package/dist/src/commands/restart.js.map +0 -1
  70. package/dist/src/commands/share.js +0 -18
  71. package/dist/src/commands/share.js.map +0 -1
  72. package/dist/src/lib/context-compactor.js +0 -310
  73. package/dist/src/lib/context-compactor.js.map +0 -1
  74. package/dist/src/lib/tool-registry.js +0 -971
  75. package/dist/src/lib/tool-registry.js.map +0 -1
  76. package/dist/src/lib/tool-result-pruner.js +0 -384
  77. package/dist/src/lib/tool-result-pruner.js.map +0 -1
@@ -5,15 +5,19 @@ import { TimetoTestLogo } from "../../lib/tui/ink/components/TimetoTestLogo.js";
5
5
  import { inkTheme } from "../../lib/tui/ink/theme.js";
6
6
  const ITEMS = [
7
7
  {
8
- label: "Login / Sign Up",
9
- value: "login",
8
+ label: "Sign In",
9
+ value: "signin",
10
+ },
11
+ {
12
+ label: "Sign Up",
13
+ value: "signup",
10
14
  },
11
15
  {
12
16
  label: "Exit",
13
17
  value: "exit",
14
18
  },
15
19
  ];
16
- export const OnboardingApp = ({ onLogin, onExit, }) => {
20
+ export const OnboardingApp = ({ onSignIn, onSignUp, onExit, }) => {
17
21
  const { exit } = useApp();
18
22
  const [activeItem, setActiveItem] = useState(ITEMS[0]);
19
23
  // Handle global key presses (like ctrl+c)
@@ -24,8 +28,11 @@ export const OnboardingApp = ({ onLogin, onExit, }) => {
24
28
  }
25
29
  });
26
30
  const handleSelect = (item) => {
27
- if (item.value === "login") {
28
- onLogin();
31
+ if (item.value === "signin") {
32
+ onSignIn();
33
+ }
34
+ else if (item.value === "signup") {
35
+ onSignUp();
29
36
  }
30
37
  else {
31
38
  onExit();
@@ -36,7 +43,7 @@ export const OnboardingApp = ({ onLogin, onExit, }) => {
36
43
  React.createElement(Box, { flexDirection: "column", flexGrow: 1, overflow: "hidden" },
37
44
  React.createElement(TimetoTestLogo, null),
38
45
  React.createElement(Box, { flexDirection: "column", paddingX: 2, marginTop: 1 },
39
- React.createElement(Text, { color: inkTheme.colors.text.secondary }, "Welcome to Time to Test CLI. Please authenticate to continue.")),
46
+ React.createElement(Text, { color: inkTheme.colors.text.secondary }, "Welcome to Time to Test CLI. Choose Sign In or Sign Up to continue.")),
40
47
  React.createElement(Box, { flexDirection: "column", paddingX: 2, marginTop: 2 },
41
48
  React.createElement(SelectInput, { items: ITEMS, onSelect: handleSelect, indicatorComponent: ({ isSelected }) => (React.createElement(Text, { color: isSelected ? inkTheme.colors.text.accent : undefined }, isSelected ? "> " : " ")), itemComponent: ({ isSelected, label }) => (React.createElement(Text, { color: isSelected ? inkTheme.colors.text.accent : undefined }, label)) }))),
42
49
  React.createElement(Box, { paddingX: 2, paddingY: 1, borderStyle: "single", borderColor: inkTheme.colors.border.default, borderBottom: false, borderLeft: false, borderRight: false },
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/OnboardingApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,QAAQ,EAAY,MAAM,OAAO,CAAC;AACjD,OAAO,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,KAAK,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAC,cAAc,EAAC,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAC,QAAQ,EAAC,MAAM,4BAA4B,CAAC;AAOpD,MAAM,KAAK,GAAG;IACZ;QACE,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,OAAO;KACf;IACD;QACE,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,MAAM;KACd;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,OAAO,EACP,MAAM,GACP,EAAE,EAAE;IACH,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,0CAA0C;IAC1C,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,IAAqB,EAAE,EAAE;QAC7C,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM;QACpD,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ;YACxD,oBAAC,cAAc,OAAG;YAElB,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;gBACnD,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,oEAEpC,CACH;YAEN,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;gBACnD,oBAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,EACtB,kBAAkB,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE,EAAE,CAAC,CACpC,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAC9D,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACpB,CACR,EACD,aAAa,EAAE,CAAC,EAAC,UAAU,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CACtC,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAC9D,KAAK,CACD,CACR,GACD,CACE,CACF;QAGN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;YACzJ,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC;gBACd,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,6DAE1C,CACH;YACN,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ;gBAC7C,oBAAC,IAAI,IAAC,IAAI,mBAAc;wBACrB,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"OnboardingApp.js","sourceRoot":"","sources":["../../../../src/commands/chat/OnboardingApp.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from "react";
2
2
  import { Box, Text, useInput } from "ink";
3
3
  import TextInput from "ink-text-input";
4
4
  import { inkTheme } from "../../../lib/tui/ink/theme.js";
5
- export const ChatInput = ({ placeholder, value, onChange, onSubmit, onCancel, getSuggestions, disabled, onHistoryUp, onHistoryDown, testingMode, directory, hintsRight, onToggleMode, }) => {
5
+ export const ChatInput = ({ placeholder, value, onChange, onSubmit, onCancel, getSuggestions, disabled, onHistoryUp, onHistoryDown, testingMode, directory, hintsRight, onToggleMode, isActive = true, }) => {
6
6
  const [selectedIndex, setSelectedIndex] = useState(0);
7
7
  const [windowStart, setWindowStart] = useState(0);
8
8
  const allSuggestions = value.startsWith("/") && getSuggestions ? getSuggestions(value) : [];
@@ -47,6 +47,13 @@ export const ChatInput = ({ placeholder, value, onChange, onSubmit, onCancel, ge
47
47
  return;
48
48
  }
49
49
  if (key.tab) {
50
+ if (allSuggestions.length > 0) {
51
+ const selected = allSuggestions[selectedIndex];
52
+ if (selected) {
53
+ onChange(selected.value + " ");
54
+ return;
55
+ }
56
+ }
50
57
  onToggleMode?.();
51
58
  return;
52
59
  }
@@ -71,12 +78,18 @@ export const ChatInput = ({ placeholder, value, onChange, onSubmit, onCancel, ge
71
78
  if (key.return) {
72
79
  const selected = allSuggestions[selectedIndex];
73
80
  if (selected) {
74
- onChange(selected.value + " ");
75
- // Optional: Submit immediately if desired, or just autocomplete
76
- // onSubmit(selected.value);
81
+ const trimmed = value.trim();
82
+ const hasArgs = /^\/\S+\s+/.test(trimmed);
83
+ if (!hasArgs) {
84
+ onChange("");
85
+ onSubmit(selected.value);
86
+ }
87
+ else {
88
+ onChange(selected.value + " ");
89
+ }
77
90
  }
78
91
  }
79
- });
92
+ }, { isActive });
80
93
  return (React.createElement(Box, { flexDirection: "column", overflow: "hidden" },
81
94
  React.createElement(Box, { flexDirection: "row" },
82
95
  React.createElement(Box, { width: 1, backgroundColor: "#0ea5e9" }),
@@ -100,11 +113,11 @@ export const ChatInput = ({ placeholder, value, onChange, onSubmit, onCancel, ge
100
113
  React.createElement(Text, { color: inkTheme.colors.text.muted, dimColor: true }, hintsRight ??
101
114
  (testingMode === "code" ? (React.createElement(Text, null,
102
115
  React.createElement(Text, { bold: true, color: inkTheme.colors.text.primary }, "tab"),
103
- " mode \u2022 read_file \u2022 grep_search \u2022 run_command")) : (React.createElement(Text, null,
116
+ " ",
117
+ "mode \u2022 read_file \u2022 grep_search \u2022 run_command")) : (React.createElement(Text, null,
104
118
  React.createElement(Text, { bold: true, color: inkTheme.colors.text.primary }, "tab"),
105
- " mode \u2022 ",
106
- React.createElement(Text, { bold: true, color: inkTheme.colors.text.primary }, "ctrl+k"),
107
- " commands")))))),
119
+ " ",
120
+ "mode")))))),
108
121
  React.createElement(Box, { paddingX: 2, marginTop: 1, marginBottom: 1 },
109
122
  React.createElement(Box, { flexGrow: 1 },
110
123
  React.createElement(Text, { color: inkTheme.colors.text.muted, dimColor: true }, directory)),
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ChatInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ChatInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import React from "react";
2
+ import { Box, Text } from "ink";
3
+ import { inkTheme } from "../../../lib/tui/ink/theme.js";
4
+ export function getModelPickerWindow(totalItems, selectedIndex, maxVisible) {
5
+ const start = Math.max(0, Math.min(selectedIndex - Math.floor(maxVisible / 2), Math.max(0, totalItems - maxVisible)));
6
+ return { start, end: start + maxVisible };
7
+ }
8
+ export function ModelPicker(props) {
9
+ const { query, items, selectedIndex, currentModel, planTier, creditBalance } = props;
10
+ const maxVisible = 8;
11
+ const { start, end } = getModelPickerWindow(items.length, selectedIndex, maxVisible);
12
+ const visible = items.slice(start, end);
13
+ const remaining = Math.max(0, items.length - visible.length);
14
+ const tierText = planTier ? `${planTier} plan` : "free plan";
15
+ const creditText = typeof creditBalance === "number" ? ` • ${creditBalance} credits` : "";
16
+ const currentModelName = items.find((item) => item.id === currentModel)?.name;
17
+ return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: inkTheme.colors.border.accent, paddingX: 1, paddingY: 1, marginBottom: 1 },
18
+ React.createElement(Box, { marginBottom: 1 },
19
+ React.createElement(Text, { color: inkTheme.colors.text.accent, bold: true }, "Select Model"),
20
+ React.createElement(Text, { color: inkTheme.colors.text.muted }, " (\u2191\u2193 navigate, enter select, esc cancel)")),
21
+ React.createElement(Box, { marginBottom: 1 },
22
+ React.createElement(Text, { color: inkTheme.colors.text.secondary },
23
+ tierText,
24
+ creditText)),
25
+ currentModelName ? (React.createElement(Box, { marginBottom: 1 },
26
+ React.createElement(Text, { color: inkTheme.colors.text.muted },
27
+ "Current model: ",
28
+ React.createElement(Text, { color: inkTheme.colors.text.accent }, currentModelName)))) : null,
29
+ query ? (React.createElement(Box, { marginBottom: 1 },
30
+ React.createElement(Text, { color: inkTheme.colors.text.muted }, "\u203A "),
31
+ React.createElement(Text, { color: inkTheme.colors.text.secondary }, query))) : null,
32
+ React.createElement(Box, { flexDirection: "column" }, visible.length === 0 ? (React.createElement(Text, { color: inkTheme.colors.text.muted }, "No models match your search.")) : (visible.map((item, idx) => {
33
+ const globalIndex = start + idx;
34
+ const active = globalIndex === selectedIndex;
35
+ const isCurrent = currentModel === item.id;
36
+ const usesText = typeof item.usesRemaining === "number"
37
+ ? ` • ${item.usesRemaining} free uses`
38
+ : "";
39
+ const creditsText = typeof item.credits === "number" && item.credits > 0
40
+ ? ` • ${item.credits} credit${item.credits === 1 ? "" : "s"}/msg`
41
+ : "";
42
+ const thinkingText = item.thinking ? " • thinking" : "";
43
+ const tier = item.tier ? ` • ${item.tier}` : "";
44
+ return (React.createElement(Box, { key: item.id, flexDirection: "column", marginBottom: 1 },
45
+ React.createElement(Box, { flexDirection: "row" },
46
+ React.createElement(Text, { color: active ? inkTheme.colors.text.accent : inkTheme.colors.text.secondary, bold: active },
47
+ active ? "› " : " ",
48
+ item.name),
49
+ isCurrent ? (React.createElement(Box, { marginLeft: 1 },
50
+ React.createElement(Text, { color: inkTheme.colors.text.accent, bold: true }, "(current)"))) : null),
51
+ React.createElement(Text, { color: inkTheme.colors.text.muted },
52
+ tier,
53
+ creditsText,
54
+ usesText,
55
+ thinkingText)));
56
+ }))),
57
+ remaining > 0 ? (React.createElement(Text, { color: inkTheme.colors.text.muted },
58
+ "... ",
59
+ remaining,
60
+ " more (use \u2191\u2193)")) : null));
61
+ }
62
+ //# sourceMappingURL=ModelPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelPicker.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ModelPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import React, { useMemo } from "react";
2
+ import { Box, Text } from "ink";
3
+ import { inkTheme } from "../../../lib/tui/ink/theme.js";
4
+ function statusColor(status) {
5
+ if (status === "completed")
6
+ return inkTheme.colors.text.success;
7
+ if (status === "failed")
8
+ return inkTheme.colors.text.error;
9
+ if (status === "in_progress")
10
+ return inkTheme.colors.text.accent;
11
+ if (status === "cancelled")
12
+ return inkTheme.colors.text.muted;
13
+ return inkTheme.colors.text.warning; // pending
14
+ }
15
+ function statusLabel(status) {
16
+ if (status === "completed")
17
+ return "DONE";
18
+ if (status === "failed")
19
+ return "FAIL";
20
+ if (status === "in_progress")
21
+ return "DO";
22
+ if (status === "cancelled")
23
+ return "SKIP";
24
+ return "NEXT";
25
+ }
26
+ function clampText(text, max) {
27
+ if (text.length <= max)
28
+ return text;
29
+ if (max <= 1)
30
+ return text.slice(0, max);
31
+ return text.slice(0, max - 1) + "…";
32
+ }
33
+ export const TodoPanel = ({ snapshot, width, maxItems = 8 }) => {
34
+ const { remaining, doneCount, failCount } = useMemo(() => {
35
+ const todos = Array.isArray(snapshot.todos) ? snapshot.todos : [];
36
+ const remaining = todos.filter((t) => t.status !== "completed" && t.status !== "failed" && t.status !== "cancelled");
37
+ const doneCount = todos.filter((t) => t.status === "completed").length;
38
+ const failCount = todos.filter((t) => t.status === "failed").length;
39
+ return { remaining, doneCount, failCount };
40
+ }, [snapshot.todos]);
41
+ const items = remaining.slice(0, Math.max(0, maxItems));
42
+ const hasOverflow = remaining.length > items.length;
43
+ const title = snapshot.title || "Todo";
44
+ const subtitle = snapshot.description ||
45
+ `${remaining.length} remaining • ${doneCount} done • ${failCount} failed`;
46
+ const contentWidth = Math.max(10, width - 4); // border padding
47
+ const lineWidth = Math.max(10, contentWidth);
48
+ const renderItem = (item, idx) => {
49
+ const isFocused = !!snapshot.current_id && item.id === snapshot.current_id;
50
+ const label = statusLabel(item.status);
51
+ const labelWidth = 5;
52
+ const gap = 1;
53
+ const titleWidth = Math.max(6, lineWidth - labelWidth - gap - 2);
54
+ const t = clampText(item.title || "Task", titleWidth);
55
+ return (React.createElement(Box, { key: item.id || String(idx), flexDirection: "row" },
56
+ React.createElement(Text, { color: statusColor(item.status), bold: true }, label.padEnd(labelWidth)),
57
+ React.createElement(Text, null, " ".repeat(gap)),
58
+ React.createElement(Text, { color: isFocused ? inkTheme.colors.text.accent : inkTheme.colors.text.primary, bold: isFocused }, isFocused ? `› ${t}` : ` ${t}`)));
59
+ };
60
+ return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, paddingY: 1, width: width },
61
+ React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
62
+ React.createElement(Text, { color: inkTheme.colors.text.secondary, bold: true }, clampText(title, lineWidth)),
63
+ React.createElement(Text, { color: inkTheme.colors.text.muted, dimColor: true }, clampText(subtitle, lineWidth))),
64
+ items.length === 0 ? (React.createElement(Text, { color: inkTheme.colors.text.muted, dimColor: true }, "No remaining items.")) : (React.createElement(Box, { flexDirection: "column" },
65
+ items.map(renderItem),
66
+ hasOverflow ? (React.createElement(Text, { color: inkTheme.colors.text.muted, dimColor: true },
67
+ "+",
68
+ remaining.length - items.length,
69
+ " more")) : null))));
70
+ };
71
+ //# sourceMappingURL=TodoPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoPanel.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/TodoPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +1,9 @@
1
- /**
2
- * ToolCallDisplay - Displays tool calls in a style similar to opencode
3
- * Shows tool name, arguments, and collapsible output
4
- */
5
- import React, { useState } from "react";
1
+ import React from "react";
6
2
  import { Box, Text } from "ink";
7
- /**
8
- * Format tool arguments into a readable command-like string
9
- */
10
3
  function formatToolCommand(toolName, args) {
11
4
  if (!args || Object.keys(args).length === 0) {
12
5
  return toolName.replace(/_/g, " ");
13
6
  }
14
- // Format based on tool type
15
7
  switch (toolName) {
16
8
  case "list_directory":
17
9
  return `ls ${args.path || "."}${args.recursive ? " -R" : ""}`;
@@ -30,7 +22,6 @@ function formatToolCommand(toolName, args) {
30
22
  case "get_project_info":
31
23
  return "detect project info";
32
24
  default:
33
- // Generic format: tool_name key=value key=value
34
25
  const argParts = Object.entries(args)
35
26
  .filter(([_, v]) => v !== undefined && v !== null)
36
27
  .map(([k, v]) => `${k}=${JSON.stringify(v)}`)
@@ -38,17 +29,50 @@ function formatToolCommand(toolName, args) {
38
29
  return `${toolName.replace(/_/g, " ")}${argParts ? " " + argParts : ""}`;
39
30
  }
40
31
  }
41
- /**
42
- * Format tool result for display
43
- */
32
+ function extractErrorMessage(result) {
33
+ const direct = result.error || result.message;
34
+ if (typeof direct === "string" && direct.trim())
35
+ return direct.trim();
36
+ const nested = result.result;
37
+ if (nested && typeof nested === "object") {
38
+ const nestedError = nested.error || nested.message;
39
+ if (typeof nestedError === "string" && nestedError.trim()) {
40
+ return nestedError.trim();
41
+ }
42
+ }
43
+ return null;
44
+ }
45
+ function toDisplayLine(value) {
46
+ if (typeof value === "string")
47
+ return value;
48
+ if (typeof value === "number" || typeof value === "boolean") {
49
+ return String(value);
50
+ }
51
+ try {
52
+ return JSON.stringify(value);
53
+ }
54
+ catch {
55
+ return String(value);
56
+ }
57
+ }
58
+ function summarizeUnknownResult(result) {
59
+ const keys = Object.keys(result).filter((key) => !["success", "ok", "result", "data"].includes(key));
60
+ if (keys.length === 0) {
61
+ return [result.success === false ? "Failed" : "Success"];
62
+ }
63
+ const lines = keys.slice(0, 6).map((key) => `${key}: ${toDisplayLine(result[key])}`);
64
+ if (keys.length > 6) {
65
+ lines.push(`... ${keys.length - 6} more fields`);
66
+ }
67
+ return lines;
68
+ }
44
69
  function formatToolResult(toolName, result) {
45
70
  if (!result)
46
71
  return [];
47
- // Handle errors
48
- if (result.error) {
49
- return [`Error: ${result.error}`];
72
+ const errorMessage = extractErrorMessage(result);
73
+ if (errorMessage) {
74
+ return [`Error: ${errorMessage}`];
50
75
  }
51
- // Format based on tool type
52
76
  switch (toolName) {
53
77
  case "list_directory":
54
78
  if (result.entries && Array.isArray(result.entries)) {
@@ -103,11 +127,7 @@ function formatToolResult(toolName, result) {
103
127
  }
104
128
  return info;
105
129
  }
106
- // Fallback: stringify the result
107
- if (result.success !== undefined) {
108
- return [result.success ? "✓ Success" : "✗ Failed"];
109
- }
110
- return [JSON.stringify(result, null, 2)];
130
+ return summarizeUnknownResult(result);
111
131
  }
112
132
  function formatFileSize(bytes) {
113
133
  if (bytes < 1024)
@@ -117,22 +137,19 @@ function formatFileSize(bytes) {
117
137
  return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
118
138
  }
119
139
  export const ToolCallDisplay = ({ toolName, args, result, isLoading = false, maxOutputLines = 10, }) => {
120
- const [expanded, setExpanded] = useState(false);
121
140
  const command = formatToolCommand(toolName, args);
122
141
  const outputLines = formatToolResult(toolName, result);
123
142
  const hasOutput = outputLines.length > 0;
124
143
  const needsTruncation = outputLines.length > maxOutputLines;
125
- const displayLines = expanded
126
- ? outputLines
127
- : outputLines.slice(0, maxOutputLines);
144
+ const displayLines = outputLines.slice(0, maxOutputLines);
128
145
  return (React.createElement(Box, { flexDirection: "column", marginY: 0, paddingLeft: 2 },
129
146
  React.createElement(Box, null,
130
147
  React.createElement(Text, { color: "gray" }, "$ "),
131
148
  React.createElement(Text, { color: "cyan" }, command),
132
149
  isLoading && React.createElement(Text, { color: "yellow" }, " \u23F3")),
133
150
  hasOutput && (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 },
134
- displayLines.map((line, i) => (React.createElement(Text, { key: i, color: "gray", dimColor: true }, line))),
135
- needsTruncation && !expanded && (React.createElement(Text, { color: "gray", dimColor: true },
151
+ displayLines.map((line, i) => (React.createElement(Text, { key: i, color: "gray", dimColor: true }, line.length > 240 ? `${line.slice(0, 240)}...` : line))),
152
+ needsTruncation && (React.createElement(Text, { color: "gray", dimColor: true },
136
153
  "... (",
137
154
  outputLines.length - maxOutputLines,
138
155
  " more lines)"))))));
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallDisplay.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ToolCallDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolCallDisplay.js","sourceRoot":"","sources":["../../../../../src/commands/chat/components/ToolCallDisplay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export function resolveToolMessageIndex(messages, update) {
2
+ if (update.callId) {
3
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
4
+ const metadata = messages[i].metadata;
5
+ if (!metadata?.isTool)
6
+ continue;
7
+ if (metadata.toolCallId === update.callId)
8
+ return i;
9
+ }
10
+ }
11
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
12
+ const metadata = messages[i].metadata;
13
+ if (!metadata?.isTool)
14
+ continue;
15
+ if (metadata.toolName === update.toolName)
16
+ return i;
17
+ }
18
+ return -1;
19
+ }
20
+ //# sourceMappingURL=tool-message-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-message-matcher.js","sourceRoot":"","sources":["../../../../src/commands/chat/tool-message-matcher.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,uBAAuB,CACrC,QAAgC,EAChC,MAA2C;IAE3C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAAE,SAAS;YAChC,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,SAAS;QAChC,IAAI,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC"}