grok-cli-hurry-mode 1.0.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.
- package/.grok/settings.json +3 -0
- package/LICENSE +21 -0
- package/README.md +452 -0
- package/dist/agent/grok-agent.d.ts +54 -0
- package/dist/agent/grok-agent.js +674 -0
- package/dist/agent/grok-agent.js.map +1 -0
- package/dist/agent/index.d.ts +14 -0
- package/dist/agent/index.js +137 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +2 -0
- package/dist/commands/mcp.js +245 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/grok/client.d.ts +49 -0
- package/dist/grok/client.js +85 -0
- package/dist/grok/client.js.map +1 -0
- package/dist/grok/tools.d.ts +8 -0
- package/dist/grok/tools.js +357 -0
- package/dist/grok/tools.js.map +1 -0
- package/dist/hooks/use-enhanced-input.d.ts +37 -0
- package/dist/hooks/use-enhanced-input.js +217 -0
- package/dist/hooks/use-enhanced-input.js.map +1 -0
- package/dist/hooks/use-input-handler.d.ts +34 -0
- package/dist/hooks/use-input-handler.js +611 -0
- package/dist/hooks/use-input-handler.js.map +1 -0
- package/dist/hooks/use-input-history.d.ts +9 -0
- package/dist/hooks/use-input-history.js +64 -0
- package/dist/hooks/use-input-history.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +151949 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +29 -0
- package/dist/mcp/client.js +167 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +13 -0
- package/dist/mcp/config.js +51 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/transports.d.ts +51 -0
- package/dist/mcp/transports.js +229 -0
- package/dist/mcp/transports.js.map +1 -0
- package/dist/node_modules/react/index.js +1841 -0
- package/dist/tools/bash.d.ts +10 -0
- package/dist/tools/bash.js +81 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/confirmation-tool.d.ts +16 -0
- package/dist/tools/confirmation-tool.js +75 -0
- package/dist/tools/confirmation-tool.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/morph-editor.d.ts +36 -0
- package/dist/tools/morph-editor.js +347 -0
- package/dist/tools/morph-editor.js.map +1 -0
- package/dist/tools/search.d.ts +69 -0
- package/dist/tools/search.js +341 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/text-editor.d.ts +16 -0
- package/dist/tools/text-editor.js +565 -0
- package/dist/tools/text-editor.js.map +1 -0
- package/dist/tools/todo-tool.d.ts +20 -0
- package/dist/tools/todo-tool.js +135 -0
- package/dist/tools/todo-tool.js.map +1 -0
- package/dist/types/index.d.ts +30 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/app.d.ts +7 -0
- package/dist/ui/app.js +160 -0
- package/dist/ui/app.js.map +1 -0
- package/dist/ui/components/api-key-input.d.ts +7 -0
- package/dist/ui/components/api-key-input.js +124 -0
- package/dist/ui/components/api-key-input.js.map +1 -0
- package/dist/ui/components/chat-history.d.ts +8 -0
- package/dist/ui/components/chat-history.js +177 -0
- package/dist/ui/components/chat-history.js.map +1 -0
- package/dist/ui/components/chat-input.d.ts +9 -0
- package/dist/ui/components/chat-input.js +87 -0
- package/dist/ui/components/chat-input.js.map +1 -0
- package/dist/ui/components/chat-interface.d.ts +8 -0
- package/dist/ui/components/chat-interface.js +344 -0
- package/dist/ui/components/chat-interface.js.map +1 -0
- package/dist/ui/components/command-suggestions.d.ts +17 -0
- package/dist/ui/components/command-suggestions.js +68 -0
- package/dist/ui/components/command-suggestions.js.map +1 -0
- package/dist/ui/components/confirmation-dialog.d.ts +11 -0
- package/dist/ui/components/confirmation-dialog.js +167 -0
- package/dist/ui/components/confirmation-dialog.js.map +1 -0
- package/dist/ui/components/diff-renderer.d.ts +13 -0
- package/dist/ui/components/diff-renderer.js +217 -0
- package/dist/ui/components/diff-renderer.js.map +1 -0
- package/dist/ui/components/loading-spinner.d.ts +8 -0
- package/dist/ui/components/loading-spinner.js +92 -0
- package/dist/ui/components/loading-spinner.js.map +1 -0
- package/dist/ui/components/mcp-status.d.ts +5 -0
- package/dist/ui/components/mcp-status.js +74 -0
- package/dist/ui/components/mcp-status.js.map +1 -0
- package/dist/ui/components/model-selection.d.ts +12 -0
- package/dist/ui/components/model-selection.js +28 -0
- package/dist/ui/components/model-selection.js.map +1 -0
- package/dist/ui/shared/max-sized-box.d.ts +8 -0
- package/dist/ui/shared/max-sized-box.js +15 -0
- package/dist/ui/shared/max-sized-box.js.map +1 -0
- package/dist/ui/utils/code-colorizer.d.ts +2 -0
- package/dist/ui/utils/code-colorizer.js +18 -0
- package/dist/ui/utils/code-colorizer.js.map +1 -0
- package/dist/ui/utils/colors.d.ts +14 -0
- package/dist/ui/utils/colors.js +18 -0
- package/dist/ui/utils/colors.js.map +1 -0
- package/dist/ui/utils/markdown-renderer.d.ts +4 -0
- package/dist/ui/utils/markdown-renderer.js +29 -0
- package/dist/ui/utils/markdown-renderer.js.map +1 -0
- package/dist/utils/confirmation-service.d.ts +33 -0
- package/dist/utils/confirmation-service.js +113 -0
- package/dist/utils/confirmation-service.js.map +1 -0
- package/dist/utils/custom-instructions.d.ts +1 -0
- package/dist/utils/custom-instructions.js +53 -0
- package/dist/utils/custom-instructions.js.map +1 -0
- package/dist/utils/model-config.d.ts +28 -0
- package/dist/utils/model-config.js +49 -0
- package/dist/utils/model-config.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +94 -0
- package/dist/utils/settings-manager.js +275 -0
- package/dist/utils/settings-manager.js.map +1 -0
- package/dist/utils/settings.d.ts +1 -0
- package/dist/utils/settings.js +8 -0
- package/dist/utils/settings.js.map +1 -0
- package/dist/utils/text-utils.d.ts +80 -0
- package/dist/utils/text-utils.js +197 -0
- package/dist/utils/text-utils.js.map +1 -0
- package/dist/utils/token-counter.d.ts +33 -0
- package/dist/utils/token-counter.js +83 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/dist/yoga.wasm +0 -0
- package/eslint.config.mjs +28 -0
- package/fix.awk +41 -0
- package/grok-logo-screenshot.png +0 -0
- package/package.json +68 -0
- package/sed_cmd.sh +35 -0
- package/temp.txt +29 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
export declare class TokenCounter {
|
2
|
+
private encoder;
|
3
|
+
constructor(model?: string);
|
4
|
+
/**
|
5
|
+
* Count tokens in a string
|
6
|
+
*/
|
7
|
+
countTokens(text: string): number;
|
8
|
+
/**
|
9
|
+
* Count tokens in messages array (for chat completions)
|
10
|
+
*/
|
11
|
+
countMessageTokens(messages: Array<{
|
12
|
+
role: string;
|
13
|
+
content: string | null;
|
14
|
+
[key: string]: any;
|
15
|
+
}>): number;
|
16
|
+
/**
|
17
|
+
* Estimate tokens for streaming content
|
18
|
+
* This is an approximation since we don't have the full response yet
|
19
|
+
*/
|
20
|
+
estimateStreamingTokens(accumulatedContent: string): number;
|
21
|
+
/**
|
22
|
+
* Clean up resources
|
23
|
+
*/
|
24
|
+
dispose(): void;
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Format token count for display (e.g., 1.2k for 1200)
|
28
|
+
*/
|
29
|
+
export declare function formatTokenCount(count: number): string;
|
30
|
+
/**
|
31
|
+
* Create a token counter instance
|
32
|
+
*/
|
33
|
+
export declare function createTokenCounter(model?: string): TokenCounter;
|
@@ -0,0 +1,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TokenCounter = void 0;
|
4
|
+
exports.formatTokenCount = formatTokenCount;
|
5
|
+
exports.createTokenCounter = createTokenCounter;
|
6
|
+
const tiktoken_1 = require("tiktoken");
|
7
|
+
class TokenCounter {
|
8
|
+
constructor(model = 'gpt-4') {
|
9
|
+
try {
|
10
|
+
// Try to get encoding for specific model
|
11
|
+
this.encoder = (0, tiktoken_1.encoding_for_model)(model);
|
12
|
+
}
|
13
|
+
catch {
|
14
|
+
// Fallback to cl100k_base (used by GPT-4 and most modern models)
|
15
|
+
this.encoder = (0, tiktoken_1.get_encoding)('cl100k_base');
|
16
|
+
}
|
17
|
+
}
|
18
|
+
/**
|
19
|
+
* Count tokens in a string
|
20
|
+
*/
|
21
|
+
countTokens(text) {
|
22
|
+
if (!text)
|
23
|
+
return 0;
|
24
|
+
return this.encoder.encode(text).length;
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Count tokens in messages array (for chat completions)
|
28
|
+
*/
|
29
|
+
countMessageTokens(messages) {
|
30
|
+
let totalTokens = 0;
|
31
|
+
for (const message of messages) {
|
32
|
+
// Every message follows <|start|>{role/name}\n{content}<|end|\>\n
|
33
|
+
totalTokens += 3; // Base tokens per message
|
34
|
+
if (message.content && typeof message.content === 'string') {
|
35
|
+
totalTokens += this.countTokens(message.content);
|
36
|
+
}
|
37
|
+
if (message.role) {
|
38
|
+
totalTokens += this.countTokens(message.role);
|
39
|
+
}
|
40
|
+
// Add extra tokens for tool calls if present
|
41
|
+
if (message.tool_calls) {
|
42
|
+
totalTokens += this.countTokens(JSON.stringify(message.tool_calls));
|
43
|
+
}
|
44
|
+
}
|
45
|
+
totalTokens += 3; // Every reply is primed with <|start|>assistant<|message|>
|
46
|
+
return totalTokens;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* Estimate tokens for streaming content
|
50
|
+
* This is an approximation since we don't have the full response yet
|
51
|
+
*/
|
52
|
+
estimateStreamingTokens(accumulatedContent) {
|
53
|
+
return this.countTokens(accumulatedContent);
|
54
|
+
}
|
55
|
+
/**
|
56
|
+
* Clean up resources
|
57
|
+
*/
|
58
|
+
dispose() {
|
59
|
+
this.encoder.free();
|
60
|
+
}
|
61
|
+
}
|
62
|
+
exports.TokenCounter = TokenCounter;
|
63
|
+
/**
|
64
|
+
* Format token count for display (e.g., 1.2k for 1200)
|
65
|
+
*/
|
66
|
+
function formatTokenCount(count) {
|
67
|
+
if (count <= 999) {
|
68
|
+
return count.toString();
|
69
|
+
}
|
70
|
+
if (count < 1000000) {
|
71
|
+
const k = count / 1000;
|
72
|
+
return k % 1 === 0 ? `${k}k` : `${k.toFixed(1)}k`;
|
73
|
+
}
|
74
|
+
const m = count / 1000000;
|
75
|
+
return m % 1 === 0 ? `${m}m` : `${m.toFixed(1)}m`;
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Create a token counter instance
|
79
|
+
*/
|
80
|
+
function createTokenCounter(model) {
|
81
|
+
return new TokenCounter(model);
|
82
|
+
}
|
83
|
+
//# sourceMappingURL=token-counter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":";;;AAuEA,4CAYC;AAKD,gDAEC;AA1FD,uCAAsE;AAEtE,MAAa,YAAY;IAGvB,YAAY,QAAgB,OAAO;QACjC,IAAI,CAAC;YACH,yCAAyC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAA,6BAAkB,EAAC,KAAY,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,IAAI,CAAC,OAAO,GAAG,IAAA,uBAAY,EAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAA6E;QAC9F,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,kEAAkE;YAClE,WAAW,IAAI,CAAC,CAAC,CAAC,0BAA0B;YAE5C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3D,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YAED,6CAA6C;YAC7C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,WAAW,IAAI,CAAC,CAAC,CAAC,2DAA2D;QAE7E,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,uBAAuB,CAAC,kBAA0B;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF;AAhED,oCAgEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,GAAG,OAAS,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,GAAG,KAAK,GAAG,OAAS,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/yoga.wasm
ADDED
Binary file
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
2
|
+
import typescriptParser from '@typescript-eslint/parser';
|
3
|
+
|
4
|
+
export default [
|
5
|
+
{
|
6
|
+
files: ['**/*.ts', '**/*.tsx'],
|
7
|
+
languageOptions: {
|
8
|
+
parser: typescriptParser,
|
9
|
+
ecmaVersion: 'latest',
|
10
|
+
sourceType: 'module',
|
11
|
+
globals: {
|
12
|
+
console: 'readonly',
|
13
|
+
process: 'readonly',
|
14
|
+
Buffer: 'readonly',
|
15
|
+
__dirname: 'readonly',
|
16
|
+
__filename: 'readonly',
|
17
|
+
global: 'readonly',
|
18
|
+
},
|
19
|
+
},
|
20
|
+
plugins: {
|
21
|
+
'@typescript-eslint': typescriptEslint,
|
22
|
+
},
|
23
|
+
rules: {
|
24
|
+
'@typescript-eslint/no-unused-vars': 'error',
|
25
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
26
|
+
},
|
27
|
+
},
|
28
|
+
];
|
package/fix.awk
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
/ \/\/ Generate logo with margin to match Ink paddingX={2}/ {
|
2
|
+
print " // Generate logo with margin to match Ink paddingX={2}"
|
3
|
+
print " const grokLogo = cfonts.render(\"GROK\", {"
|
4
|
+
print " font: \"3d\","
|
5
|
+
print " align: \"left\","
|
6
|
+
print " colors: [\"yellow\", \"red\"],"
|
7
|
+
print " space: true,"
|
8
|
+
print " maxLength: 0,"
|
9
|
+
print " gradient: [\"yellow\", \"red\", \"cyan\"],"
|
10
|
+
print " independentGradient: false,"
|
11
|
+
print " transitionGradient: true,"
|
12
|
+
print " env: \"node\","
|
13
|
+
print " });"
|
14
|
+
print ""
|
15
|
+
print " const hurryLogo = cfonts.render(\"HURRY MODE\", {"
|
16
|
+
print " font: \"simple\","
|
17
|
+
print " align: \"left\","
|
18
|
+
print " colors: [\"yellow\", \"red\"],"
|
19
|
+
print " space: true,"
|
20
|
+
print " maxLength: 0,"
|
21
|
+
print " gradient: [\"yellow\", \"red\", \"cyan\"],"
|
22
|
+
print " independentGradient: false,"
|
23
|
+
print " transitionGradient: true,"
|
24
|
+
print " env: \"node\","
|
25
|
+
print " });"
|
26
|
+
print ""
|
27
|
+
print " const logoOutput = grokLogo.string + \"\\\\n\" + hurryLogo.string;"
|
28
|
+
print ""
|
29
|
+
print " // Add horizontal margin (2 spaces) to match Ink paddingX={2}"
|
30
|
+
print " const logoLines = logoOutput.split(\"\\\\n\");"
|
31
|
+
skip = 1
|
32
|
+
next
|
33
|
+
}
|
34
|
+
/ const logoLines = \(logoOutput as any\).string.split\("\\\\n"\);/ {
|
35
|
+
if (skip) {
|
36
|
+
skip = 0
|
37
|
+
next
|
38
|
+
}
|
39
|
+
}
|
40
|
+
skip { next }
|
41
|
+
{ print }
|
Binary file
|
package/package.json
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
{
|
2
|
+
"type": "module",
|
3
|
+
"name": "grok-cli-hurry-mode",
|
4
|
+
"version": "1.0.0",
|
5
|
+
"description": "An open-source AI agent that brings the power of Grok directly into your terminal.",
|
6
|
+
"main": "dist/index.js",
|
7
|
+
"exports": {
|
8
|
+
".": {
|
9
|
+
"import": "./dist/index.js",
|
10
|
+
"types": "./dist/index.d.ts"
|
11
|
+
}
|
12
|
+
},
|
13
|
+
"bin": {
|
14
|
+
"grok": "dist/index.js"
|
15
|
+
},
|
16
|
+
"scripts": {
|
17
|
+
"build": "bun x tsc",
|
18
|
+
"build:bun": "bun run tsc",
|
19
|
+
"dev": "bun run src/index.ts",
|
20
|
+
"dev:node": "tsx src/index.ts",
|
21
|
+
"start": "node dist/index.js",
|
22
|
+
"start:bun": "bun run dist/index.js",
|
23
|
+
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
24
|
+
"typecheck": "tsc --noEmit",
|
25
|
+
"install:bun": "bun install"
|
26
|
+
},
|
27
|
+
"keywords": [
|
28
|
+
"cli",
|
29
|
+
"agent",
|
30
|
+
"text-editor",
|
31
|
+
"grok",
|
32
|
+
"ai"
|
33
|
+
],
|
34
|
+
"author": "hinetapora",
|
35
|
+
"license": "MIT",
|
36
|
+
"dependencies": {
|
37
|
+
"@modelcontextprotocol/sdk": "^1.17.0",
|
38
|
+
"axios": "^1.7.0",
|
39
|
+
"cfonts": "^3.3.0",
|
40
|
+
"chalk": "^5.3.0",
|
41
|
+
"commander": "^12.0.0",
|
42
|
+
"dotenv": "^16.4.0",
|
43
|
+
"enquirer": "^2.4.1",
|
44
|
+
"fs-extra": "^11.2.0",
|
45
|
+
"ink": "^4.4.1",
|
46
|
+
"marked": "^15.0.12",
|
47
|
+
"marked-terminal": "^7.3.0",
|
48
|
+
"openai": "^5.10.1",
|
49
|
+
"react": "^18.3.1",
|
50
|
+
"ripgrep-node": "^1.0.0",
|
51
|
+
"tiktoken": "^1.0.21"
|
52
|
+
},
|
53
|
+
"devDependencies": {
|
54
|
+
"@eslint/js": "^9.37.0",
|
55
|
+
"@types/fs-extra": "^11.0.2",
|
56
|
+
"@types/node": "^20.8.0",
|
57
|
+
"@types/react": "^18.3.3",
|
58
|
+
"@typescript-eslint/eslint-plugin": "^8.37.0",
|
59
|
+
"@typescript-eslint/parser": "^8.37.0",
|
60
|
+
"esbuild": "^0.25.10",
|
61
|
+
"eslint": "^9.31.0",
|
62
|
+
"tsx": "^4.0.0"
|
63
|
+
},
|
64
|
+
"engines": {
|
65
|
+
"node": ">=18.0.0"
|
66
|
+
},
|
67
|
+
"preferGlobal": true
|
68
|
+
}
|
package/sed_cmd.sh
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
sed -i '' 's|const logoOutput = cfonts.render("GROK\\nHURRY MODE", {
|
2
|
+
font: "3d",
|
3
|
+
align: "left",
|
4
|
+
colors: ["yellow", "red"],
|
5
|
+
space: true,
|
6
|
+
maxLength: "0",
|
7
|
+
gradient: ["yellow", "red", "cyan"],
|
8
|
+
independentGradient: false,
|
9
|
+
transitionGradient: true,
|
10
|
+
env: "node",
|
11
|
+
});|const grokLogo = cfonts.render("GROK", {
|
12
|
+
font: "3d",
|
13
|
+
align: "left",
|
14
|
+
colors: ["yellow", "red"],
|
15
|
+
space: true,
|
16
|
+
maxLength: "0",
|
17
|
+
gradient: ["yellow", "red", "cyan"],
|
18
|
+
independentGradient: false,
|
19
|
+
transitionGradient: true,
|
20
|
+
env: "node",
|
21
|
+
});
|
22
|
+
|
23
|
+
const hurryLogo = cfonts.render("HURRY MODE", {
|
24
|
+
font: "simple",
|
25
|
+
align: "left",
|
26
|
+
colors: ["yellow", "red"],
|
27
|
+
space: true,
|
28
|
+
maxLength: "0",
|
29
|
+
gradient: ["yellow", "red", "cyan"],
|
30
|
+
independentGradient: false,
|
31
|
+
transitionGradient: true,
|
32
|
+
env: "node",
|
33
|
+
});
|
34
|
+
|
35
|
+
const logoOutput = grokLogo.string + "\\n" + hurryLogo.string;|g' src/ui/components/chat-interface.tsx
|
package/temp.txt
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
// Generate logo
|
2
|
+
const grokLogo = cfonts.render("GROK", {
|
3
|
+
font: "3d",
|
4
|
+
align: "left",
|
5
|
+
colors: ["yellow", "red"],
|
6
|
+
space: true,
|
7
|
+
maxLength: 0,
|
8
|
+
gradient: ["yellow", "red", "cyan"],
|
9
|
+
independentGradient: false,
|
10
|
+
transitionGradient: true,
|
11
|
+
env: "node",
|
12
|
+
});
|
13
|
+
|
14
|
+
const hurryLogo = cfonts.render("HURRY MODE", {
|
15
|
+
font: "simple",
|
16
|
+
align: "left",
|
17
|
+
colors: ["yellow", "red"],
|
18
|
+
space: true,
|
19
|
+
maxLength: 0,
|
20
|
+
gradient: ["yellow", "red", "cyan"],
|
21
|
+
independentGradient: false,
|
22
|
+
transitionGradient: true,
|
23
|
+
env: "node",
|
24
|
+
});
|
25
|
+
|
26
|
+
const logoOutput = grokLogo.string + "\n" + hurryLogo.string;
|
27
|
+
|
28
|
+
// Add horizontal margin (2 spaces) to match Ink paddingX={2}
|
29
|
+
const logoLines = logoOutput.split("\n");
|