wepscli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +293 -0
  2. package/dist/WEPSCLI-shell/agent-runtime.js +824 -0
  3. package/dist/WEPSCLI-shell/agent-runtime.js.map +1 -0
  4. package/dist/WEPSCLI-shell/approval-overlay.js +275 -0
  5. package/dist/WEPSCLI-shell/approval-overlay.js.map +1 -0
  6. package/dist/WEPSCLI-shell/chat-components.js +760 -0
  7. package/dist/WEPSCLI-shell/chat-components.js.map +1 -0
  8. package/dist/WEPSCLI-shell/components.js +850 -0
  9. package/dist/WEPSCLI-shell/components.js.map +1 -0
  10. package/dist/WEPSCLI-shell/config-overlays.js +205 -0
  11. package/dist/WEPSCLI-shell/config-overlays.js.map +1 -0
  12. package/dist/WEPSCLI-shell/debug-log.js +16 -0
  13. package/dist/WEPSCLI-shell/debug-log.js.map +1 -0
  14. package/dist/WEPSCLI-shell/file-change-preview.js +261 -0
  15. package/dist/WEPSCLI-shell/file-change-preview.js.map +1 -0
  16. package/dist/WEPSCLI-shell/helpers.js +112 -0
  17. package/dist/WEPSCLI-shell/helpers.js.map +1 -0
  18. package/dist/WEPSCLI-shell/index.js +3 -0
  19. package/dist/WEPSCLI-shell/index.js.map +1 -0
  20. package/dist/WEPSCLI-shell/provider-add-flow.js +406 -0
  21. package/dist/WEPSCLI-shell/provider-add-flow.js.map +1 -0
  22. package/dist/WEPSCLI-shell/run-wepscli-shell.js +21 -0
  23. package/dist/WEPSCLI-shell/run-wepscli-shell.js.map +1 -0
  24. package/dist/WEPSCLI-shell/runtime-recovery.js +37 -0
  25. package/dist/WEPSCLI-shell/runtime-recovery.js.map +1 -0
  26. package/dist/WEPSCLI-shell/runtime-status.js +66 -0
  27. package/dist/WEPSCLI-shell/runtime-status.js.map +1 -0
  28. package/dist/WEPSCLI-shell/shell-app.js +1047 -0
  29. package/dist/WEPSCLI-shell/shell-app.js.map +1 -0
  30. package/dist/WEPSCLI-shell/shell-modes.js +77 -0
  31. package/dist/WEPSCLI-shell/shell-modes.js.map +1 -0
  32. package/dist/WEPSCLI-shell/slash-commands.js +135 -0
  33. package/dist/WEPSCLI-shell/slash-commands.js.map +1 -0
  34. package/dist/WEPSCLI-shell/theme.js +19 -0
  35. package/dist/WEPSCLI-shell/theme.js.map +1 -0
  36. package/dist/WEPSCLI-shell/tool-approval.js +85 -0
  37. package/dist/WEPSCLI-shell/tool-approval.js.map +1 -0
  38. package/dist/WEPSCLI-shell/tool-diff.js +76 -0
  39. package/dist/WEPSCLI-shell/tool-diff.js.map +1 -0
  40. package/dist/WEPSCLI-shell/tool-file-changes.js +268 -0
  41. package/dist/WEPSCLI-shell/tool-file-changes.js.map +1 -0
  42. package/dist/WEPSCLI-shell/tool-message-detail.js +138 -0
  43. package/dist/WEPSCLI-shell/tool-message-detail.js.map +1 -0
  44. package/dist/WEPSCLI-shell/tool-messages.js +145 -0
  45. package/dist/WEPSCLI-shell/tool-messages.js.map +1 -0
  46. package/dist/WEPSCLI-shell/transcript-panel.js +372 -0
  47. package/dist/WEPSCLI-shell/transcript-panel.js.map +1 -0
  48. package/dist/WEPSCLI-shell/transcript-state.js +62 -0
  49. package/dist/WEPSCLI-shell/transcript-state.js.map +1 -0
  50. package/dist/WEPSCLI-shell/types.js +1 -0
  51. package/dist/WEPSCLI-shell/types.js.map +1 -0
  52. package/dist/cli.js +11 -0
  53. package/dist/cli.js.map +1 -0
  54. package/dist/config.js +40 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/index.js +4 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/main.js +140 -0
  59. package/dist/main.js.map +1 -0
  60. package/dist/onboarding/action-screen.js +90 -0
  61. package/dist/onboarding/action-screen.js.map +1 -0
  62. package/dist/onboarding/framed-screen.js +35 -0
  63. package/dist/onboarding/framed-screen.js.map +1 -0
  64. package/dist/onboarding/onboarding-app.js +312 -0
  65. package/dist/onboarding/onboarding-app.js.map +1 -0
  66. package/dist/onboarding/run-onboarding.js +23 -0
  67. package/dist/onboarding/run-onboarding.js.map +1 -0
  68. package/dist/onboarding/select-screen.js +21 -0
  69. package/dist/onboarding/select-screen.js.map +1 -0
  70. package/dist/onboarding/summary-screen.js +23 -0
  71. package/dist/onboarding/summary-screen.js.map +1 -0
  72. package/dist/onboarding/text-input-screen.js +55 -0
  73. package/dist/onboarding/text-input-screen.js.map +1 -0
  74. package/dist/onboarding/theme.js +26 -0
  75. package/dist/onboarding/theme.js.map +1 -0
  76. package/dist/provider-profiles/api-key-store.js +51 -0
  77. package/dist/provider-profiles/api-key-store.js.map +1 -0
  78. package/dist/provider-profiles/defaults.js +18 -0
  79. package/dist/provider-profiles/defaults.js.map +1 -0
  80. package/dist/provider-profiles/fetch-models.js +53 -0
  81. package/dist/provider-profiles/fetch-models.js.map +1 -0
  82. package/dist/provider-profiles/index.js +6 -0
  83. package/dist/provider-profiles/index.js.map +1 -0
  84. package/dist/provider-profiles/provider-profile-service.js +223 -0
  85. package/dist/provider-profiles/provider-profile-service.js.map +1 -0
  86. package/dist/provider-profiles/providers-config-store.js +17 -0
  87. package/dist/provider-profiles/providers-config-store.js.map +1 -0
  88. package/dist/provider-profiles/types.js +1 -0
  89. package/dist/provider-profiles/types.js.map +1 -0
  90. package/dist/session-history/session-history-service.js +142 -0
  91. package/dist/session-history/session-history-service.js.map +1 -0
  92. package/dist/shell/animator.js +30 -0
  93. package/dist/shell/animator.js.map +1 -0
  94. package/dist/shell/clickables.js +101 -0
  95. package/dist/shell/clickables.js.map +1 -0
  96. package/dist/shell/dashboard-shell.js +292 -0
  97. package/dist/shell/dashboard-shell.js.map +1 -0
  98. package/dist/shell/index.js +5 -0
  99. package/dist/shell/index.js.map +1 -0
  100. package/dist/shell/keymap.js +14 -0
  101. package/dist/shell/keymap.js.map +1 -0
  102. package/dist/shell/mouse.js +39 -0
  103. package/dist/shell/mouse.js.map +1 -0
  104. package/dist/shell/render.js +122 -0
  105. package/dist/shell/render.js.map +1 -0
  106. package/dist/shell/run-shell.js +36 -0
  107. package/dist/shell/run-shell.js.map +1 -0
  108. package/dist/shell/theme.js +56 -0
  109. package/dist/shell/theme.js.map +1 -0
  110. package/dist/storage/locked-json-file.js +88 -0
  111. package/dist/storage/locked-json-file.js.map +1 -0
  112. package/dist/workbench/animator.js +30 -0
  113. package/dist/workbench/animator.js.map +1 -0
  114. package/dist/workbench/index.js +6 -0
  115. package/dist/workbench/index.js.map +1 -0
  116. package/dist/workbench/mouse.js +39 -0
  117. package/dist/workbench/mouse.js.map +1 -0
  118. package/dist/workbench/render.js +82 -0
  119. package/dist/workbench/render.js.map +1 -0
  120. package/dist/workbench/renderer.js +364 -0
  121. package/dist/workbench/renderer.js.map +1 -0
  122. package/dist/workbench/run-workbench.js +36 -0
  123. package/dist/workbench/run-workbench.js.map +1 -0
  124. package/dist/workbench/theme.js +63 -0
  125. package/dist/workbench/theme.js.map +1 -0
  126. package/dist/workbench/types.js +1 -0
  127. package/dist/workbench/types.js.map +1 -0
  128. package/dist/workbench/workbench-shell.js +649 -0
  129. package/dist/workbench/workbench-shell.js.map +1 -0
  130. package/package.json +65 -0
