@machina.ai/cell-cli 1.0.13-rc9 → 1.0.17-rc1

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 (235) hide show
  1. package/dist/package.json +7 -6
  2. package/dist/src/config/config.d.ts +5 -2
  3. package/dist/src/config/config.js +57 -39
  4. package/dist/src/config/config.js.map +1 -1
  5. package/dist/src/config/extension.d.ts +1 -0
  6. package/dist/src/config/extension.js +4 -0
  7. package/dist/src/config/extension.js.map +1 -1
  8. package/dist/src/config/settings.d.ts +17 -1
  9. package/dist/src/config/settings.js +88 -23
  10. package/dist/src/config/settings.js.map +1 -1
  11. package/dist/src/gemini.d.ts +3 -0
  12. package/dist/src/gemini.js +53 -32
  13. package/dist/src/gemini.js.map +1 -1
  14. package/dist/src/generated/git-commit.d.ts +1 -1
  15. package/dist/src/generated/git-commit.js +2 -2
  16. package/dist/src/generated/git-commit.js.map +1 -1
  17. package/dist/src/nonInteractiveCli.js +15 -40
  18. package/dist/src/nonInteractiveCli.js.map +1 -1
  19. package/dist/src/patches/is-in-ci.d.ts +7 -0
  20. package/dist/src/patches/is-in-ci.js +15 -0
  21. package/dist/src/patches/is-in-ci.js.map +1 -0
  22. package/dist/src/services/BuiltinCommandLoader.js +9 -0
  23. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  24. package/dist/src/services/CommandService.d.ts +8 -4
  25. package/dist/src/services/CommandService.js +24 -8
  26. package/dist/src/services/CommandService.js.map +1 -1
  27. package/dist/src/services/FileCommandLoader.d.ts +15 -3
  28. package/dist/src/services/FileCommandLoader.js +113 -38
  29. package/dist/src/services/FileCommandLoader.js.map +1 -1
  30. package/dist/src/services/McpPromptLoader.d.ts +25 -0
  31. package/dist/src/services/McpPromptLoader.js +192 -0
  32. package/dist/src/services/McpPromptLoader.js.map +1 -0
  33. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +21 -0
  34. package/dist/src/services/prompt-processors/argumentProcessor.js +28 -0
  35. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -0
  36. package/dist/src/services/prompt-processors/shellProcessor.d.ts +32 -0
  37. package/dist/src/services/prompt-processors/shellProcessor.js +77 -0
  38. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
  39. package/dist/src/services/prompt-processors/types.d.ts +38 -0
  40. package/dist/src/services/prompt-processors/types.js +14 -0
  41. package/dist/src/services/prompt-processors/types.js.map +1 -0
  42. package/dist/src/ui/App.js +105 -52
  43. package/dist/src/ui/App.js.map +1 -1
  44. package/dist/src/ui/colors.js +6 -0
  45. package/dist/src/ui/colors.js.map +1 -1
  46. package/dist/src/ui/commands/chatCommand.js +45 -2
  47. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  48. package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
  49. package/dist/src/ui/commands/directoryCommand.js +136 -0
  50. package/dist/src/ui/commands/directoryCommand.js.map +1 -0
  51. package/dist/src/ui/commands/helpCommand.js +7 -6
  52. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  53. package/dist/src/ui/commands/ideCommand.js +113 -111
  54. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  55. package/dist/src/ui/commands/initCommand.d.ts +7 -0
  56. package/dist/src/ui/commands/initCommand.js +76 -0
  57. package/dist/src/ui/commands/initCommand.js.map +1 -0
  58. package/dist/src/ui/commands/mcpCommand.js +240 -26
  59. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  60. package/dist/src/ui/commands/memoryCommand.js +9 -4
  61. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  62. package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
  63. package/dist/src/ui/commands/setupGithubCommand.js +48 -0
  64. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
  65. package/dist/src/ui/commands/types.d.ts +30 -3
  66. package/dist/src/ui/commands/types.js +1 -0
  67. package/dist/src/ui/commands/types.js.map +1 -1
  68. package/dist/src/ui/commands/vimCommand.d.ts +7 -0
  69. package/dist/src/ui/commands/vimCommand.js +23 -0
  70. package/dist/src/ui/commands/vimCommand.js.map +1 -0
  71. package/dist/src/ui/components/AsciiArt.d.ts +2 -2
  72. package/dist/src/ui/components/AsciiArt.js +2 -2
  73. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +2 -2
  74. package/dist/src/ui/components/ContextSummaryDisplay.js +12 -12
  75. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  76. package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
  77. package/dist/src/ui/components/DebugProfiler.js +26 -0
  78. package/dist/src/ui/components/DebugProfiler.js.map +1 -0
  79. package/dist/src/ui/components/Footer.d.ts +1 -0
  80. package/dist/src/ui/components/Footer.js +4 -3
  81. package/dist/src/ui/components/Footer.js.map +1 -1
  82. package/dist/src/ui/components/Header.js +1 -1
  83. package/dist/src/ui/components/Header.js.map +1 -1
  84. package/dist/src/ui/components/Help.js +2 -2
  85. package/dist/src/ui/components/Help.js.map +1 -1
  86. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  87. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  88. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  89. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +12 -0
  90. package/dist/src/ui/components/IDEContextDetailDisplay.js +12 -0
  91. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -0
  92. package/dist/src/ui/components/InputPrompt.d.ts +2 -0
  93. package/dist/src/ui/components/InputPrompt.js +92 -102
  94. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  95. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  96. package/dist/src/ui/components/PrepareLabel.js +16 -0
  97. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  98. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +15 -0
  99. package/dist/src/ui/components/ShellConfirmationDialog.js +44 -0
  100. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
  101. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  102. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  103. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  104. package/dist/src/ui/components/ThemeDialog.js +10 -5
  105. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  106. package/dist/src/ui/components/Tips.js +1 -1
  107. package/dist/src/ui/components/Tips.js.map +1 -1
  108. package/dist/src/ui/components/messages/DiffRenderer.js +12 -11
  109. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  110. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +19 -7
  111. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  112. package/dist/src/ui/components/messages/UserMessage.js +4 -1
  113. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  114. package/dist/src/ui/components/shared/text-buffer.d.ts +273 -3
  115. package/dist/src/ui/components/shared/text-buffer.js +420 -79
  116. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  117. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +72 -0
  118. package/dist/src/ui/components/shared/vim-buffer-actions.js +565 -0
  119. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
  120. package/dist/src/ui/contexts/VimModeContext.d.ts +19 -0
  121. package/dist/src/ui/contexts/VimModeContext.js +48 -0
  122. package/dist/src/ui/contexts/VimModeContext.js.map +1 -0
  123. package/dist/src/ui/editors/editorSettingsManager.js +6 -13
  124. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  125. package/dist/src/ui/hooks/atCommandProcessor.js +67 -50
  126. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  127. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  128. package/dist/src/ui/hooks/shellCommandProcessor.js +139 -196
  129. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  130. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +7 -3
  131. package/dist/src/ui/hooks/slashCommandProcessor.js +203 -120
  132. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  133. package/dist/src/ui/hooks/useCommandCompletion.d.ts +24 -0
  134. package/dist/src/ui/hooks/useCommandCompletion.js +453 -0
  135. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
  136. package/dist/src/ui/hooks/useCompletion.d.ts +5 -3
  137. package/dist/src/ui/hooks/useCompletion.js +7 -312
  138. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  139. package/dist/src/ui/hooks/useConsoleMessages.js +53 -37
  140. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  141. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  142. package/dist/src/ui/hooks/useGeminiStream.js +6 -5
  143. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  144. package/dist/src/ui/hooks/useInputHistory.d.ts +1 -1
  145. package/dist/src/ui/hooks/useKeypress.js +5 -2
  146. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  147. package/dist/src/ui/hooks/usePhraseCycler.js +1 -0
  148. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  149. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
  150. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  151. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  152. package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
  153. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  154. package/dist/src/ui/hooks/useShellHistory.d.ts +4 -2
  155. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  156. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  157. package/dist/src/ui/hooks/vim.d.ts +28 -0
  158. package/dist/src/ui/hooks/vim.js +630 -0
  159. package/dist/src/ui/hooks/vim.js.map +1 -0
  160. package/dist/src/ui/themes/ansi-light.js +2 -0
  161. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  162. package/dist/src/ui/themes/ansi.js +2 -0
  163. package/dist/src/ui/themes/ansi.js.map +1 -1
  164. package/dist/src/ui/themes/atom-one-dark.js +2 -0
  165. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  166. package/dist/src/ui/themes/ayu-light.js +3 -1
  167. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  168. package/dist/src/ui/themes/ayu.js +3 -1
  169. package/dist/src/ui/themes/ayu.js.map +1 -1
  170. package/dist/src/ui/themes/dracula.js +2 -0
  171. package/dist/src/ui/themes/dracula.js.map +1 -1
  172. package/dist/src/ui/themes/github-dark.js +2 -0
  173. package/dist/src/ui/themes/github-dark.js.map +1 -1
  174. package/dist/src/ui/themes/github-light.js +2 -0
  175. package/dist/src/ui/themes/github-light.js.map +1 -1
  176. package/dist/src/ui/themes/googlecode.js +2 -0
  177. package/dist/src/ui/themes/googlecode.js.map +1 -1
  178. package/dist/src/ui/themes/no-color.js +2 -0
  179. package/dist/src/ui/themes/no-color.js.map +1 -1
  180. package/dist/src/ui/themes/shades-of-purple.js +2 -0
  181. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  182. package/dist/src/ui/themes/theme-manager.js +10 -1
  183. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  184. package/dist/src/ui/themes/theme.d.ts +3 -0
  185. package/dist/src/ui/themes/theme.js +28 -3
  186. package/dist/src/ui/themes/theme.js.map +1 -1
  187. package/dist/src/ui/themes/xcode.js +2 -0
  188. package/dist/src/ui/themes/xcode.js.map +1 -1
  189. package/dist/src/ui/types.d.ts +10 -1
  190. package/dist/src/ui/types.js +1 -0
  191. package/dist/src/ui/types.js.map +1 -1
  192. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -0
  193. package/dist/src/ui/utils/CodeColorizer.js +17 -5
  194. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  195. package/dist/src/ui/utils/textUtils.d.ts +0 -8
  196. package/dist/src/ui/utils/textUtils.js +0 -22
  197. package/dist/src/ui/utils/textUtils.js.map +1 -1
  198. package/dist/src/ui/utils/updateCheck.d.ts +7 -1
  199. package/dist/src/ui/utils/updateCheck.js +46 -8
  200. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  201. package/dist/src/utils/events.d.ts +11 -0
  202. package/dist/src/utils/events.js +13 -0
  203. package/dist/src/utils/events.js.map +1 -0
  204. package/dist/src/utils/gitUtils.d.ts +10 -0
  205. package/dist/src/utils/gitUtils.js +24 -0
  206. package/dist/src/utils/gitUtils.js.map +1 -0
  207. package/dist/src/utils/handleAutoUpdate.d.ts +11 -0
  208. package/dist/src/utils/handleAutoUpdate.js +101 -0
  209. package/dist/src/utils/handleAutoUpdate.js.map +1 -0
  210. package/dist/src/utils/installationInfo.d.ts +23 -0
  211. package/dist/src/utils/installationInfo.js +154 -0
  212. package/dist/src/utils/installationInfo.js.map +1 -0
  213. package/dist/src/utils/resolvePath.d.ts +6 -0
  214. package/dist/src/utils/resolvePath.js +21 -0
  215. package/dist/src/utils/resolvePath.js.map +1 -0
  216. package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
  217. package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
  218. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
  219. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
  220. package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
  221. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
  222. package/dist/src/utils/sandbox.d.ts +2 -2
  223. package/dist/src/utils/sandbox.js +39 -11
  224. package/dist/src/utils/sandbox.js.map +1 -1
  225. package/dist/src/utils/spawnWrapper.d.ts +7 -0
  226. package/dist/src/utils/spawnWrapper.js +8 -0
  227. package/dist/src/utils/spawnWrapper.js.map +1 -0
  228. package/dist/src/utils/updateEventEmitter.d.ts +11 -0
  229. package/dist/src/utils/updateEventEmitter.js +12 -0
  230. package/dist/src/utils/updateEventEmitter.js.map +1 -0
  231. package/dist/src/validateNonInterActiveAuth.d.ts +7 -0
  232. package/dist/src/validateNonInterActiveAuth.js +37 -0
  233. package/dist/src/validateNonInterActiveAuth.js.map +1 -0
  234. package/dist/tsconfig.tsbuildinfo +1 -1
  235. package/package.json +7 -6
