@nanocollective/nanocoder 1.16.2 → 1.16.4

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 (150) hide show
  1. package/README.md +17 -1
  2. package/dist/commands/update.d.ts +6 -0
  3. package/dist/commands/update.d.ts.map +1 -1
  4. package/dist/commands/update.js +129 -3
  5. package/dist/commands/update.js.map +1 -1
  6. package/dist/components/assistant-message.d.ts +1 -4
  7. package/dist/components/assistant-message.d.ts.map +1 -1
  8. package/dist/components/assistant-message.js +1 -199
  9. package/dist/components/assistant-message.js.map +1 -1
  10. package/dist/components/status.d.ts +1 -6
  11. package/dist/components/status.d.ts.map +1 -1
  12. package/dist/components/status.js +3 -2
  13. package/dist/components/status.js.map +1 -1
  14. package/dist/components/user-input.d.ts.map +1 -1
  15. package/dist/components/user-input.js +61 -19
  16. package/dist/components/user-input.js.map +1 -1
  17. package/dist/components/warning-message.d.ts +7 -0
  18. package/dist/components/warning-message.d.ts.map +1 -0
  19. package/dist/components/warning-message.js +12 -0
  20. package/dist/components/warning-message.js.map +1 -0
  21. package/dist/config/index.d.ts.map +1 -1
  22. package/dist/config/index.js +19 -11
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/config/paths.d.ts +1 -0
  25. package/dist/config/paths.d.ts.map +1 -1
  26. package/dist/config/paths.js +48 -2
  27. package/dist/config/paths.js.map +1 -1
  28. package/dist/config/paths.spec.d.ts +2 -0
  29. package/dist/config/paths.spec.d.ts.map +1 -0
  30. package/dist/config/paths.spec.js +114 -0
  31. package/dist/config/paths.spec.js.map +1 -0
  32. package/dist/config/themes.d.ts.map +1 -1
  33. package/dist/config/themes.js +19 -0
  34. package/dist/config/themes.js.map +1 -1
  35. package/dist/hooks/useAppState.d.ts.map +1 -1
  36. package/dist/hooks/useAppState.js +8 -15
  37. package/dist/hooks/useAppState.js.map +1 -1
  38. package/dist/hooks/useInputState.d.ts.map +1 -1
  39. package/dist/hooks/useInputState.js +95 -8
  40. package/dist/hooks/useInputState.js.map +1 -1
  41. package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
  42. package/dist/hooks/useTerminalWidth.js +6 -0
  43. package/dist/hooks/useTerminalWidth.js.map +1 -1
  44. package/dist/markdown-parser/html-entities.d.ts +2 -0
  45. package/dist/markdown-parser/html-entities.d.ts.map +1 -0
  46. package/dist/markdown-parser/html-entities.js +41 -0
  47. package/dist/markdown-parser/html-entities.js.map +1 -0
  48. package/dist/markdown-parser/html-entities.spec.d.ts +2 -0
  49. package/dist/markdown-parser/html-entities.spec.d.ts.map +1 -0
  50. package/dist/markdown-parser/html-entities.spec.js +73 -0
  51. package/dist/markdown-parser/html-entities.spec.js.map +1 -0
  52. package/dist/markdown-parser/index.d.ts +6 -0
  53. package/dist/markdown-parser/index.d.ts.map +1 -0
  54. package/dist/markdown-parser/index.js +97 -0
  55. package/dist/markdown-parser/index.js.map +1 -0
  56. package/dist/markdown-parser/index.spec.d.ts +2 -0
  57. package/dist/markdown-parser/index.spec.d.ts.map +1 -0
  58. package/dist/markdown-parser/index.spec.js +245 -0
  59. package/dist/markdown-parser/index.spec.js.map +1 -0
  60. package/dist/markdown-parser/table-parser.d.ts +3 -0
  61. package/dist/markdown-parser/table-parser.d.ts.map +1 -0
  62. package/dist/markdown-parser/table-parser.js +92 -0
  63. package/dist/markdown-parser/table-parser.js.map +1 -0
  64. package/dist/markdown-parser/table-parser.spec.d.ts +2 -0
  65. package/dist/markdown-parser/table-parser.spec.d.ts.map +1 -0
  66. package/dist/markdown-parser/table-parser.spec.js +120 -0
  67. package/dist/markdown-parser/table-parser.spec.js.map +1 -0
  68. package/dist/markdown-parser/utils.d.ts +2 -0
  69. package/dist/markdown-parser/utils.d.ts.map +1 -0
  70. package/dist/markdown-parser/utils.js +14 -0
  71. package/dist/markdown-parser/utils.js.map +1 -0
  72. package/dist/markdown-parser/utils.spec.d.ts +2 -0
  73. package/dist/markdown-parser/utils.spec.d.ts.map +1 -0
  74. package/dist/markdown-parser/utils.spec.js +59 -0
  75. package/dist/markdown-parser/utils.spec.js.map +1 -0
  76. package/dist/tools/execute-bash.d.ts.map +1 -1
  77. package/dist/tools/execute-bash.js +5 -3
  78. package/dist/tools/execute-bash.js.map +1 -1
  79. package/dist/tools/find-files.d.ts +3 -0
  80. package/dist/tools/find-files.d.ts.map +1 -0
  81. package/dist/tools/find-files.js +186 -0
  82. package/dist/tools/find-files.js.map +1 -0
  83. package/dist/tools/index.js +4 -4
  84. package/dist/tools/index.js.map +1 -1
  85. package/dist/tools/read-file.d.ts.map +1 -1
  86. package/dist/tools/read-file.js +143 -9
  87. package/dist/tools/read-file.js.map +1 -1
  88. package/dist/tools/search-file-contents.d.ts +3 -0
  89. package/dist/tools/search-file-contents.d.ts.map +1 -0
  90. package/dist/tools/search-file-contents.js +164 -0
  91. package/dist/tools/search-file-contents.js.map +1 -0
  92. package/dist/types/markdown-parser.d.ts +11 -0
  93. package/dist/types/markdown-parser.d.ts.map +1 -0
  94. package/dist/types/markdown-parser.js +2 -0
  95. package/dist/types/markdown-parser.js.map +1 -0
  96. package/dist/types/ui.d.ts +1 -1
  97. package/dist/types/ui.d.ts.map +1 -1
  98. package/dist/types/utils.d.ts +2 -1
  99. package/dist/types/utils.d.ts.map +1 -1
  100. package/dist/usage/storage.d.ts +1 -1
  101. package/dist/usage/storage.d.ts.map +1 -1
  102. package/dist/usage/storage.js +55 -9
  103. package/dist/usage/storage.js.map +1 -1
  104. package/dist/usage/storage.spec.js +136 -2
  105. package/dist/usage/storage.spec.js.map +1 -1
  106. package/dist/utils/installation-detector.d.ts +16 -0
  107. package/dist/utils/installation-detector.d.ts.map +1 -0
  108. package/dist/utils/installation-detector.js +118 -0
  109. package/dist/utils/installation-detector.js.map +1 -0
  110. package/dist/utils/installation-detector.spec.d.ts +2 -0
  111. package/dist/utils/installation-detector.spec.d.ts.map +1 -0
  112. package/dist/utils/installation-detector.spec.js +141 -0
  113. package/dist/utils/installation-detector.spec.js.map +1 -0
  114. package/dist/utils/message-queue.d.ts +2 -0
  115. package/dist/utils/message-queue.d.ts.map +1 -1
  116. package/dist/utils/message-queue.js +11 -0
  117. package/dist/utils/message-queue.js.map +1 -1
  118. package/dist/utils/paste-detection.d.ts.map +1 -1
  119. package/dist/utils/paste-detection.js +8 -3
  120. package/dist/utils/paste-detection.js.map +1 -1
  121. package/dist/utils/paste-detection.spec.js +15 -8
  122. package/dist/utils/paste-detection.spec.js.map +1 -1
  123. package/dist/utils/paste-utils.d.ts.map +1 -1
  124. package/dist/utils/paste-utils.js +4 -2
  125. package/dist/utils/paste-utils.js.map +1 -1
  126. package/dist/utils/paste-utils.spec.js +19 -3
  127. package/dist/utils/paste-utils.spec.js.map +1 -1
  128. package/dist/utils/update-checker.d.ts.map +1 -1
  129. package/dist/utils/update-checker.js +31 -3
  130. package/dist/utils/update-checker.js.map +1 -1
  131. package/dist/utils/update-checker.spec.d.ts +2 -0
  132. package/dist/utils/update-checker.spec.d.ts.map +1 -0
  133. package/dist/utils/update-checker.spec.js +280 -0
  134. package/dist/utils/update-checker.spec.js.map +1 -0
  135. package/dist/wizard/steps/location-step.js +2 -2
  136. package/dist/wizard/steps/location-step.js.map +1 -1
  137. package/package.json +1 -1
  138. package/source/app/prompts/main-prompt.md +67 -23
  139. package/dist/components/update-message.d.ts +0 -7
  140. package/dist/components/update-message.d.ts.map +0 -1
  141. package/dist/components/update-message.js +0 -93
  142. package/dist/components/update-message.js.map +0 -1
  143. package/dist/tools/read-many-files.d.ts +0 -3
  144. package/dist/tools/read-many-files.d.ts.map +0 -1
  145. package/dist/tools/read-many-files.js +0 -169
  146. package/dist/tools/read-many-files.js.map +0 -1
  147. package/dist/tools/search-files.d.ts +0 -3
  148. package/dist/tools/search-files.d.ts.map +0 -1
  149. package/dist/tools/search-files.js +0 -251
  150. package/dist/tools/search-files.js.map +0 -1