@@ -0,0 +1,145 @@
1
+ import { extractToolFileChanges, formatToolDiffDeltaStats, formatToolDiffStats, toolFileChangeLocation } from "./tool-file-changes.js";
2
+ function normalizeDisplayText(value) {
3
+ return value.replace(/\r/g, "").trim();
4
+ }
5
+ function formatUnknownValue(value) {
6
+ if (typeof value === "string") {
7
+ return normalizeDisplayText(value);
8
+ }
9
+ if (value == null) {
10
+ return "";
11
+ }
12
+ try {
13
+ return normalizeDisplayText(JSON.stringify(value, null, 2));
14
+ } catch {
15
+ return normalizeDisplayText(String(value));
16
+ }
17
+ }
18
+ function extractContentBlocks(value) {
19
+ return value.map(block => {
20
+ if (block.type === "text" && typeof block.text === "string") {
21
+ return block.text;
22
+ }
23
+ if (block.type === "thinking" && typeof block.thinking === "string") {
24
+ return block.thinking;
25
+ }
26
+ if (block.type === "image") {
27
+ return "[image]";
28
+ }
29
+ if (block.type === "audio") {
30
+ return "[audio]";
31
+ }
32
+ return "";
33
+ }).filter(Boolean).join("\n\n").trim();
34
+ }
35
+ function extractContentValue(value) {
36
+ if (typeof value === "object" && value !== null && "content" in value && Array.isArray(value.content)) {
37
+ const extracted = extractContentBlocks(value.content);
38
+ if (extracted) {
39
+ return extracted;
40
+ }
41
+ }
42
+ return formatUnknownValue(value);
43
+ }
44
+ function firstNonEmptyLine(value) {
45
+ return value.split("\n").map(line => line.trim()).find(Boolean);
46
+ }
47
+ export function formatToolArgs(args) {
48
+ return extractContentValue(args) || "No arguments";
49
+ }
50
+ export function formatToolOutput(result) {
51
+ return extractContentValue(result);
52
+ }
53
+ export function createToolMessageState(toolCallId, toolName, args) {
54
+ return {
55
+ toolCallId,
56
+ toolName,
57
+ status: "running",
58
+ argsText: formatToolArgs(args),
59
+ outputText: "",
60
+ fileChanges: extractToolFileChanges(toolName, args, undefined),
61
+ rawArgs: args
62
+ };
63
+ }
64
+ export function updateToolMessageState(tool, update) {
65
+ const nextRawArgs = update.args === undefined ? tool.rawArgs : update.args;
66
+ const nextRawOutput = update.output === undefined ? tool.rawOutput : update.output;
67
+ const nextArgsText = nextRawArgs === undefined ? tool.argsText : formatToolArgs(nextRawArgs);
68
+ const nextOutputText = nextRawOutput === undefined ? tool.outputText : formatToolOutput(nextRawOutput);
69
+ const nextFileChanges = extractToolFileChanges(tool.toolName, nextRawArgs, nextRawOutput).map((change, index) => {
70
+ const previousChange = tool.fileChanges[index];
71
+ if (!previousChange || previousChange.kind !== change.kind || previousChange.path !== change.path) {
72
+ return change;
73
+ }
74
+ return {
75
+ ...change,
76
+ firstChangedLine: change.firstChangedLine ?? previousChange.firstChangedLine,
77
+ diffText: change.diffText ?? previousChange.diffText,
78
+ diffLines: change.diffLines ?? previousChange.diffLines,
79
+ diffStats: change.diffStats ?? previousChange.diffStats,
80
+ previewText: change.previewText ?? previousChange.previewText
81
+ };
82
+ });
83
+ return {
84
+ ...tool,
85
+ status: update.status ?? tool.status,
86
+ argsText: nextArgsText || tool.argsText,
87
+ outputText: nextOutputText || tool.outputText,
88
+ fileChanges: nextFileChanges.length > 0 ? nextFileChanges : tool.fileChanges,
89
+ rawArgs: nextRawArgs,
90
+ rawOutput: nextRawOutput
91
+ };
92
+ }
93
+ export function toolStatusLabel(status) {
94
+ switch (status) {
95
+ case "awaiting_approval":
96
+ return "Needs Approval";
97
+ case "running":
98
+ return "Running";
99
+ case "completed":
100
+ return "Done";
101
+ case "failed":
102
+ return "Failed";
103
+ }
104
+ }
105
+ export function toolStatusTone(status) {
106
+ switch (status) {
107
+ case "awaiting_approval":
108
+ return "warning";
109
+ case "running":
110
+ return "accent";
111
+ case "completed":
112
+ return "success";
113
+ case "failed":
114
+ return "danger";
115
+ }
116
+ }
117
+ export function toolCardPreview(tool) {
118
+ const firstFileChange = tool.fileChanges[0];
119
+ if (firstFileChange && tool.status === "completed") {
120
+ const heading = `${tool.toolName} ${toolFileChangeLocation(firstFileChange)}`;
121
+ const diffStats = formatToolDiffDeltaStats(firstFileChange.diffStats);
122
+ return [heading, diffStats].filter(Boolean).join("\n");
123
+ }
124
+ const lines = [`${toolStatusLabel(tool.status)}: ${tool.toolName}`];
125
+ const outputLine = firstNonEmptyLine(tool.outputText);
126
+ const argsLine = firstNonEmptyLine(tool.argsText);
127
+ if (outputLine) {
128
+ lines.push(outputLine);
129
+ } else if (tool.status === "awaiting_approval") {
130
+ lines.push("Waiting for approval...");
131
+ } else if (tool.status === "running") {
132
+ lines.push("Waiting for tool output...");
133
+ }
134
+ if (argsLine) {
135
+ lines.push(`Args: ${argsLine}`);
136
+ }
137
+ return lines.join("\n");
138
+ }
139
+ export function toolDetailText(tool) {
140
+ if (tool.fileChanges.length > 0) {
141
+ const fileChangeDetails = tool.fileChanges.flatMap(change => [`${change.kind.toUpperCase()}: ${toolFileChangeLocation(change)}`, change.summary, change.kind === "edit" && formatToolDiffStats(change.diffStats) ? `Stats: ${formatToolDiffStats(change.diffStats)}` : undefined, change.diffText ? "Diff:" : undefined, change.diffText, !change.diffText && change.previewText ? "Preview:" : undefined, !change.diffText ? change.previewText : undefined, ""]);
142
+ return [`Tool: ${tool.toolName}`, `Status: ${toolStatusLabel(tool.status)}`, `Call ID: ${tool.toolCallId}`, "", "File Changes:", ...fileChangeDetails].filter(Boolean).join("\n");
143
+ }
144
+ return [`Tool: ${tool.toolName}`, `Status: ${toolStatusLabel(tool.status)}`, `Call ID: ${tool.toolCallId}`, "", "Arguments:", tool.argsText || "No arguments", "", "Output:", tool.outputText || (tool.status === "awaiting_approval" ? "Waiting for user approval before execution." : tool.status === "running" ? "Waiting for tool output..." : "No tool output.")].join("\n");
145
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["extractToolFileChanges","formatToolDiffDeltaStats","formatToolDiffStats","toolFileChangeLocation","normalizeDisplayText","value","replace","trim","formatUnknownValue","JSON","stringify","String","extractContentBlocks","map","block","type","text","thinking","filter","Boolean","join","extractContentValue","Array","isArray","content","extracted","firstNonEmptyLine","split","line","find","formatToolArgs","args","formatToolOutput","result","createToolMessageState","toolCallId","toolName","status","argsText","outputText","fileChanges","undefined","rawArgs","updateToolMessageState","tool","update","nextRawArgs","nextRawOutput","output","rawOutput","nextArgsText","nextOutputText","nextFileChanges","change","index","previousChange","kind","path","firstChangedLine","diffText","diffLines","diffStats","previewText","length","toolStatusLabel","toolStatusTone","toolCardPreview","firstFileChange","heading","lines","outputLine","argsLine","push","toolDetailText","fileChangeDetails","flatMap","toUpperCase","summary"],"sources":["tool-messages.ts"],"sourcesContent":["import {\n\textractToolFileChanges,\n\tformatToolDiffDeltaStats,\n\tformatToolDiffStats,\n\ttoolFileChangeLocation,\n\ttype ToolFileChange,\n} from \"./tool-file-changes.js\";\n\nexport type ToolMessageStatus = \"awaiting_approval\" | \"running\" | \"completed\" | \"failed\";\n\nexport interface ToolMessageState {\n\ttoolCallId: string;\n\ttoolName: string;\n\tstatus: ToolMessageStatus;\n\targsText: string;\n\toutputText: string;\n\tfileChanges: ToolFileChange[];\n\trawArgs?: unknown;\n\trawOutput?: unknown;\n}\n\ntype ContentBlock = {\n\ttype?: string;\n\ttext?: string;\n\tthinking?: string;\n\tmimeType?: string;\n\tdata?: string;\n\t[key: string]: unknown;\n};\n\nfunction normalizeDisplayText(value: string): string {\n\treturn value.replace(/\\r/g, \"\").trim();\n}\n\nfunction formatUnknownValue(value: unknown): string {\n\tif (typeof value === \"string\") {\n\t\treturn normalizeDisplayText(value);\n\t}\n\tif (value == null) {\n\t\treturn \"\";\n\t}\n\ttry {\n\t\treturn normalizeDisplayText(JSON.stringify(value, null, 2));\n\t} catch {\n\t\treturn normalizeDisplayText(String(value));\n\t}\n}\n\nfunction extractContentBlocks(value: ContentBlock[]): string {\n\treturn value\n\t\t.map((block) => {\n\t\t\tif (block.type === \"text\" && typeof block.text === \"string\") {\n\t\t\t\treturn block.text;\n\t\t\t}\n\t\t\tif (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n\t\t\t\treturn block.thinking;\n\t\t\t}\n\t\t\tif (block.type === \"image\") {\n\t\t\t\treturn \"[image]\";\n\t\t\t}\n\t\t\tif (block.type === \"audio\") {\n\t\t\t\treturn \"[audio]\";\n\t\t\t}\n\t\t\treturn \"\";\n\t\t})\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\\n\")\n\t\t.trim();\n}\n\nfunction extractContentValue(value: unknown): string {\n\tif (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"content\" in value &&\n\t\tArray.isArray((value as { content?: unknown }).content)\n\t) {\n\t\tconst extracted = extractContentBlocks((value as { content: ContentBlock[] }).content);\n\t\tif (extracted) {\n\t\t\treturn extracted;\n\t\t}\n\t}\n\treturn formatUnknownValue(value);\n}\n\nfunction firstNonEmptyLine(value: string): string | undefined {\n\treturn value\n\t\t.split(\"\\n\")\n\t\t.map((line) => line.trim())\n\t\t.find(Boolean);\n}\n\nexport function formatToolArgs(args: unknown): string {\n\treturn extractContentValue(args) || \"No arguments\";\n}\n\nexport function formatToolOutput(result: unknown): string {\n\treturn extractContentValue(result);\n}\n\nexport function createToolMessageState(toolCallId: string, toolName: string, args: unknown): ToolMessageState {\n\treturn {\n\t\ttoolCallId,\n\t\ttoolName,\n\t\tstatus: \"running\",\n\t\targsText: formatToolArgs(args),\n\t\toutputText: \"\",\n\t\tfileChanges: extractToolFileChanges(toolName, args, undefined),\n\t\trawArgs: args,\n\t};\n}\n\nexport function updateToolMessageState(\n\ttool: ToolMessageState,\n\tupdate: {\n\t\tstatus?: ToolMessageStatus;\n\t\targs?: unknown;\n\t\toutput?: unknown;\n\t},\n): ToolMessageState {\n\tconst nextRawArgs = update.args === undefined ? tool.rawArgs : update.args;\n\tconst nextRawOutput = update.output === undefined ? tool.rawOutput : update.output;\n\tconst nextArgsText = nextRawArgs === undefined ? tool.argsText : formatToolArgs(nextRawArgs);\n\tconst nextOutputText = nextRawOutput === undefined ? tool.outputText : formatToolOutput(nextRawOutput);\n\tconst nextFileChanges = extractToolFileChanges(tool.toolName, nextRawArgs, nextRawOutput).map((change, index) => {\n\t\tconst previousChange = tool.fileChanges[index];\n\t\tif (!previousChange || previousChange.kind !== change.kind || previousChange.path !== change.path) {\n\t\t\treturn change;\n\t\t}\n\n\t\treturn {\n\t\t\t...change,\n\t\t\tfirstChangedLine: change.firstChangedLine ?? previousChange.firstChangedLine,\n\t\t\tdiffText: change.diffText ?? previousChange.diffText,\n\t\t\tdiffLines: change.diffLines ?? previousChange.diffLines,\n\t\t\tdiffStats: change.diffStats ?? previousChange.diffStats,\n\t\t\tpreviewText: change.previewText ?? previousChange.previewText,\n\t\t};\n\t});\n\n\treturn {\n\t\t...tool,\n\t\tstatus: update.status ?? tool.status,\n\t\targsText: nextArgsText || tool.argsText,\n\t\toutputText: nextOutputText || tool.outputText,\n\t\tfileChanges: nextFileChanges.length > 0 ? nextFileChanges : tool.fileChanges,\n\t\trawArgs: nextRawArgs,\n\t\trawOutput: nextRawOutput,\n\t};\n}\n\nexport function toolStatusLabel(status: ToolMessageStatus): string {\n\tswitch (status) {\n\t\tcase \"awaiting_approval\":\n\t\t\treturn \"Needs Approval\";\n\t\tcase \"running\":\n\t\t\treturn \"Running\";\n\t\tcase \"completed\":\n\t\t\treturn \"Done\";\n\t\tcase \"failed\":\n\t\t\treturn \"Failed\";\n\t}\n}\n\nexport function toolStatusTone(status: ToolMessageStatus): \"accent\" | \"success\" | \"danger\" | \"warning\" {\n\tswitch (status) {\n\t\tcase \"awaiting_approval\":\n\t\t\treturn \"warning\";\n\t\tcase \"running\":\n\t\t\treturn \"accent\";\n\t\tcase \"completed\":\n\t\t\treturn \"success\";\n\t\tcase \"failed\":\n\t\t\treturn \"danger\";\n\t}\n}\n\nexport function toolCardPreview(tool: ToolMessageState): string {\n\tconst firstFileChange = tool.fileChanges[0];\n\tif (firstFileChange && tool.status === \"completed\") {\n\t\tconst heading = `${tool.toolName} ${toolFileChangeLocation(firstFileChange)}`;\n\t\tconst diffStats = formatToolDiffDeltaStats(firstFileChange.diffStats);\n\t\treturn [heading, diffStats].filter(Boolean).join(\"\\n\");\n\t}\n\n\tconst lines: string[] = [`${toolStatusLabel(tool.status)}: ${tool.toolName}`];\n\tconst outputLine = firstNonEmptyLine(tool.outputText);\n\tconst argsLine = firstNonEmptyLine(tool.argsText);\n\n\tif (outputLine) {\n\t\tlines.push(outputLine);\n\t} else if (tool.status === \"awaiting_approval\") {\n\t\tlines.push(\"Waiting for approval...\");\n\t} else if (tool.status === \"running\") {\n\t\tlines.push(\"Waiting for tool output...\");\n\t}\n\n\tif (argsLine) {\n\t\tlines.push(`Args: ${argsLine}`);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function toolDetailText(tool: ToolMessageState): string {\n\tif (tool.fileChanges.length > 0) {\n\t\tconst fileChangeDetails = tool.fileChanges.flatMap((change) => [\n\t\t\t`${change.kind.toUpperCase()}: ${toolFileChangeLocation(change)}`,\n\t\t\tchange.summary,\n\t\t\tchange.kind === \"edit\" && formatToolDiffStats(change.diffStats)\n\t\t\t\t? `Stats: ${formatToolDiffStats(change.diffStats)}`\n\t\t\t\t: undefined,\n\t\t\tchange.diffText ? \"Diff:\" : undefined,\n\t\t\tchange.diffText,\n\t\t\t!change.diffText && change.previewText ? \"Preview:\" : undefined,\n\t\t\t!change.diffText ? change.previewText : undefined,\n\t\t\t\"\",\n\t\t]);\n\n\t\treturn [\n\t\t\t`Tool: ${tool.toolName}`,\n\t\t\t`Status: ${toolStatusLabel(tool.status)}`,\n\t\t\t`Call ID: ${tool.toolCallId}`,\n\t\t\t\"\",\n\t\t\t\"File Changes:\",\n\t\t\t...fileChangeDetails,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\");\n\t}\n\n\treturn [\n\t\t`Tool: ${tool.toolName}`,\n\t\t`Status: ${toolStatusLabel(tool.status)}`,\n\t\t`Call ID: ${tool.toolCallId}`,\n\t\t\"\",\n\t\t\"Arguments:\",\n\t\ttool.argsText || \"No arguments\",\n\t\t\"\",\n\t\t\"Output:\",\n\t\ttool.outputText ||\n\t\t\t(tool.status === \"awaiting_approval\"\n\t\t\t\t? \"Waiting for user approval before execution.\"\n\t\t\t\t: tool.status === \"running\"\n\t\t\t\t\t? \"Waiting for tool output...\"\n\t\t\t\t\t: \"No tool output.\"),\n\t].join(\"\\n\");\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,372 @@
1
+ import { memo as _$memo } from "@opentui/solid";
2
+ import { effect as _$effect } from "@opentui/solid";
3
+ import { createComponent as _$createComponent } from "@opentui/solid";
4
+ import { use as _$use } from "@opentui/solid";
5
+ import { insert as _$insert } from "@opentui/solid";
6
+ import { createTextNode as _$createTextNode } from "@opentui/solid";
7
+ import { insertNode as _$insertNode } from "@opentui/solid";
8
+ import { setProp as _$setProp } from "@opentui/solid";
9
+ import { createElement as _$createElement } from "@opentui/solid";
10
+ import { For, Show } from "solid-js";
11
+ import { truncate } from "./helpers.js";
12
+ import { wepscliShellTheme as theme } from "./theme.js";
13
+ import { toolFileChangeLocation } from "./tool-file-changes.js";
14
+ import { toolStatusLabel, toolStatusTone } from "./tool-messages.js";
15
+ import { ToolMessageDetail } from "./tool-message-detail.js";
16
+ const COLLAPSIBLE_MESSAGE_LINES = 3;
17
+ function isMessageOverflowing(message) {
18
+ return message.content.split("\n").length > COLLAPSIBLE_MESSAGE_LINES;
19
+ }
20
+ function isInlineSummaryMessage(message) {
21
+ return message.kind === "tool" || message.kind === "reasoning";
22
+ }
23
+ function getVisibleMessageContent(message) {
24
+ if (!message.collapsible || message.expanded || !isMessageOverflowing(message)) {
25
+ return message.content;
26
+ }
27
+ return [...message.content.split("\n").slice(0, COLLAPSIBLE_MESSAGE_LINES), "..."].join("\n");
28
+ }
29
+ function transcriptBorderColor(message) {
30
+ if (message.kind === "tool") {
31
+ return theme.border;
32
+ }
33
+ if (message.kind === "reasoning") {
34
+ return theme.muted;
35
+ }
36
+ return message.role === "user" ? theme.accent : message.role === "assistant" ? theme.success : theme.muted;
37
+ }
38
+ function transcriptRoleColor(message) {
39
+ if (message.kind === "tool") {
40
+ return message.tool ? toneColor(toolStatusTone(message.tool.status)) : theme.accent;
41
+ }
42
+ if (message.kind === "reasoning") {
43
+ return theme.warning;
44
+ }
45
+ return message.role === "user" ? theme.accent : message.role === "assistant" ? theme.success : theme.muted;
46
+ }
47
+ function toneColor(tone) {
48
+ switch (tone) {
49
+ case "accent":
50
+ return theme.accent;
51
+ case "success":
52
+ return theme.success;
53
+ case "warning":
54
+ return theme.warning;
55
+ case "danger":
56
+ return theme.danger;
57
+ case "muted":
58
+ return theme.muted;
59
+ }
60
+ }
61
+ function firstNonEmptyLine(value) {
62
+ return value.split("\n").map(line => line.trim()).find(Boolean);
63
+ }
64
+ function inlinePrefix(message) {
65
+ if (message.kind === "tool" && message.tool) {
66
+ return `${toolStatusLabel(message.tool.status)} ${message.tool.toolName}`;
67
+ }
68
+ if (message.kind === "reasoning") {
69
+ return "Thought";
70
+ }
71
+ return message.role;
72
+ }
73
+ function inlineSnippet(message) {
74
+ if (message.kind === "tool" && message.tool) {
75
+ return firstNonEmptyLine(message.tool.outputText) ?? firstNonEmptyLine(message.tool.argsText) ?? (message.tool.status === "awaiting_approval" ? "Waiting for approval..." : "Waiting for tool output...");
76
+ }
77
+ return firstNonEmptyLine(message.content) ?? (message.kind === "reasoning" ? "Thinking..." : message.content);
78
+ }
79
+ function inlineSummary(message, width) {
80
+ const reserved = Math.max(16, Math.floor(width * 0.2));
81
+ const maxLength = Math.max(24, width - reserved);
82
+ return truncate(`${inlinePrefix(message)} | ${inlineSnippet(message)}`, maxLength);
83
+ }
84
+ function toolInlineLabel(message, width) {
85
+ const tool = message.tool;
86
+ if (!tool) {
87
+ return inlineSummary(message, width);
88
+ }
89
+ const firstFileChange = tool.fileChanges[0];
90
+ if (!firstFileChange) {
91
+ return inlineSummary(message, width);
92
+ }
93
+ const reserved = Math.max(16, Math.floor(width * 0.22));
94
+ const maxLength = Math.max(24, width - reserved);
95
+ return truncate(`${tool.toolName} ${toolFileChangeLocation(firstFileChange)}`, maxLength);
96
+ }
97
+ function toolInlineDiffStats(message) {
98
+ const tool = message.tool;
99
+ const firstFileChange = tool?.fileChanges[0];
100
+ if (!tool || !firstFileChange) {
101
+ return undefined;
102
+ }
103
+ const stats = firstFileChange.diffStats;
104
+ return {
105
+ added: stats?.added ? `+${stats.added}` : undefined,
106
+ removed: stats?.removed ? `-${stats.removed}` : undefined
107
+ };
108
+ }
109
+ function useStructuredToolSummary(message) {
110
+ return message.kind === "tool" && message.tool?.status === "completed" && !!message.tool.fileChanges[0];
111
+ }
112
+ export function TranscriptPanel(props) {
113
+ return (() => {
114
+ var _el$ = _$createElement("box"),
115
+ _el$2 = _$createElement("box"),
116
+ _el$3 = _$createElement("text"),
117
+ _el$5 = _$createElement("text"),
118
+ _el$6 = _$createElement("scrollbox"),
119
+ _el$7 = _$createElement("box");
120
+ _$insertNode(_el$, _el$2);
121
+ _$insertNode(_el$, _el$6);
122
+ _$setProp(_el$, "flexGrow", 1);
123
+ _$setProp(_el$, "minHeight", 0);
124
+ _$setProp(_el$, "border", ["top", "right", "bottom", "left"]);
125
+ _$setProp(_el$, "padding", 1);
126
+ _$setProp(_el$, "flexDirection", "column");
127
+ _$setProp(_el$, "gap", 1);
128
+ _$insertNode(_el$2, _el$3);
129
+ _$insertNode(_el$2, _el$5);
130
+ _$setProp(_el$2, "flexDirection", "row");
131
+ _$setProp(_el$2, "justifyContent", "space-between");
132
+ _$setProp(_el$2, "gap", 1);
133
+ _$insertNode(_el$3, _$createTextNode(`Conversation`));
134
+ _$insert(_el$5, () => truncate(props.activeModelLabel, 32));
135
+ _$insertNode(_el$6, _el$7);
136
+ var _ref$ = props.scrollRef;
137
+ typeof _ref$ === "function" ? _$use(_ref$, _el$6) : props.scrollRef = _el$6;
138
+ _$setProp(_el$6, "flexGrow", 1);
139
+ _$setProp(_el$6, "minHeight", 0);
140
+ _$setProp(_el$7, "flexDirection", "column");
141
+ _$setProp(_el$7, "gap", 1);
142
+ _$insert(_el$7, _$createComponent(Show, {
143
+ get when() {
144
+ return props.messages.length > 0;
145
+ },
146
+ get fallback() {
147
+ return (() => {
148
+ var _el$8 = _$createElement("box"),
149
+ _el$9 = _$createElement("text"),
150
+ _el$1 = _$createElement("text"),
151
+ _el$11 = _$createElement("text");
152
+ _$insertNode(_el$8, _el$9);
153
+ _$insertNode(_el$8, _el$1);
154
+ _$insertNode(_el$8, _el$11);
155
+ _$setProp(_el$8, "border", ["top", "right", "bottom", "left"]);
156
+ _$setProp(_el$8, "padding", 1);
157
+ _$setProp(_el$8, "flexDirection", "column");
158
+ _$setProp(_el$8, "gap", 1);
159
+ _$insertNode(_el$9, _$createTextNode(`Ready for a task`));
160
+ _$insertNode(_el$1, _$createTextNode(`Start with a prompt. This minimal shell keeps the layout compact while we bring interaction back.`));
161
+ _$setProp(_el$1, "wrapMode", "word");
162
+ _$insertNode(_el$11, _$createTextNode(`Enter a prompt below, or type / for commands.`));
163
+ _$setProp(_el$11, "wrapMode", "word");
164
+ _$effect(_p$ => {
165
+ var _v$5 = theme.panelAlt,
166
+ _v$6 = theme.border,
167
+ _v$7 = theme.accentStrong,
168
+ _v$8 = theme.text,
169
+ _v$9 = theme.muted;
170
+ _v$5 !== _p$.e && (_p$.e = _$setProp(_el$8, "backgroundColor", _v$5, _p$.e));
171
+ _v$6 !== _p$.t && (_p$.t = _$setProp(_el$8, "borderColor", _v$6, _p$.t));
172
+ _v$7 !== _p$.a && (_p$.a = _$setProp(_el$9, "fg", _v$7, _p$.a));
173
+ _v$8 !== _p$.o && (_p$.o = _$setProp(_el$1, "fg", _v$8, _p$.o));
174
+ _v$9 !== _p$.i && (_p$.i = _$setProp(_el$11, "fg", _v$9, _p$.i));
175
+ return _p$;
176
+ }, {
177
+ e: undefined,
178
+ t: undefined,
179
+ a: undefined,
180
+ o: undefined,
181
+ i: undefined
182
+ });
183
+ return _el$8;
184
+ })();
185
+ },
186
+ get children() {
187
+ return _$createComponent(For, {
188
+ get each() {
189
+ return props.messages;
190
+ },
191
+ children: message => isInlineSummaryMessage(message) ? (() => {
192
+ var _el$13 = _$createElement("box"),
193
+ _el$14 = _$createElement("box"),
194
+ _el$15 = _$createElement("text"),
195
+ _el$16 = _$createTextNode(` `);
196
+ _$insertNode(_el$13, _el$14);
197
+ _$setProp(_el$13, "border", ["left"]);
198
+ _$setProp(_el$13, "paddingLeft", 1);
199
+ _$setProp(_el$13, "paddingRight", 1);
200
+ _$setProp(_el$13, "paddingTop", 0);
201
+ _$setProp(_el$13, "paddingBottom", 0);
202
+ _$setProp(_el$13, "flexDirection", "column");
203
+ _$setProp(_el$13, "onMouseUp", () => props.onToggleMessage(message.id));
204
+ _$insertNode(_el$14, _el$15);
205
+ _$setProp(_el$14, "flexDirection", "row");
206
+ _$setProp(_el$14, "justifyContent", "space-between");
207
+ _$setProp(_el$14, "gap", 1);
208
+ _$insert(_el$14, (() => {
209
+ var _c$ = _$memo(() => !!useStructuredToolSummary(message));
210
+ return () => _c$() ? (() => {
211
+ var _el$18 = _$createElement("box"),
212
+ _el$19 = _$createElement("text");
213
+ _$insertNode(_el$18, _el$19);
214
+ _$setProp(_el$18, "flexDirection", "row");
215
+ _$setProp(_el$18, "gap", 1);
216
+ _$setProp(_el$18, "flexGrow", 1);
217
+ _$setProp(_el$18, "minWidth", 0);
218
+ _$insert(_el$19, () => toolInlineLabel(message, props.width));
219
+ _$insert(_el$18, _$createComponent(Show, {
220
+ get when() {
221
+ return toolInlineDiffStats(message)?.added;
222
+ },
223
+ get children() {
224
+ var _el$20 = _$createElement("text");
225
+ _$insert(_el$20, () => toolInlineDiffStats(message).added);
226
+ _$effect(_$p => _$setProp(_el$20, "fg", theme.success, _$p));
227
+ return _el$20;
228
+ }
229
+ }), null);
230
+ _$insert(_el$18, _$createComponent(Show, {
231
+ get when() {
232
+ return toolInlineDiffStats(message)?.removed;
233
+ },
234
+ get children() {
235
+ var _el$21 = _$createElement("text");
236
+ _$insert(_el$21, () => toolInlineDiffStats(message).removed);
237
+ _$effect(_$p => _$setProp(_el$21, "fg", theme.danger, _$p));
238
+ return _el$21;
239
+ }
240
+ }), null);
241
+ _$effect(_$p => _$setProp(_el$19, "fg", transcriptRoleColor(message), _$p));
242
+ return _el$18;
243
+ })() : (() => {
244
+ var _el$22 = _$createElement("text");
245
+ _$insert(_el$22, () => inlineSummary(message, props.width));
246
+ _$effect(_$p => _$setProp(_el$22, "fg", transcriptRoleColor(message), _$p));
247
+ return _el$22;
248
+ })();
249
+ })(), _el$15);
250
+ _$insertNode(_el$15, _el$16);
251
+ _$insert(_el$15, () => message.expanded ? "hide" : "more", _el$16);
252
+ _$insert(_el$15, () => truncate(message.time, 8), null);
253
+ _$insert(_el$13, _$createComponent(Show, {
254
+ get when() {
255
+ return message.expanded;
256
+ },
257
+ get children() {
258
+ var _el$17 = _$createElement("box");
259
+ _$setProp(_el$17, "paddingLeft", 1);
260
+ _$setProp(_el$17, "paddingBottom", 1);
261
+ _$insert(_el$17, (() => {
262
+ var _c$2 = _$memo(() => !!(message.kind === "tool" && message.tool));
263
+ return () => _c$2() ? _$createComponent(ToolMessageDetail, {
264
+ get tool() {
265
+ return message.tool;
266
+ }
267
+ }) : (() => {
268
+ var _el$23 = _$createElement("text");
269
+ _$setProp(_el$23, "wrapMode", "word");
270
+ _$insert(_el$23, () => message.content);
271
+ _$effect(_$p => _$setProp(_el$23, "fg", theme.text, _$p));
272
+ return _el$23;
273
+ })();
274
+ })());
275
+ return _el$17;
276
+ }
277
+ }), null);
278
+ _$effect(_p$ => {
279
+ var _v$0 = theme.panelMuted,
280
+ _v$1 = transcriptBorderColor(message),
281
+ _v$10 = message.expanded ? 1 : 0,
282
+ _v$11 = theme.muted;
283
+ _v$0 !== _p$.e && (_p$.e = _$setProp(_el$13, "backgroundColor", _v$0, _p$.e));
284
+ _v$1 !== _p$.t && (_p$.t = _$setProp(_el$13, "borderColor", _v$1, _p$.t));
285
+ _v$10 !== _p$.a && (_p$.a = _$setProp(_el$13, "gap", _v$10, _p$.a));
286
+ _v$11 !== _p$.o && (_p$.o = _$setProp(_el$15, "fg", _v$11, _p$.o));
287
+ return _p$;
288
+ }, {
289
+ e: undefined,
290
+ t: undefined,
291
+ a: undefined,
292
+ o: undefined
293
+ });
294
+ return _el$13;
295
+ })() : (() => {
296
+ var _el$24 = _$createElement("box"),
297
+ _el$25 = _$createElement("box"),
298
+ _el$26 = _$createElement("text"),
299
+ _el$27 = _$createElement("text"),
300
+ _el$28 = _$createElement("text");
301
+ _$insertNode(_el$24, _el$25);
302
+ _$insertNode(_el$24, _el$28);
303
+ _$setProp(_el$24, "border", ["top", "right", "bottom", "left"]);
304
+ _$setProp(_el$24, "padding", 1);
305
+ _$setProp(_el$24, "flexDirection", "column");
306
+ _$setProp(_el$24, "gap", 1);
307
+ _$insertNode(_el$25, _el$26);
308
+ _$insertNode(_el$25, _el$27);
309
+ _$setProp(_el$25, "flexDirection", "row");
310
+ _$setProp(_el$25, "justifyContent", "space-between");
311
+ _$setProp(_el$25, "gap", 1);
312
+ _$insert(_el$26, () => message.role.toUpperCase());
313
+ _$insert(_el$27, () => truncate(message.time, 12));
314
+ _$setProp(_el$28, "wrapMode", "word");
315
+ _$insert(_el$28, () => getVisibleMessageContent(message));
316
+ _$insert(_el$24, _$createComponent(Show, {
317
+ get when() {
318
+ return _$memo(() => !!message.collapsible)() && isMessageOverflowing(message);
319
+ },
320
+ get children() {
321
+ var _el$29 = _$createElement("text");
322
+ _$insert(_el$29, () => message.expanded ? "Click to collapse" : "Click to expand");
323
+ _$effect(_$p => _$setProp(_el$29, "fg", theme.muted, _$p));
324
+ return _el$29;
325
+ }
326
+ }), null);
327
+ _$effect(_p$ => {
328
+ var _v$12 = theme.panelAlt,
329
+ _v$13 = transcriptBorderColor(message),
330
+ _v$14 = message.collapsible && isMessageOverflowing(message) ? () => props.onToggleMessage(message.id) : undefined,
331
+ _v$15 = transcriptRoleColor(message),
332
+ _v$16 = theme.muted,
333
+ _v$17 = theme.text;
334
+ _v$12 !== _p$.e && (_p$.e = _$setProp(_el$24, "backgroundColor", _v$12, _p$.e));
335
+ _v$13 !== _p$.t && (_p$.t = _$setProp(_el$24, "borderColor", _v$13, _p$.t));
336
+ _v$14 !== _p$.a && (_p$.a = _$setProp(_el$24, "onMouseUp", _v$14, _p$.a));
337
+ _v$15 !== _p$.o && (_p$.o = _$setProp(_el$26, "fg", _v$15, _p$.o));
338
+ _v$16 !== _p$.i && (_p$.i = _$setProp(_el$27, "fg", _v$16, _p$.i));
339
+ _v$17 !== _p$.n && (_p$.n = _$setProp(_el$28, "fg", _v$17, _p$.n));
340
+ return _p$;
341
+ }, {
342
+ e: undefined,
343
+ t: undefined,
344
+ a: undefined,
345
+ o: undefined,
346
+ i: undefined,
347
+ n: undefined
348
+ });
349
+ return _el$24;
350
+ })()
351
+ });
352
+ }
353
+ }));
354
+ _$effect(_p$ => {
355
+ var _v$ = theme.panel,
356
+ _v$2 = theme.border,
357
+ _v$3 = theme.accent,
358
+ _v$4 = theme.muted;
359
+ _v$ !== _p$.e && (_p$.e = _$setProp(_el$, "backgroundColor", _v$, _p$.e));
360
+ _v$2 !== _p$.t && (_p$.t = _$setProp(_el$, "borderColor", _v$2, _p$.t));
361
+ _v$3 !== _p$.a && (_p$.a = _$setProp(_el$3, "fg", _v$3, _p$.a));
362
+ _v$4 !== _p$.o && (_p$.o = _$setProp(_el$5, "fg", _v$4, _p$.o));
363
+ return _p$;
364
+ }, {
365
+ e: undefined,
366
+ t: undefined,
367
+ a: undefined,
368
+ o: undefined
369
+ });
370
+ return _el$;
371
+ })();
372
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["For","Show","truncate","wepscliShellTheme","theme","toolFileChangeLocation","toolStatusLabel","toolStatusTone","ToolMessageDetail","COLLAPSIBLE_MESSAGE_LINES","isMessageOverflowing","message","content","split","length","isInlineSummaryMessage","kind","getVisibleMessageContent","collapsible","expanded","slice","join","transcriptBorderColor","border","muted","role","accent","success","transcriptRoleColor","tool","toneColor","status","warning","tone","danger","firstNonEmptyLine","value","map","line","trim","find","Boolean","inlinePrefix","toolName","inlineSnippet","outputText","argsText","inlineSummary","width","reserved","Math","max","floor","maxLength","toolInlineLabel","firstFileChange","fileChanges","toolInlineDiffStats","undefined","stats","diffStats","added","removed","useStructuredToolSummary","TranscriptPanel","props","_el$","_$createElement","_el$2","_el$3","_el$5","_el$6","_el$7","_$insertNode","_$setProp","_$createTextNode","_$insert","activeModelLabel","_ref$","scrollRef","_$use","_$createComponent","when","messages","fallback","_el$8","_el$9","_el$1","_el$11","_$effect","_p$","_v$5","panelAlt","_v$6","_v$7","accentStrong","_v$8","text","_v$9","e","t","a","o","i","children","each","_el$13","_el$14","_el$15","_el$16","onToggleMessage","id","_c$","_$memo","_el$18","_el$19","_el$20","_$p","_el$21","_el$22","time","_el$17","_c$2","_el$23","_v$0","panelMuted","_v$1","_v$10","_v$11","_el$24","_el$25","_el$26","_el$27","_el$28","toUpperCase","_el$29","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","n","_v$","panel","_v$2","_v$3","_v$4"],"sources":["transcript-panel.tsx"],"sourcesContent":["import { For, Show } from \"solid-js\";\nimport type { ChatMessage } from \"./chat-components.js\";\nimport { truncate } from \"./helpers.js\";\nimport { wepscliShellTheme as theme } from \"./theme.js\";\nimport { toolFileChangeLocation } from \"./tool-file-changes.js\";\nimport { toolStatusLabel, toolStatusTone } from \"./tool-messages.js\";\nimport { ToolMessageDetail } from \"./tool-message-detail.js\";\n\r\nconst COLLAPSIBLE_MESSAGE_LINES = 3;\r\n\r\nfunction isMessageOverflowing(message: ChatMessage): boolean {\r\n\treturn message.content.split(\"\\n\").length > COLLAPSIBLE_MESSAGE_LINES;\r\n}\r\n\r\nfunction isInlineSummaryMessage(message: ChatMessage): boolean {\r\n\treturn message.kind === \"tool\" || message.kind === \"reasoning\";\r\n}\r\n\r\nfunction getVisibleMessageContent(message: ChatMessage): string {\r\n\tif (!message.collapsible || message.expanded || !isMessageOverflowing(message)) {\r\n\t\treturn message.content;\r\n\t}\r\n\treturn [...message.content.split(\"\\n\").slice(0, COLLAPSIBLE_MESSAGE_LINES), \"...\"].join(\"\\n\");\r\n}\r\n\r\nfunction transcriptBorderColor(message: ChatMessage): string {\r\n\tif (message.kind === \"tool\") {\r\n\t\treturn theme.border;\r\n\t}\r\n\tif (message.kind === \"reasoning\") {\r\n\t\treturn theme.muted;\r\n\t}\r\n\treturn message.role === \"user\" ? theme.accent : message.role === \"assistant\" ? theme.success : theme.muted;\r\n}\r\n\r\nfunction transcriptRoleColor(message: ChatMessage): string {\r\n\tif (message.kind === \"tool\") {\r\n\t\treturn message.tool ? toneColor(toolStatusTone(message.tool.status)) : theme.accent;\r\n\t}\r\n\tif (message.kind === \"reasoning\") {\r\n\t\treturn theme.warning;\r\n\t}\r\n\treturn message.role === \"user\" ? theme.accent : message.role === \"assistant\" ? theme.success : theme.muted;\r\n}\r\n\r\nfunction toneColor(tone: \"accent\" | \"success\" | \"warning\" | \"danger\" | \"muted\"): string {\r\n\tswitch (tone) {\r\n\t\tcase \"accent\":\r\n\t\t\treturn theme.accent;\r\n\t\tcase \"success\":\r\n\t\t\treturn theme.success;\r\n\t\tcase \"warning\":\r\n\t\t\treturn theme.warning;\r\n\t\tcase \"danger\":\r\n\t\t\treturn theme.danger;\r\n\t\tcase \"muted\":\r\n\t\t\treturn theme.muted;\r\n\t}\r\n}\r\n\r\nfunction firstNonEmptyLine(value: string): string | undefined {\r\n\treturn value\r\n\t\t.split(\"\\n\")\r\n\t\t.map((line) => line.trim())\r\n\t\t.find(Boolean);\r\n}\r\n\r\nfunction inlinePrefix(message: ChatMessage): string {\r\n\tif (message.kind === \"tool\" && message.tool) {\r\n\t\treturn `${toolStatusLabel(message.tool.status)} ${message.tool.toolName}`;\r\n\t}\r\n\tif (message.kind === \"reasoning\") {\r\n\t\treturn \"Thought\";\r\n\t}\r\n\treturn message.role;\r\n}\r\n\r\nfunction inlineSnippet(message: ChatMessage): string {\r\n\tif (message.kind === \"tool\" && message.tool) {\r\n\t\treturn (\r\n\t\t\tfirstNonEmptyLine(message.tool.outputText) ??\r\n\t\t\tfirstNonEmptyLine(message.tool.argsText) ??\r\n\t\t\t(message.tool.status === \"awaiting_approval\" ? \"Waiting for approval...\" : \"Waiting for tool output...\")\r\n\t\t);\r\n\t}\r\n\treturn firstNonEmptyLine(message.content) ?? (message.kind === \"reasoning\" ? \"Thinking...\" : message.content);\r\n}\r\n\r\nfunction inlineSummary(message: ChatMessage, width: number): string {\n\tconst reserved = Math.max(16, Math.floor(width * 0.2));\n\tconst maxLength = Math.max(24, width - reserved);\n\treturn truncate(`${inlinePrefix(message)} | ${inlineSnippet(message)}`, maxLength);\n}\n\nfunction toolInlineLabel(message: ChatMessage, width: number): string {\n\tconst tool = message.tool;\n\tif (!tool) {\n\t\treturn inlineSummary(message, width);\n\t}\n\n\tconst firstFileChange = tool.fileChanges[0];\n\tif (!firstFileChange) {\n\t\treturn inlineSummary(message, width);\n\t}\n\n\tconst reserved = Math.max(16, Math.floor(width * 0.22));\n\tconst maxLength = Math.max(24, width - reserved);\n\treturn truncate(`${tool.toolName} ${toolFileChangeLocation(firstFileChange)}`, maxLength);\n}\n\nfunction toolInlineDiffStats(message: ChatMessage): { added?: string; removed?: string } | undefined {\n\tconst tool = message.tool;\n\tconst firstFileChange = tool?.fileChanges[0];\n\tif (!tool || !firstFileChange) {\n\t\treturn undefined;\n\t}\n\n\tconst stats = firstFileChange.diffStats;\n\treturn {\n\t\tadded: stats?.added ? `+${stats.added}` : undefined,\n\t\tremoved: stats?.removed ? `-${stats.removed}` : undefined,\n\t};\n}\n\nfunction useStructuredToolSummary(message: ChatMessage): boolean {\n\treturn (\n\t\tmessage.kind === \"tool\" &&\n\t\tmessage.tool?.status === \"completed\" &&\n\t\t!!message.tool.fileChanges[0]\n\t);\n}\n\r\nexport function TranscriptPanel(props: {\n\tmessages: ChatMessage[];\r\n\tactiveModelLabel: string;\r\n\twidth: number;\r\n\tscrollRef: (ref: { scrollTo(position: number): void; scrollHeight: number; isDestroyed?: boolean }) => void;\r\n\tonToggleMessage: (messageId: string) => void;\r\n}) {\r\n\treturn (\r\n\t\t<box flexGrow={1} minHeight={0} backgroundColor={theme.panel} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t<box flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t<text fg={theme.accent}>Conversation</text>\r\n\t\t\t\t<text fg={theme.muted}>{truncate(props.activeModelLabel, 32)}</text>\r\n\t\t\t</box>\r\n\t\t\t<scrollbox ref={props.scrollRef} flexGrow={1} minHeight={0}>\r\n\t\t\t\t<box flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t<Show\r\n\t\t\t\t\t\twhen={props.messages.length > 0}\r\n\t\t\t\t\t\tfallback={\r\n\t\t\t\t\t\t\t<box backgroundColor={theme.panelAlt} border={[\"top\", \"right\", \"bottom\", \"left\"]} borderColor={theme.border} padding={1} flexDirection=\"column\" gap={1}>\r\n\t\t\t\t\t\t\t\t<text fg={theme.accentStrong}>Ready for a task</text>\r\n\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">Start with a prompt. This minimal shell keeps the layout compact while we bring interaction back.</text>\r\n\t\t\t\t\t\t\t\t<text fg={theme.muted} wrapMode=\"word\">Enter a prompt below, or type / for commands.</text>\r\n\t\t\t\t\t\t\t</box>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<For each={props.messages}>\r\n\t\t\t\t\t\t\t{(message) =>\r\n\t\t\t\t\t\t\t\tisInlineSummaryMessage(message) ? (\r\n\t\t\t\t\t\t\t\t\t<box\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor={theme.panelMuted}\r\n\t\t\t\t\t\t\t\t\t\tborder={[\"left\"]}\r\n\t\t\t\t\t\t\t\t\t\tborderColor={transcriptBorderColor(message)}\r\n\t\t\t\t\t\t\t\t\t\tpaddingLeft={1}\r\n\t\t\t\t\t\t\t\t\t\tpaddingRight={1}\r\n\t\t\t\t\t\t\t\t\t\tpaddingTop={0}\r\n\t\t\t\t\t\t\t\t\t\tpaddingBottom={0}\r\n\t\t\t\t\t\t\t\t\t\tflexDirection=\"column\"\r\n\t\t\t\t\t\t\t\t\t\tgap={message.expanded ? 1 : 0}\n\t\t\t\t\t\t\t\t\t\tonMouseUp={() => props.onToggleMessage(message.id)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<box flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\n\t\t\t\t\t\t\t\t\t\t\t{useStructuredToolSummary(message) ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<box flexDirection=\"row\" gap={1} flexGrow={1} minWidth={0}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<text fg={transcriptRoleColor(message)}>{toolInlineLabel(message, props.width)}</text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Show when={toolInlineDiffStats(message)?.added}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.success}>{toolInlineDiffStats(message)!.added}</text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Show>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Show when={toolInlineDiffStats(message)?.removed}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.danger}>{toolInlineDiffStats(message)!.removed}</text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Show>\n\t\t\t\t\t\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<text fg={transcriptRoleColor(message)}>{inlineSummary(message, props.width)}</text>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.muted}>{message.expanded ? \"hide\" : \"more\"} {truncate(message.time, 8)}</text>\n\t\t\t\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t\t\t\t\t<Show when={message.expanded}>\n\t\t\t\t\t\t\t\t\t\t\t<box paddingLeft={1} paddingBottom={1}>\n\t\t\t\t\t\t\t\t\t\t\t\t{message.kind === \"tool\" && message.tool ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ToolMessageDetail tool={message.tool} />\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{message.content}</text>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t\t\t\t\t</Show>\n\t\t\t\t\t\t\t\t\t</box>\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t<box\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor={theme.panelAlt}\r\n\t\t\t\t\t\t\t\t\t\tborder={[\"top\", \"right\", \"bottom\", \"left\"]}\r\n\t\t\t\t\t\t\t\t\t\tborderColor={transcriptBorderColor(message)}\r\n\t\t\t\t\t\t\t\t\t\tpadding={1}\r\n\t\t\t\t\t\t\t\t\t\tflexDirection=\"column\"\r\n\t\t\t\t\t\t\t\t\t\tgap={1}\r\n\t\t\t\t\t\t\t\t\t\tonMouseUp={message.collapsible && isMessageOverflowing(message) ? () => props.onToggleMessage(message.id) : undefined}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<box flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t\t\t\t\t\t\t\t<text fg={transcriptRoleColor(message)}>{message.role.toUpperCase()}</text>\r\n\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.muted}>{truncate(message.time, 12)}</text>\r\n\t\t\t\t\t\t\t\t\t\t</box>\r\n\t\t\t\t\t\t\t\t\t\t<text fg={theme.text} wrapMode=\"word\">{getVisibleMessageContent(message)}</text>\r\n\t\t\t\t\t\t\t\t\t\t<Show when={message.collapsible && isMessageOverflowing(message)}>\r\n\t\t\t\t\t\t\t\t\t\t\t<text fg={theme.muted}>{message.expanded ? \"Click to collapse\" : \"Click to expand\"}</text>\r\n\t\t\t\t\t\t\t\t\t\t</Show>\r\n\t\t\t\t\t\t\t\t\t</box>\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</For>\r\n\t\t\t\t\t</Show>\r\n\t\t\t\t</box>\r\n\t\t\t</scrollbox>\r\n\t\t</box>\r\n\t);\r\n}\r\n"],"mappings":"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","ignoreList":[]}