@@ -4,11 +4,12 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { CommandKind, } from './types.js';
7
- import { DiscoveredMCPTool, getMCPDiscoveryState, getMCPServerStatus, MCPDiscoveryState, MCPServerStatus, } from '@machina.ai/cell-cli-core';
8
- import open from 'open';
7
+ import { DiscoveredMCPTool, getMCPDiscoveryState, getMCPServerStatus, MCPDiscoveryState, MCPServerStatus, mcpServerRequiresOAuth, getErrorMessage, } from '@machina.ai/cell-cli-core';
9
8
  const COLOR_GREEN = '\u001b[32m';
10
9
  const COLOR_YELLOW = '\u001b[33m';
10
+ const COLOR_RED = '\u001b[31m';
11
11
  const COLOR_CYAN = '\u001b[36m';
12
+ const COLOR_GREY = '\u001b[90m';
12
13
  const RESET_COLOR = '\u001b[0m';
13
14
  const getMcpStatus = async (context, showDescriptions, showSchema, showTips = false) => {
14
15
  const { config } = context.services;
@@ -32,22 +33,11 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
32
33
  const blockedMcpServers = config.getBlockedMcpServers() || [];
33
34
  if (serverNames.length === 0 && blockedMcpServers.length === 0) {
34
35
  const docsUrl = 'https://goo.gle/gemini-cli-docs-mcp';
35
- if (process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec') {
36
- return {
37
- type: 'message',
38
- messageType: 'info',
39
- content: `No MCP servers configured. Please open the following URL in your browser to view documentation:\n${docsUrl}`,
40
- };
41
- }
42
- else {
43
- // Open the URL in the browser
44
- await open(docsUrl);
45
- return {
46
- type: 'message',
47
- messageType: 'info',
48
- content: `No MCP servers configured. Opening documentation in your browser: ${docsUrl}`,
49
- };
50
- }
36
+ return {
37
+ type: 'message',
38
+ messageType: 'info',
39
+ content: `No MCP servers configured. Please view MCP documentation in your browser: ${docsUrl} or use the cli /docs command`,
40
+ };
51
41
  }
52
42
  // Check if any servers are still connecting
53
43
  const connectingServers = serverNames.filter((name) => getMCPServerStatus(name) === MCPServerStatus.CONNECTING);
@@ -63,7 +53,15 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
63
53
  const allTools = toolRegistry.getAllTools();
64
54
  for (const serverName of serverNames) {
65
55
  const serverTools = allTools.filter((tool) => tool instanceof DiscoveredMCPTool && tool.serverName === serverName);
66
- const status = getMCPServerStatus(serverName);
56
+ const promptRegistry = await config.getPromptRegistry();
57
+ const serverPrompts = promptRegistry.getPromptsByServer(serverName) || [];
58
+ const originalStatus = getMCPServerStatus(serverName);
59
+ const hasCachedItems = serverTools.length > 0 || serverPrompts.length > 0;
60
+ // If the server is "disconnected" but has prompts or cached tools, display it as Ready
61
+ // by using CONNECTED as the display status.
62
+ const status = originalStatus === MCPServerStatus.DISCONNECTED && hasCachedItems
63
+ ? MCPServerStatus.CONNECTED
64
+ : originalStatus;
67
65
  // Add status indicator with descriptive text
68
66
  let statusIndicator = '';
69
67
  let statusText = '';
@@ -90,12 +88,49 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
90
88
  }
91
89
  // Format server header with bold formatting and status
92
90
  message += `${statusIndicator} \u001b[1m${serverDisplayName}\u001b[0m - ${statusText}`;
91
+ let needsAuthHint = mcpServerRequiresOAuth.get(serverName) || false;
92
+ // Add OAuth status if applicable
93
+ if (server?.oauth?.enabled) {
94
+ needsAuthHint = true;
95
+ try {
96
+ const { MCPOAuthTokenStorage } = await import('@machina.ai/cell-cli-core');
97
+ const hasToken = await MCPOAuthTokenStorage.getToken(serverName);
98
+ if (hasToken) {
99
+ const isExpired = MCPOAuthTokenStorage.isTokenExpired(hasToken.token);
100
+ if (isExpired) {
101
+ message += ` ${COLOR_YELLOW}(OAuth token expired)${RESET_COLOR}`;
102
+ }
103
+ else {
104
+ message += ` ${COLOR_GREEN}(OAuth authenticated)${RESET_COLOR}`;
105
+ needsAuthHint = false;
106
+ }
107
+ }
108
+ else {
109
+ message += ` ${COLOR_RED}(OAuth not authenticated)${RESET_COLOR}`;
110
+ }
111
+ }
112
+ catch (_err) {
113
+ // If we can't check OAuth status, just continue
114
+ }
115
+ }
93
116
  // Add tool count with conditional messaging
94
117
  if (status === MCPServerStatus.CONNECTED) {
95
- message += ` (${serverTools.length} tools)`;
118
+ const parts = [];
119
+ if (serverTools.length > 0) {
120
+ parts.push(`${serverTools.length} ${serverTools.length === 1 ? 'tool' : 'tools'}`);
121
+ }
122
+ if (serverPrompts.length > 0) {
123
+ parts.push(`${serverPrompts.length} ${serverPrompts.length === 1 ? 'prompt' : 'prompts'}`);
124
+ }
125
+ if (parts.length > 0) {
126
+ message += ` (${parts.join(', ')})`;
127
+ }
128
+ else {
129
+ message += ` (0 tools)`;
130
+ }
96
131
  }
97
132
  else if (status === MCPServerStatus.CONNECTING) {
98
- message += ` (tools will appear when ready)`;
133
+ message += ` (tools and prompts will appear when ready)`;
99
134
  }
100
135
  else {
101
136
  message += ` (${serverTools.length} tools cached)`;
@@ -119,6 +154,7 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
119
154
  // Reset formatting after server entry
120
155
  message += RESET_COLOR;
121
156
  if (serverTools.length > 0) {
157
+ message += ` ${COLOR_CYAN}Tools:${RESET_COLOR}\n`;
122
158
  serverTools.forEach((tool) => {
123
159
  if (showDescriptions && tool.description) {
124
160
  // Format tool name in cyan using simple ANSI cyan color
@@ -155,8 +191,44 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
155
191
  }
156
192
  });
157
193
  }
158
- else {
159
- message += ' No tools available\n';
194
+ if (serverPrompts.length > 0) {
195
+ if (serverTools.length > 0) {
196
+ message += '\n';
197
+ }
198
+ message += ` ${COLOR_CYAN}Prompts:${RESET_COLOR}\n`;
199
+ serverPrompts.forEach((prompt) => {
200
+ if (showDescriptions && prompt.description) {
201
+ message += ` - ${COLOR_CYAN}${prompt.name}${RESET_COLOR}`;
202
+ const descLines = prompt.description.trim().split('\n');
203
+ if (descLines) {
204
+ message += ':\n';
205
+ for (const descLine of descLines) {
206
+ message += ` ${COLOR_GREEN}${descLine}${RESET_COLOR}\n`;
207
+ }
208
+ }
209
+ else {
210
+ message += '\n';
211
+ }
212
+ }
213
+ else {
214
+ message += ` - ${COLOR_CYAN}${prompt.name}${RESET_COLOR}\n`;
215
+ }
216
+ });
217
+ }
218
+ if (serverTools.length === 0 && serverPrompts.length === 0) {
219
+ message += ' No tools or prompts available\n';
220
+ }
221
+ else if (serverTools.length === 0) {
222
+ message += ' No tools available';
223
+ if (originalStatus === MCPServerStatus.DISCONNECTED && needsAuthHint) {
224
+ message += ` ${COLOR_GREY}(type: "/mcp auth ${serverName}" to authenticate this server)${RESET_COLOR}`;
225
+ }
226
+ message += '\n';
227
+ }
228
+ else if (originalStatus === MCPServerStatus.DISCONNECTED &&
229
+ needsAuthHint) {
230
+ // This case is for when serverTools.length > 0
231
+ message += ` ${COLOR_GREY}(type: "/mcp auth ${serverName}" to authenticate this server)${RESET_COLOR}\n`;
160
232
  }
161
233
  message += '\n';
162
234
  }
@@ -174,6 +246,7 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
174
246
  message += ` • Use ${COLOR_CYAN}/mcp desc${RESET_COLOR} to show server and tool descriptions\n`;
175
247
  message += ` • Use ${COLOR_CYAN}/mcp schema${RESET_COLOR} to show tool parameter schemas\n`;
176
248
  message += ` • Use ${COLOR_CYAN}/mcp nodesc${RESET_COLOR} to hide descriptions\n`;
249
+ message += ` • Use ${COLOR_CYAN}/mcp auth <server-name>${RESET_COLOR} to authenticate with OAuth-enabled servers\n`;
177
250
  message += ` • Press ${COLOR_CYAN}Ctrl+T${RESET_COLOR} to toggle tool descriptions on/off\n`;
178
251
  message += '\n';
179
252
  }
@@ -185,9 +258,106 @@ const getMcpStatus = async (context, showDescriptions, showSchema, showTips = fa
185
258
  content: message,
186
259
  };
187
260
  };