package/README.md CHANGED
@@ -14,6 +14,7 @@ A local-first CLI coding agent that brings the power of agentic coding tools lik
14
14
  - [AI Provider Setup](#ai-provider-setup)
15
15
  - [MCP (Model Context Protocol) Servers](#mcp-model-context-protocol-servers)
16
16
  - [User Preferences](#user-preferences)
17
+ - [Application Data Directory](#application-data-directory)
17
18
  - [Commands](#commands)
18
19
  - [Built-in Commands](#built-in-commands)
19
20
  - [Custom Commands](#custom-commands)
@@ -183,7 +184,7 @@ Nanocoder looks for configuration in the following order (first found wins):
183
184
  - Use this for project-specific providers, models, or API keys
184
185
  - Perfect for team sharing or repository-specific configurations
185
186
 
186
- 2. **User-level (preferred)**: Platform-specific application data directory
187
+ 2. **User-level (preferred)**: Platform-specific configuration directory
187
188
 
188
189
  - **macOS**: `~/Library/Preferences/nanocoder/agents.config.json`
189
190
  - **Linux/Unix**: `~/.config/nanocoder/agents.config.json`
@@ -191,6 +192,8 @@ Nanocoder looks for configuration in the following order (first found wins):
191
192
  - Your global default configuration
192
193
  - Used when no project-level config exists
193
194
 
195
+ You can override this global configuration directory by setting `NANOCODER_CONFIG_DIR`. When set, Nanocoder will look for `agents.config.json` and related config files directly in this directory.
196
+
194
197
  3. **User-level (legacy)**: `~/.agents.config.json`
195
198
  - Supported for backward compatibility
196
199
  - Recommended to migrate to platform-specific location above
@@ -263,6 +266,9 @@ Nanocoder looks for configuration in the following order (first found wins):
263
266
 
264
267
  Keep API keys out of version control using environment variables. Variables are loaded from shell environment (`.bashrc`, `.zshrc`) or `.env` file in your working directory.
265
268
 
269
+ - `NANOCODER_CONFIG_DIR`: Override the global configuration directory.
270
+ - `NANOCODER_DATA_DIR`: Override the application data directory used for internal data like usage statistics.
271
+
266
272
  **Syntax:** `$VAR_NAME`, `${VAR_NAME}`, or `${VAR_NAME:-default}`
267
273
  **Supported in:** `baseUrl`, `apiKey`, `models`, MCP server `command`, `args`, `env`
268
274
 
@@ -402,6 +408,16 @@ Preferences follow the same location hierarchy as configuration files:
402
408
  - View current preferences: The file is human-readable JSON
403
409
  - Reset preferences: Delete any `nanocoder-preferences.json` to start fresh
404
410
 
411
+ ### Application Data Directory
412
+
413
+ Nanocoder stores internal application data (such as usage statistics) in a separate application data directory:
414
+
415
+ - **macOS**: `~/Library/Application Support/nanocoder`
416
+ - **Linux/Unix**: `$XDG_DATA_HOME/nanocoder` or `~/.local/share/nanocoder`
417
+ - **Windows**: `%APPDATA%\nanocoder`
418
+
419
+ You can override this directory using `NANOCODER_DATA_DIR`.
420
+
405
421
  ### Commands
406
422
 
407
423
  #### Built-in Commands
@@ -1,3 +1,9 @@
1
1
  import { Command } from '../types/index.js';
2
+ /**
3
+ * Determines if a command execution failed based on multiple signals.
4
+ * Checks exit code first (most reliable), then looks for specific error patterns.
5
+ * Exported for testing purposes.
6
+ */
7
+ export declare function hasCommandFailed(output: string): boolean;
2
8
  export declare const updateCommand: Command;
3
9
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAItC,eAAO,MAAM,aAAa,EAAE,OAM3B,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAStC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAyDxD;AAED,eAAO,MAAM,aAAa,EAAE,OAiF3B,CAAC"}
@@ -1,10 +1,136 @@
1
+ import { checkForUpdates } from '../utils/update-checker.js';
2
+ import { logInfo, logError } from '../utils/message-queue.js';
3
+ import { toolRegistry } from '../tools/index.js';
1
4
  import React from 'react';
2
- import UpdateMessage from '../components/update-message.js';
5
+ import SuccessMessage from '../components/success-message.js';
6
+ import InfoMessage from '../components/info-message.js';
7
+ import ErrorMessage from '../components/error-message.js';
8
+ /**
9
+ * Determines if a command execution failed based on multiple signals.
10
+ * Checks exit code first (most reliable), then looks for specific error patterns.
11
+ * Exported for testing purposes.
12
+ */
13
+ export function hasCommandFailed(output) {
14
+ const outputStr = String(output || '');
15
+ // Strategy 1: Check exit code (most reliable)
16
+ const exitCodeMatch = outputStr.match(/^EXIT_CODE:\s*(\d+)/m);
17
+ if (exitCodeMatch) {
18
+ const exitCode = parseInt(exitCodeMatch[1], 10);
19
+ // Non-zero exit code indicates failure
20
+ if (exitCode !== 0) {
21
+ return true;
22
+ }
23
+ }
24
+ // Strategy 2: Check for critical error patterns
25
+ // Use word boundaries and case-sensitive matching to avoid false positives
26
+ const normalized = outputStr.toLowerCase();
27
+ // Critical errors that definitively indicate failure
28
+ const criticalErrors = [
29
+ /\bcommand not found\b/i,
30
+ /\bno such file or directory\b/i,
31
+ /\bpermission denied\b/i,
32
+ /^error:/im, // Error at start of line
33
+ /\berror:\s*(?!0\b)/i, // "error:" not followed by 0
34
+ /\bfatal\b/i,
35
+ /\bfailed\b/i,
36
+ /\bcannot\b/i,
37
+ ];
38
+ for (const pattern of criticalErrors) {
39
+ if (pattern.test(normalized)) {
40
+ // Additional check: avoid false positives for success messages
41
+ // like "0 errors", "error-free", "no errors found"
42
+ if (/0\s*errors?|error-?free|no\s*errors?\s*found/i.test(normalized)) {
43
+ continue;
44
+ }
45
+ return true;
46
+ }
47
+ }
48
+ // Strategy 3: Check if STDERR has content (warning: not always an error)
49
+ // Some tools write progress to stderr, so this is a weak signal
50
+ // Only use this if no other signals present
51
+ const hasStderr = /^STDERR:\s*\S/m.test(outputStr);
52
+ if (hasStderr) {
53
+ // Check if stderr contains actual error indicators, not just warnings/info
54
+ const stderrMatch = outputStr.match(/^STDERR:\s*([\s\S]*?)(?:^STDOUT:|$)/m);
55
+ if (stderrMatch) {
56
+ const stderrContent = stderrMatch[1].toLowerCase();
57
+ // Only treat as error if stderr contains error-like content
58
+ if (/\berror\b|\bfatal\b|\bfailed\b|\bcannot\b/i.test(stderrContent)) {
59
+ return true;
60
+ }
61
+ }
62
+ }
63
+ return false;
64
+ }
3
65
  export const updateCommand = {
4
66
  name: 'update',
5
67
  description: 'Update Nanocoder to the latest version',
6
- handler: (_args) => {
7
- return Promise.resolve(React.createElement(UpdateMessage));
68
+ handler: async (_args) => {
69
+ // Show initial checking message
70
+ logInfo('Checking for available updates...', true);
71
+ try {
72
+ const updateInfo = await checkForUpdates();
73
+ if (updateInfo.hasUpdate) {
74
+ // Show updating message
75
+ logInfo('Downloading and installing the latest Nanocoder update...', true);
76
+ // Run update command if provided; otherwise show informative message
77
+ if (updateInfo.updateCommand) {
78
+ try {
79
+ const result = await toolRegistry.execute_bash({
80
+ command: updateInfo.updateCommand,
81
+ });
82
+ // Check for command failure using multiple strategies
83
+ if (hasCommandFailed(result)) {
84
+ logError('Update command executed but returned an error', true);
85
+ return React.createElement(ErrorMessage, {
86
+ message: `Update command failed. Output: ${String(result)}`,
87
+ hideBox: true,
88
+ });
89
+ }
90
+ // Show success message
91
+ return React.createElement(SuccessMessage, {
92
+ message: 'Nanocoder has been updated to the latest version. Please restart your session to apply the update.',
93
+ hideBox: true,
94
+ });
95
+ }
96
+ catch (err) {
97
+ const errorMessage = err instanceof Error ? err.message : String(err);
98
+ logError(`Failed to execute update command: ${errorMessage}`, true);
99
+ return React.createElement(ErrorMessage, {
100
+ message: `Failed to execute update command: ${errorMessage}`,
101
+ hideBox: true,
102
+ });
103
+ }
104
+ }
105
+ if (updateInfo.updateMessage) {
106
+ // We cannot run an automated update; show instructions to user
107
+ return React.createElement(InfoMessage, {
108
+ message: updateInfo.updateMessage,
109
+ hideBox: true,
110
+ });
111
+ }
112
+ // Fallback for unknown installation method
113
+ return React.createElement(InfoMessage, {
114
+ message: 'A new version is available. Please update using your package manager.',
115
+ hideBox: true,
116
+ });
117
+ }
118
+ else {
119
+ // Already up to date
120
+ return React.createElement(InfoMessage, {
121
+ message: 'You are already on the latest version.',
122
+ hideBox: true,
123
+ });
124
+ }
125
+ }
126
+ catch (error) {
127
+ const errorMessage = error instanceof Error ? error.message : String(error);
128
+ logError(`Failed to update Nanocoder: ${errorMessage}`, true);
129
+ return React.createElement(ErrorMessage, {
130
+ message: `Failed to check for updates: ${errorMessage}`,
131
+ hideBox: true,
132
+ });
133
+ }
8
134
  },
9
135
  };
10
136
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAExD,MAAM,CAAC,MAAM,aAAa,GAAY;IACrC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,wCAAwC;IACrD,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,CAAC;CACD,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- import type { AssistantMessageProps, Colors } from '../types/index.js';
2
- export declare function decodeHtmlEntities(text: string): string;
3
- export declare function parseMarkdownTable(tableText: string, themeColors: Colors): string;
4
- export declare function parseMarkdown(text: string, themeColors: Colors): string;
1
+ import type { AssistantMessageProps } from '../types/index.js';
5
2
  declare const _default: import("react").NamedExoticComponent<AssistantMessageProps>;
6
3
  export default _default;
7
4
  //# sourceMappingURL=assistant-message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../source/components/assistant-message.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,qBAAqB,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAMjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2CvD;AAmBD,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GACjB,MAAM,CAsFR;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgFvE;;AAED,wBA0BG"}
1
+ {"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../source/components/assistant-message.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;;AAGzD,wBA0BG"}
@@ -2,205 +2,7 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Text, Box } from 'ink';
3
3
  import { memo, useMemo } from 'react';
4
4
  import { useTheme } from '../hooks/useTheme.js';
5
- import chalk from 'chalk';
6
- import { highlight } from 'cli-highlight';
7
- import Table from 'cli-table3';
8
- // Decode HTML entities
9
- export function decodeHtmlEntities(text) {
10
- const entities = {
11
- '&nbsp;': ' ',
12
- '&amp;': '&',
13
- '&lt;': '<',
14
- '&gt;': '>',
15
- '&quot;': '"',
16
- '&apos;': "'",
17
- '&copy;': '©',
18
- '&reg;': '®',
19
- '&trade;': '™',
20
- '&euro;': '€',
21
- '&pound;': '£',
22
- '&yen;': '¥',
23
- '&cent;': '¢',
24
- '&sect;': '§',
25
- '&deg;': '°',
26
- '&plusmn;': '±',
27
- '&times;': '×',
28
- '&divide;': '÷',
29
- '&ndash;': '–',
30
- '&mdash;': '—',
31
- '&lsquo;': '\u2018',
32
- '&rsquo;': '\u2019',
33
- '&ldquo;': '\u201C',
34
- '&rdquo;': '\u201D',
35
- '&hellip;': '…',
36
- '&bull;': '•',
37
- };
38
- let result = text;
39
- // Replace named entities
40
- for (const [entity, char] of Object.entries(entities)) {
41
- result = result.replace(new RegExp(entity, 'g'), char);
42
- }
43
- // Replace numeric entities (e.g., &#160; or &#xA0;)
44
- result = result.replace(/&#(\d+);/g, (_match, code) => String.fromCharCode(parseInt(code, 10)));
45
- result = result.replace(/&#x([0-9A-Fa-f]+);/g, (_match, code) => String.fromCharCode(parseInt(code, 16)));
46
- return result;
47
- }
48
- // Strip markdown formatting from text (for width calculations)
49
- function stripMarkdown(text) {
50
- let result = text;
51
- // Remove inline code
52
- result = result.replace(/`([^`]+)`/g, '$1');
53
- // Remove bold
54
- result = result.replace(/\*\*([^*]+)\*\*/g, '$1');
55
- result = result.replace(/__([^_]+)__/g, '$1');
56
- // Remove italic
57
- result = result.replace(/\*([^*]+)\*/g, '$1');
58
- result = result.replace(/_([^_]+)_/g, '$1');
59
- // Remove links
60
- result = result.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1');
61
- return result;
62
- }
63
- // Parse markdown tables using cli-table3
64
- export function parseMarkdownTable(tableText, themeColors) {
65
- const lines = tableText.trim().split('\n');
66
- if (lines.length < 2)
67
- return tableText;
68
- // Extract rows
69
- const rows = lines.map(line => line
70
- .split('|')
71
- .map(cell => cell.trim())
72
- .filter(cell => cell.length > 0));
73
- // Check if second row is separator (e.g., |---|---|)
74
- const separatorRow = rows[1];
75
- const isSeparator = separatorRow?.every(cell => /^:?-+:?$/.test(cell));
76
- if (!isSeparator || rows.length < 3)
77
- return tableText;
78
- // Extract header and data rows - strip markdown for proper width calculation
79
- const header = rows[0].map(cell => stripMarkdown(cell));
80
- const dataRows = rows
81
- .slice(2)
82
- .map(row => row.map(cell => stripMarkdown(cell)));
83
- // Calculate column widths properly
84
- const terminalWidth = process.stdout.columns || 120;
85
- const numCols = header.length;
86
- // Get max content width for each column
87
- const contentWidths = header.map((_, colIdx) => {
88
- let maxWidth = header[colIdx].length;
89
- for (const row of dataRows) {
90
- if (row[colIdx]) {
91
- maxWidth = Math.max(maxWidth, row[colIdx].length);
92
- }
93
- }
94
- return maxWidth;
95
- });
96
- // Calculate available width (accounting for borders and padding)
97
- const borderWidth = numCols + 1; // vertical bars
98
- const paddingWidth = numCols * 2; // 1 space on each side of each column
99
- const availableWidth = terminalWidth - borderWidth - paddingWidth;
100
- // Distribute width proportionally
101
- const totalContentWidth = contentWidths.reduce((a, b) => a + b, 0);
102
- const colWidths = contentWidths.map(width => Math.max(10, Math.floor((width / totalContentWidth) * availableWidth)));
103
- // Create table with cli-table3 - full borders, proper alignment
104
- const table = new Table({
105
- head: header.map(cell => chalk.hex(themeColors.primary).bold(cell)),
106
- colWidths: colWidths,
107
- style: {
108
- head: [], // Don't apply default styles, we're using chalk
109
- border: ['gray'], // Subtle border color
110
- 'padding-left': 1,
111
- 'padding-right': 1,
112
- },
113
- chars: {
114
- top: '─',
115
- 'top-mid': '┬',
116
- 'top-left': '┌',
117
- 'top-right': '┐',
118
- bottom: '─',
119
- 'bottom-mid': '┴',
120
- 'bottom-left': '└',
121
- 'bottom-right': '┘',
122
- left: '│',
123
- 'left-mid': '├',
124
- mid: '─',
125
- 'mid-mid': '┼',
126
- right: '│',
127
- 'right-mid': '┤',
128
- middle: '│',
129
- },
130
- wordWrap: true,
131
- wrapOnWordBoundary: true,
132
- });
133
- // Add data rows - don't style them, let cli-table3 handle layout
134
- for (const row of dataRows) {
135
- table.push(row);
136
- }
137
- return table.toString();
138
- }
139
- // Basic markdown parser for terminal
140
- export function parseMarkdown(text, themeColors) {
141
- // First decode HTML entities
142
- let result = decodeHtmlEntities(text);
143
- // Parse tables before other markdown elements
144
- result = result.replace(/(?:^|\n)((?:\|.+\|\n)+)/gm, (_match, tableText) => {
145
- return '\n' + parseMarkdownTable(tableText, themeColors) + '\n';
146
- });
147
- // Code blocks (```language\ncode\n```)
148
- result = result.replace(/```(\w+)?\n([\s\S]*?)```/g, (_match, lang, code) => {
149
- try {
150
- const codeStr = String(code).trim();
151
- // Apply syntax highlighting with detected language
152
- const highlighted = highlight(codeStr, {
153
- language: lang || 'plaintext',
154
- theme: 'default',
155
- });
156
- return highlighted;
157
- }
158
- catch {
159
- // Fallback to plain colored text if highlighting fails
160
- return chalk.hex(themeColors.tool)(String(code).trim());
161
- }
162
- });
163
- // Inline code (`code`)
164
- result = result.replace(/`([^`]+)`/g, (_match, code) => {
165
- return chalk.hex(themeColors.tool)(String(code).trim());
166
- });
167
- // Bold (**text** or __text__)
168
- result = result.replace(/\*\*([^*]+)\*\*/g, (_match, text) => {
169
- return chalk.hex(themeColors.white).bold(text);
170
- });
171
- result = result.replace(/__([^_]+)__/g, (_match, text) => {
172
- return chalk.hex(themeColors.white).bold(text);
173
- });
174
- // Italic (*text* or _text_)
175
- result = result.replace(/\*([^*]+)\*/g, (_match, text) => {
176
- return chalk.hex(themeColors.white).italic(text);
177
- });
178
- result = result.replace(/_([^_]+)_/g, (_match, text) => {
179
- return chalk.hex(themeColors.white).italic(text);
180
- });
181
- // Headings (# Heading)
182
- result = result.replace(/^(#{1,6})\s+(.+)$/gm, (_match, _hashes, text) => {
183
- return chalk.hex(themeColors.primary).bold(text);
184
- });
185
- // Links [text](url)
186
- result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, text, url) => {
187
- return (chalk.hex(themeColors.info).underline(text) +
188
- ' ' +
189
- chalk.hex(themeColors.secondary)(`(${url})`));
190
- });
191
- // Blockquotes (> text)
192
- result = result.replace(/^>\s+(.+)$/gm, (_match, text) => {
193
- return chalk.hex(themeColors.secondary).italic(`> ${text}`);
194
- });
195
- // List items (- item or * item or 1. item)
196
- result = result.replace(/^[\s]*[-*]\s+(.+)$/gm, (_match, text) => {
197
- return chalk.hex(themeColors.white)(`• ${text}`);
198
- });
199
- result = result.replace(/^[\s]*\d+\.\s+(.+)$/gm, (_match, text) => {
200
- return chalk.hex(themeColors.white)(text);
201
- });
202
- return result;
203
- }
5
+ import { parseMarkdown } from '../markdown-parser/index.js';
204
6
  export default memo(function AssistantMessage({ message, model, }) {
205
7
  const { colors } = useTheme();
206
8
  // Render markdown to terminal-formatted text with theme colors
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../source/components/assistant-message.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../source/components/assistant-message.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAEtD,eAAe,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAC7C,OAAO,EACP,KAAK,GACkB;IACvB,MAAM,EAAC,MAAM,EAAC,GAAG,QAAQ,EAAE,CAAC;IAE5B,+DAA+D;IAC/D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC;YACJ,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACR,mDAAmD;YACnD,OAAO,OAAO,CAAC;QAChB,CAAC;IACF,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtB,OAAO,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aAC1C,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YACnB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,mBAC/B,KAAK,SACA,GACF,EACN,KAAC,IAAI,cAAE,eAAe,GAAQ,IACzB,CACN,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,10 +1,5 @@
1
1
  import type { ThemePreset } from '../types/ui.js';
2
- interface UpdateInfo {
3
- hasUpdate: boolean;
4
- currentVersion: string;
5
- latestVersion?: string;
6
- updateCommand?: string;
7
- }
2
+ import type { UpdateInfo } from '../types/utils.js';
8
3
  declare const _default: import("react").NamedExoticComponent<{
9
4
  provider: string;
10
5
  model: string;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../source/components/status.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAK5C,UAAU,UAAU;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;;cASU,MAAM;WACT,MAAM;WACN,WAAW;iBACL,UAAU,GAAG,IAAI;qBACb,OAAO;;AAXzB,wBAuHG"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../source/components/status.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;;cAcnC,MAAM;WACT,MAAM;WACN,WAAW;iBACL,UAAU,GAAG,IAAI;qBACb,OAAO;;AAXzB,wBAkIG"}
@@ -8,6 +8,7 @@ import { confDirMap } from '../config/index.js';
8
8
  import { themes, getThemeColors } from '../config/themes.js';
9
9
  // Get CWD once at module load time
10
10
  const cwd = process.cwd();
11
+ // Using UpdateInfo from '../types/utils.js' for type consistency
11
12
  export default memo(function Status({ provider, model, theme, updateInfo, agentsMdLoaded, }) {
12
13
  const { boxWidth, isNarrow, truncatePath } = useResponsiveTerminal();
13
14
  const colors = getThemeColors(theme);
@@ -15,8 +16,8 @@ export default memo(function Status({ provider, model, theme, updateInfo, agents
15
16
  const hasAgentsMd = agentsMdLoaded ?? existsSync(`${cwd}/AGENTS.md`);
16
17
  // Calculate max path length based on terminal size
17
18
  const maxPathLength = isNarrow ? 30 : 60;
18
- return (_jsx(_Fragment, { children: isNarrow ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, borderStyle: "round", borderColor: colors.info, paddingY: 1, paddingX: 2, children: [_jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "CWD: " }), truncatePath(cwd, maxPathLength)] }), _jsxs(Text, { color: colors.success, children: [_jsx(Text, { bold: true, children: "Model: " }), model] }), _jsxs(Text, { color: colors.primary, children: [_jsx(Text, { bold: true, children: "Theme: " }), themes[theme].displayName] }), hasAgentsMd ? (_jsx(Text, { color: colors.secondary, italic: true, children: "\u2713 AGENTS.md" })) : (_jsx(Text, { color: colors.secondary, italic: true, children: "\u2717 No AGENTS.md" })), updateInfo?.hasUpdate && (_jsxs(Text, { color: colors.warning, children: ["\u26A0 v", updateInfo.currentVersion, " \u2192 v", updateInfo.latestVersion] }))] })) : (
19
+ return (_jsx(_Fragment, { children: isNarrow ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, borderStyle: "round", borderColor: colors.info, paddingY: 1, paddingX: 2, children: [_jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "CWD: " }), truncatePath(cwd, maxPathLength)] }), _jsxs(Text, { color: colors.success, children: [_jsx(Text, { bold: true, children: "Model: " }), model] }), _jsxs(Text, { color: colors.primary, children: [_jsx(Text, { bold: true, children: "Theme: " }), themes[theme].displayName] }), hasAgentsMd ? (_jsx(Text, { color: colors.secondary, italic: true, children: "\u2713 AGENTS.md" })) : (_jsx(Text, { color: colors.secondary, italic: true, children: "\u2717 No AGENTS.md" })), updateInfo?.hasUpdate && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: colors.warning, children: ["\u26A0 v", updateInfo.currentVersion, " \u2192 v", updateInfo.latestVersion] }), updateInfo.updateCommand ? (_jsxs(Text, { color: colors.secondary, children: ["\u21B3 Run: /update or ", updateInfo.updateCommand] })) : updateInfo.updateMessage ? (_jsx(Text, { color: colors.secondary, children: updateInfo.updateMessage })) : null] }))] })) : (
19
20
  /* Normal/Wide terminal: full layout with TitledBox */
20
- _jsxs(TitledBox, { borderStyle: "round", titles: ['Status'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.info, paddingX: 2, paddingY: 1, flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "CWD: " }), truncatePath(cwd, maxPathLength)] }), _jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "Config: " }), truncatePath(confDirMap['agents.config.json'], maxPathLength)] }), _jsxs(Text, { color: colors.success, children: [_jsx(Text, { bold: true, children: "Provider: " }), provider, ", ", _jsx(Text, { bold: true, children: "Model: " }), model] }), _jsxs(Text, { color: colors.primary, children: [_jsx(Text, { bold: true, children: "Theme: " }), themes[theme].displayName] }), hasAgentsMd ? (_jsx(Text, { color: colors.secondary, italic: true, children: _jsx(Text, { children: "\u21B3 Using AGENTS.md. Project initialized" }) })) : (_jsx(Text, { color: colors.secondary, italic: true, children: "\u21B3 No AGENTS.md file found, run `/init` to initialize this directory" })), updateInfo?.hasUpdate && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: colors.warning, children: [_jsx(Text, { bold: true, children: "Update Available: " }), "v", updateInfo.currentVersion, " \u2192 v", updateInfo.latestVersion] }), updateInfo.updateCommand && (_jsxs(Text, { color: colors.secondary, children: ["\u21B3 Run: /update or ", updateInfo.updateCommand] }))] }))] }, colors.primary)) }));
21
+ _jsxs(TitledBox, { borderStyle: "round", titles: ['Status'], titleStyles: titleStyles.pill, width: boxWidth, borderColor: colors.info, paddingX: 2, paddingY: 1, flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "CWD: " }), truncatePath(cwd, maxPathLength)] }), _jsxs(Text, { color: colors.info, children: [_jsx(Text, { bold: true, children: "Config: " }), truncatePath(confDirMap['agents.config.json'], maxPathLength)] }), _jsxs(Text, { color: colors.success, children: [_jsx(Text, { bold: true, children: "Provider: " }), provider, ", ", _jsx(Text, { bold: true, children: "Model: " }), model] }), _jsxs(Text, { color: colors.primary, children: [_jsx(Text, { bold: true, children: "Theme: " }), themes[theme].displayName] }), hasAgentsMd ? (_jsx(Text, { color: colors.secondary, italic: true, children: _jsx(Text, { children: "\u21B3 Using AGENTS.md. Project initialized" }) })) : (_jsx(Text, { color: colors.secondary, italic: true, children: "\u21B3 No AGENTS.md file found, run `/init` to initialize this directory" })), updateInfo?.hasUpdate && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: colors.warning, children: [_jsx(Text, { bold: true, children: "Update Available: " }), "v", updateInfo.currentVersion, " \u2192 v", updateInfo.latestVersion] }), updateInfo.updateCommand ? (_jsxs(Text, { color: colors.secondary, children: ["\u21B3 Run: /update or ", updateInfo.updateCommand] })) : updateInfo.updateMessage ? (_jsx(Text, { color: colors.secondary, children: updateInfo.updateMessage })) : null] }))] }, colors.primary)) }));
21
22
  });
22
23
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../source/components/status.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../source/components/status.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-input.d.ts","sourceRoot":"","sources":["../../source/components/user-input.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAC,eAAe,EAA0B,MAAM,cAAc,CAAC;AAOtE,UAAU,SAAS;IAClB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EACjC,QAAQ,EACR,WAAW,EACX,cAAmB,EACnB,QAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,eAA0B,GAC1B,EAAE,SAAS,2CAwcX"}
1
+ {"version":3,"file":"user-input.d.ts","sourceRoot":"","sources":["../../source/components/user-input.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAC,eAAe,EAA0B,MAAM,cAAc,CAAC;AAOtE,UAAU,SAAS;IAClB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EACjC,QAAQ,EACR,WAAW,EACX,cAAmB,EACnB,QAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,eAA0B,GAC1B,EAAE,SAAS,2CA6eX"}