188
- export const mcpCommand = {
189
- name: 'mcp',
190
- description: 'list configured MCP servers and tools',
261
+ const authCommand = {
262
+ name: 'auth',
263
+ description: 'Authenticate with an OAuth-enabled MCP server',
264
+ kind: CommandKind.BUILT_IN,
265
+ action: async (context, args) => {
266
+ const serverName = args.trim();
267
+ const { config } = context.services;
268
+ if (!config) {
269
+ return {
270
+ type: 'message',
271
+ messageType: 'error',
272
+ content: 'Config not loaded.',
273
+ };
274
+ }
275
+ const mcpServers = config.getMcpServers() || {};
276
+ if (!serverName) {
277
+ // List servers that support OAuth
278
+ const oauthServers = Object.entries(mcpServers)
279
+ .filter(([_, server]) => server.oauth?.enabled)
280
+ .map(([name, _]) => name);
281
+ if (oauthServers.length === 0) {
282
+ return {
283
+ type: 'message',
284
+ messageType: 'info',
285
+ content: 'No MCP servers configured with OAuth authentication.',
286
+ };
287
+ }
288
+ return {
289
+ type: 'message',
290
+ messageType: 'info',
291
+ content: `MCP servers with OAuth authentication:\n${oauthServers.map((s) => ` - ${s}`).join('\n')}\n\nUse /mcp auth <server-name> to authenticate.`,
292
+ };
293
+ }
294
+ const server = mcpServers[serverName];
295
+ if (!server) {
296
+ return {
297
+ type: 'message',
298
+ messageType: 'error',
299
+ content: `MCP server '${serverName}' not found.`,
300
+ };
301
+ }
302
+ // Always attempt OAuth authentication, even if not explicitly configured
303
+ // The authentication process will discover OAuth requirements automatically
304
+ try {
305
+ context.ui.addItem({
306
+ type: 'info',
307
+ text: `Starting OAuth authentication for MCP server '${serverName}'...`,
308
+ }, Date.now());
309
+ // Import dynamically to avoid circular dependencies
310
+ const { MCPOAuthProvider } = await import('@machina.ai/cell-cli-core');
311
+ let oauthConfig = server.oauth;
312
+ if (!oauthConfig) {
313
+ oauthConfig = { enabled: false };
314
+ }
315
+ // Pass the MCP server URL for OAuth discovery
316
+ const mcpServerUrl = server.httpUrl || server.url;
317
+ await MCPOAuthProvider.authenticate(serverName, oauthConfig, mcpServerUrl);
318
+ context.ui.addItem({
319
+ type: 'info',
320
+ text: `✅ Successfully authenticated with MCP server '${serverName}'!`,
321
+ }, Date.now());
322
+ // Trigger tool re-discovery to pick up authenticated server
323
+ const toolRegistry = await config.getToolRegistry();
324
+ if (toolRegistry) {
325
+ context.ui.addItem({
326
+ type: 'info',
327
+ text: `Re-discovering tools from '${serverName}'...`,
328
+ }, Date.now());
329
+ await toolRegistry.discoverToolsForServer(serverName);
330
+ }
331
+ // Update the client with the new tools
332
+ const geminiClient = config.getGeminiClient();
333
+ if (geminiClient) {
334
+ await geminiClient.setTools();
335
+ }
336
+ return {
337
+ type: 'message',
338
+ messageType: 'info',
339
+ content: `Successfully authenticated and refreshed tools for '${serverName}'.`,
340
+ };
341
+ }
342
+ catch (error) {
343
+ return {
344
+ type: 'message',
345
+ messageType: 'error',
346
+ content: `Failed to authenticate with MCP server '${serverName}': ${getErrorMessage(error)}`,
347
+ };
348
+ }
349
+ },
350
+ completion: async (context, partialArg) => {
351
+ const { config } = context.services;
352
+ if (!config)
353
+ return [];
354
+ const mcpServers = config.getMcpServers() || {};
355
+ return Object.keys(mcpServers).filter((name) => name.startsWith(partialArg));
356
+ },
357
+ };
358
+ const listCommand = {
359
+ name: 'list',
360
+ description: 'List configured MCP servers and tools',
191
361
  kind: CommandKind.BUILT_IN,
192
362
  action: async (context, args) => {
193
363
  const lowerCaseArgs = args.toLowerCase().split(/\s+/).filter(Boolean);
@@ -203,4 +373,48 @@ export const mcpCommand = {
203
373
  return getMcpStatus(context, showDescriptions, showSchema, showTips);
204
374
  },
205
375
  };
376
+ const refreshCommand = {
377
+ name: 'refresh',
378
+ description: 'Refresh the list of MCP servers and tools',
379
+ kind: CommandKind.BUILT_IN,
380
+ action: async (context) => {
381
+ const { config } = context.services;
382
+ if (!config) {
383
+ return {
384
+ type: 'message',
385
+ messageType: 'error',
386
+ content: 'Config not loaded.',
387
+ };
388
+ }
389
+ const toolRegistry = await config.getToolRegistry();
390
+ if (!toolRegistry) {
391
+ return {
392
+ type: 'message',
393
+ messageType: 'error',
394
+ content: 'Could not retrieve tool registry.',
395
+ };
396
+ }
397
+ context.ui.addItem({
398
+ type: 'info',
399
+ text: 'Refreshing MCP servers and tools...',
400
+ }, Date.now());
401
+ await toolRegistry.discoverMcpTools();
402
+ // Update the client with the new tools
403
+ const geminiClient = config.getGeminiClient();
404
+ if (geminiClient) {
405
+ await geminiClient.setTools();
406
+ }
407
+ return getMcpStatus(context, false, false, false);
408
+ },
409
+ };
410
+ export const mcpCommand = {
411
+ name: 'mcp',
412
+ description: 'list configured MCP servers and tools, or authenticate with OAuth-enabled servers',
413
+ kind: CommandKind.BUILT_IN,
414
+ subCommands: [listCommand, authCommand, refreshCommand],
415
+ // Default action when no subcommand is provided
416
+ action: async (context, args) =>
417
+ // If no subcommand, run the list command
418
+ listCommand.action(context, args),
419
+ };
206
420
  //# sourceMappingURL=mcpCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/mcpCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/mcpCommand.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { getErrorMessage } from '@machina.ai/cell-cli-core';
6
+ import { getErrorMessage, loadServerHierarchicalMemory, } from '@machina.ai/cell-cli-core';
7
7
  import { MessageType } from '../types.js';
8
8
  import { CommandKind, } from './types.js';
9
9
  export const memoryCommand = {
@@ -60,9 +60,14 @@ export const memoryCommand = {
60
60
  text: 'Refreshing memory from source files...',
61
61
  }, Date.now());
62
62
  try {
63
- const result = await context.services.config?.refreshMemory();
64
- if (result) {
65
- const { memoryContent, fileCount } = result;
63
+ const config = await context.services.config;
64
+ if (config) {
65
+ const { memoryContent, fileCount } = await loadServerHierarchicalMemory(config.getWorkingDir(), config.shouldLoadMemoryFromIncludeDirectories()
66
+ ? config.getWorkspaceContext().getDirectories()
67
+ : [], config.getDebugMode(), config.getFileService(), config.getExtensionContextFilePaths(), context.services.settings.merged.memoryImportFormat || 'tree', // Use setting or default to 'tree'
68
+ config.getFileFilteringOptions(), context.services.settings.merged.memoryDiscoveryMaxDirs);
69
+ config.setUserMemory(memoryContent);
70
+ config.setGeminiMdFileCount(fileCount);
66
71
  const successMessage = memoryContent.length > 0
67
72
  ? `Memory refreshed successfully. Loaded ${memoryContent.length} characters from ${fileCount} file(s).`
68
73
  : 'Memory refreshed successfully. No memory content found.';
@@ -1 +1 @@
1
- {"version":3,"file":"memoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/memoryCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/memoryCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SlashCommand } from './types.js';
7
+ export declare const setupGithubCommand: SlashCommand;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import path from 'path';
7
+ import { execSync } from 'child_process';
8
+ import { isGitHubRepository } from '../../utils/gitUtils.js';
9
+ import { CommandKind, } from './types.js';
10
+ export const setupGithubCommand = {
11
+ name: 'setup-github',
12
+ description: 'Set up GitHub Actions',
13
+ kind: CommandKind.BUILT_IN,
14
+ action: () => {
15
+ const gitRootRepo = execSync('git rev-parse --show-toplevel', {
16
+ encoding: 'utf-8',
17
+ }).trim();
18
+ if (!isGitHubRepository()) {
19
+ throw new Error('Unable to determine the Git root directory.');
20
+ }
21
+ const version = 'v0';
22
+ const workflowBaseUrl = `https://raw.githubusercontent.com/google-github-actions/run-gemini-cli/refs/heads/${version}/examples/workflows/`;
23
+ const workflows = [
24
+ 'gemini-cli/gemini-cli.yml',
25
+ 'issue-triage/gemini-issue-automated-triage.yml',
26
+ 'issue-triage/gemini-issue-scheduled-triage.yml',
27
+ 'pr-review/gemini-pr-review.yml',
28
+ ];
29
+ const command = [
30
+ 'set -e',
31
+ `mkdir -p "${gitRootRepo}/.github/workflows"`,
32
+ ...workflows.map((workflow) => {
33
+ const fileName = path.basename(workflow);
34
+ return `curl -fsSL -o "${gitRootRepo}/.github/workflows/${fileName}" "${workflowBaseUrl}/${workflow}"`;
35
+ }),
36
+ 'echo "Workflows downloaded successfully."',
37
+ ].join(' && ');
38
+ return {
39
+ type: 'tool',
40
+ toolName: 'run_shell_command',
41
+ toolArgs: {
42
+ description: 'Setting up GitHub Actions to triage issues and review PRs with Gemini.',
43
+ command,
44
+ },
45
+ };
46
+ },
47
+ };
48
+ //# sourceMappingURL=setupGithubCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupGithubCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/setupGithubCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,GAA6B,EAAE;QACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YAC5D,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,eAAe,GAAG,qFAAqF,OAAO,sBAAsB,CAAC;QAE3I,MAAM,SAAS,GAAG;YAChB,2BAA2B;YAC3B,gDAAgD;YAChD,gDAAgD;YAChD,gCAAgC;SACjC,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,aAAa,WAAW,qBAAqB;YAC7C,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO,kBAAkB,WAAW,sBAAsB,QAAQ,MAAM,eAAe,IAAI,QAAQ,GAAG,CAAC;YACzG,CAAC,CAAC;YACF,2CAA2C;SAC5C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACf,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,mBAAmB;YAC7B,QAAQ,EAAE;gBACR,WAAW,EACT,wEAAwE;gBAC1E,OAAO;aACR;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -11,6 +11,14 @@ import { UseHistoryManagerReturn } from '../hooks/useHistoryManager.js';
11
11
  import type { HistoryItem } from '../types.js';
12
12
  import { SessionStatsState } from '../contexts/SessionContext.js';
13
13
  export interface CommandContext {
14
+ invocation?: {
15
+ /** The raw, untrimmed input string from the user. */
16
+ raw: string;
17
+ /** The primary name of the command that was matched. */
18
+ name: string;
19
+ /** The arguments string that follows the command name. */
20
+ args: string;
21
+ };
14
22
  services: {
15
23
  config: Config | null;
16
24
  settings: LoadedSettings;
@@ -43,9 +51,13 @@ export interface CommandContext {
43
51
  loadHistory: UseHistoryManagerReturn['loadHistory'];
44
52
  /** Toggles a special display mode. */
45
53
  toggleCorgiMode: () => void;
54
+ toggleVimEnabled: () => Promise<boolean>;
55
+ setGeminiMdFileCount: (count: number) => void;
46
56
  };
47
57
  session: {
48
58
  stats: SessionStatsState;
59
+ /** A transient list of shell commands the user has approved for this session. */
60
+ sessionShellAllowlist: Set<string>;
49
61
  };
50
62
  }
51
63
  /**
@@ -75,7 +87,7 @@ export interface MessageActionReturn {
75
87
  */
76
88
  export interface OpenDialogActionReturn {
77
89
  type: 'dialog';
78
- dialog: 'help' | 'auth' | 'theme' | 'editor' | 'privacy';
90
+ dialog: 'auth' | 'theme' | 'editor' | 'privacy';
79
91
  }
80
92
  /**
81
93
  * The return type for a command action that results in replacing
@@ -94,16 +106,31 @@ export interface SubmitPromptActionReturn {
94
106
  type: 'submit_prompt';
95
107
  content: string;
96
108
  }
97
- export type SlashCommandActionReturn = ToolActionReturn | MessageActionReturn | QuitActionReturn | OpenDialogActionReturn | LoadHistoryActionReturn | SubmitPromptActionReturn;
109
+ /**
110
+ * The return type for a command action that needs to pause and request
111
+ * confirmation for a set of shell commands before proceeding.
112
+ */
113
+ export interface ConfirmShellCommandsActionReturn {
114
+ type: 'confirm_shell_commands';
115
+ /** The list of shell commands that require user confirmation. */
116
+ commandsToConfirm: string[];
117
+ /** The original invocation context to be re-run after confirmation. */
118
+ originalInvocation: {
119
+ raw: string;
120
+ };
121
+ }
122
+ export type SlashCommandActionReturn = ToolActionReturn | MessageActionReturn | QuitActionReturn | OpenDialogActionReturn | LoadHistoryActionReturn | SubmitPromptActionReturn | ConfirmShellCommandsActionReturn;
98
123
  export declare enum CommandKind {
99
124
  BUILT_IN = "built-in",
100
- FILE = "file"
125
+ FILE = "file",
126
+ MCP_PROMPT = "mcp-prompt"
101
127
  }
102
128
  export interface SlashCommand {
103
129
  name: string;
104
130
  altNames?: string[];
105
131
  description: string;
106
132
  kind: CommandKind;
133
+ extensionName?: string;
107
134
  action?: (context: CommandContext, args: string) => void | SlashCommandActionReturn | Promise<void | SlashCommandActionReturn>;
108
135
  completion?: (context: CommandContext, partialArg: string) => Promise<string[]>;
109
136
  subCommands?: SlashCommand[];
@@ -7,5 +7,6 @@ export var CommandKind;
7
7
  (function (CommandKind) {
8
8
  CommandKind["BUILT_IN"] = "built-in";
9
9
  CommandKind["FILE"] = "file";
10
+ CommandKind["MCP_PROMPT"] = "mcp-prompt";
10
11
  })(CommandKind || (CommandKind = {}));
11
12
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui/commands/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkHH,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui/commands/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA8IH,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4BAAa,CAAA;IACb,wCAAyB,CAAA;AAC3B,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SlashCommand } from './types.js';
7
+ export declare const vimCommand: SlashCommand;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CommandKind } from './types.js';
7
+ export const vimCommand = {
8
+ name: 'vim',
9
+ description: 'toggle vim mode on/off',
10
+ kind: CommandKind.BUILT_IN,
11
+ action: async (context, _args) => {
12
+ const newVimState = await context.ui.toggleVimEnabled();
13
+ const message = newVimState
14
+ ? 'Entered Vim mode. Run /vim again to exit.'
15
+ : 'Exited Vim mode.';
16
+ return {
17
+ type: 'message',
18
+ messageType: 'info',
19
+ content: message,
20
+ };
21
+ },
22
+ };
23
+ //# sourceMappingURL=vimCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vimCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/vimCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAExD,MAAM,OAAO,GAAG,WAAW;YACzB,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,kBAAkB,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -3,5 +3,5 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare const shortAsciiLogo = "\n \u2584\u2588\u2588\u2588\u2588\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2588\u2588\u2593 \u2588\u2588\u2593 \n \u2592\u2588\u2588\u2580 \u2580\u2588\u2588 \u2592\u2588\u2588 \u2580\u2588 \u2593\u2588\u2588\u2592 \u2593\u2588\u2588\u2592 \n \u2592\u2593\u2588 \u2592\u2588\u2588\u2588\u2588\u2584 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592\u2593\u2593\u2584 \u2584\u2588\u2588 \u2591\u2588\u2588 \u2588\u2588 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591 \u2593\u2588\u2588\u2588\u2588\u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\n \u2591 \u2591\u2592 \u2592 \u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591 \u2592\u2591\u2593 \u2591\u2591 \u2592\u2591\u2593 \u2591\n \u2591 \u2592 \u2592 \u2592\u2592 \u2591\u2591 \u2591 \u2592 \u2591\u2591 \u2591 \u2592 \u2591\n \u2591 \u2591 \u2592 \u2591 \u2591 \u2591 \u2591 \n \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591\n \u2591 \n @machina.ai/cell \n";
7
- export declare const longAsciiLogo = "\n \u2584\u2588\u2588\u2588\u2588\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2588\u2588\u2593 \u2588\u2588\u2593 \n \u2592\u2588\u2588\u2580 \u2580\u2588\u2588 \u2592\u2588\u2588 \u2580\u2588 \u2593\u2588\u2588\u2592 \u2593\u2588\u2588\u2592 \n \u2592\u2593\u2588 \u2592\u2588\u2588\u2588\u2588\u2584 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592\u2593\u2593\u2584 \u2584\u2588\u2588 \u2591\u2588\u2588 \u2588\u2588 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591 \u2593\u2588\u2588\u2588\u2588\u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\n \u2591 \u2591\u2592 \u2592 \u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591 \u2592\u2591\u2593 \u2591\u2591 \u2592\u2591\u2593 \u2591\n \u2591 \u2592 \u2592 \u2592\u2592 \u2591\u2591 \u2591 \u2592 \u2591\u2591 \u2591 \u2592 \u2591\n \u2591 \u2591 \u2592 \u2591 \u2591 \u2591 \u2591 \n \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591\n \u2591 \n @machina.ai/cell \n";
6
+ export declare const shortAsciiLogo = "\n \u2584\u2588\u2588\u2588\u2588\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2588\u2588\u2593 \u2588\u2588\u2593 \n \u2592\u2588\u2588\u2580 \u2580\u2588\u2588 \u2592\u2588\u2588 \u2580\u2588 \u2593\u2588\u2588\u2592 \u2593\u2588\u2588\u2592 \n \u2592\u2593\u2588 \u2592\u2588\u2588\u2588\u2588\u2584 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592\u2593\u2593\u2584 \u2584\u2588\u2588 \u2591\u2588\u2588 \u2588\u2588 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591 \u2593\u2588\u2588\u2588\u2588\u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\n \u2591 \u2591\u2592 \u2592 \u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591 \u2592\u2591\u2593 \u2591\u2591 \u2592\u2591\u2593 \u2591\n \u2591 \u2592 \u2592 \u2592\u2592 \u2591\u2591 \u2591 \u2592 \u2591\u2591 \u2591 \u2592 \u2591\n \u2591 \u2591 \u2592 \u2591 \u2591 \u2591 \u2591 \n \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591\n \u2591 \n @machina.ai/cell-cli \n";
7
+ export declare const longAsciiLogo = "\n \u2584\u2588\u2588\u2588\u2588\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584 \u2588\u2588\u2593 \u2588\u2588\u2593 \n \u2592\u2588\u2588\u2580 \u2580\u2588\u2588 \u2592\u2588\u2588 \u2580\u2588 \u2593\u2588\u2588\u2592 \u2593\u2588\u2588\u2592 \n \u2592\u2593\u2588 \u2592\u2588\u2588\u2588\u2588\u2584 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592\u2593\u2593\u2584 \u2584\u2588\u2588 \u2591\u2588\u2588 \u2588\u2588 \u2592\u2588\u2588\u2591 \u2592\u2588\u2588\u2591 \n \u2592 \u2593\u2588\u2588\u2588\u2580 \u2591 \u2593\u2588\u2588\u2588\u2588\u2593\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2592\n \u2591 \u2591\u2592 \u2592 \u2591 \u2592\u2592 \u2593\u2592\u2588\u2591\u2591 \u2592\u2591\u2593 \u2591\u2591 \u2592\u2591\u2593 \u2591\n \u2591 \u2592 \u2592 \u2592\u2592 \u2591\u2591 \u2591 \u2592 \u2591\u2591 \u2591 \u2592 \u2591\n \u2591 \u2591 \u2592 \u2591 \u2591 \u2591 \u2591 \n \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591 \u2591\n \u2591 \n @machina.ai/cell-cli \n";
@@ -14,7 +14,7 @@ export const shortAsciiLogo = `
14
14
  ░ ░ ▒ ░ ░ ░ ░
15
15
  ░ ░ ░ ░ ░ ░ ░ ░
16
16
 
17
- @machina.ai/cell
17
+ @machina.ai/cell-cli
18
18
  `;
19
19
  export const longAsciiLogo = `
20
20
  ▄████▄▄ ▄▄▄▄▄▄▄▄ ██▓ ██▓
@@ -27,6 +27,6 @@ export const longAsciiLogo = `
27
27
  ░ ░ ▒ ░ ░ ░ ░
28
28
  ░ ░ ░ ░ ░ ░ ░ ░
29
29
 
30
- @machina.ai/cell
30
+ @machina.ai/cell-cli
31
31
  `;
32
32
  //# sourceMappingURL=AsciiArt.js.map