grokcodecli 0.1.2 → 0.1.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.
- package/.claude/settings.local.json +2 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/manager.js +1 -1
- package/dist/config/manager.js.map +1 -1
- package/dist/conversation/chat.d.ts +1 -0
- package/dist/conversation/chat.d.ts.map +1 -1
- package/dist/conversation/chat.js +129 -224
- package/dist/conversation/chat.js.map +1 -1
- package/dist/utils/selector.d.ts +8 -0
- package/dist/utils/selector.d.ts.map +1 -0
- package/dist/utils/selector.js +138 -0
- package/dist/utils/selector.js.map +1 -0
- package/package.json +1 -1
- package/src/cli.ts +1 -1
- package/src/config/manager.ts +1 -1
- package/src/conversation/chat.ts +132 -224
- package/src/utils/selector.ts +165 -0
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"Bash(npm cache clean:*)",
|
|
34
34
|
"Bash(npm install:*)",
|
|
35
35
|
"Bash(grok --version:*)",
|
|
36
|
-
"Bash(npm view:*)"
|
|
36
|
+
"Bash(npm view:*)",
|
|
37
|
+
"Bash(XAI_API_KEY=\"xai-TGckGPUWCb2JDfZu7autGWhnpqJqA8YJI5ZY6wp2X5rRed2Dko27UC5DwS9UsfKdSFGgxdToLrviILPu\" node -e \"\nconst { GrokChat } = require\\(''/home/papapratlinux/.npm-global/lib/node_modules/grokcodecli/dist/conversation/chat.js''\\);\n\")"
|
|
37
38
|
]
|
|
38
39
|
}
|
|
39
40
|
}
|
package/dist/cli.js
CHANGED
|
@@ -18,7 +18,7 @@ program
|
|
|
18
18
|
program
|
|
19
19
|
.command('chat', { isDefault: true })
|
|
20
20
|
.description('Start an interactive chat session')
|
|
21
|
-
.option('-m, --model <model>', 'Grok model to use', 'grok-4-
|
|
21
|
+
.option('-m, --model <model>', 'Grok model to use', 'grok-4-1-fast-reasoning')
|
|
22
22
|
.option('-r, --resume [sessionId]', 'Resume a previous conversation')
|
|
23
23
|
.action(async (options) => {
|
|
24
24
|
const config = new ConfigManager();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,gCAAgC;AAChC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config/manager.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAU9B,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAU9B,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,8BAA8B;AAC9B,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QACtB,IAAI,GAAW,CAAC;QAEhB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,QAAQ;gBACX,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC;gBAC1B,MAAM;YACR;gBACE,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,aAAa;IAChB,MAAM,CAAmB;IAEjC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAa;YACjC,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,QAAsB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,mCAAmC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACnE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,GAAqB;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAA6B,GAAM,EAAE,KAAoB;QAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAmB,EAAE;YACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;oBAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,wBAAwB;QACxB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yEAAyE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5I,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,+BAA+B,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,0BAA0B,GAAG,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,uBAAuB,CAAC;QAEvC,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAElD,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC,CAAC;gBAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC,CAAC;gBAC/F,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,cAAc;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACvD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gCAAgC;QAChC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAC9F,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAChD,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,4BAA4B,EAAE;gBACzD,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,CAAC,IAAI,EAAE,EAAE;iBAC3C;aACF,CAAC,CAAC;YAEH,aAAa,CAAC,OAAO,CAAC,CAAC;YAEvB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,YAAY,CAAC,CAAC;gBAC5F,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;gBACxF,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC;YACf,CAAC;YAED,+BAA+B;YAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAgC,CAAC;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;YAE1C,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAEpC,oBAAoB;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,mCAAmC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yEAAyE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7I,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,wEAAwE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1H,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,wCAAwC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3J,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,4CAA4C,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,4BAA4B,GAAI,KAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjG,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC3E,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,mBAAoB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAuB,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/conversation/chat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/conversation/chat.ts"],"names":[],"mappings":"AAoDA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAwE;IAC1F,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,MAAM,CAAC,cAAc,CAyB3B;gBAEU,OAAO,EAAE,WAAW;IAwB1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA0CjC,IAAI;YAsCJ,aAAa;YAqJb,aAAa;YAkBb,YAAY;YAoCZ,YAAY;YAeZ,YAAY;YAwBZ,YAAY;YAeZ,WAAW;IAiGzB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;YASH,SAAS;IAsFvB,OAAO,CAAC,YAAY;YAiBN,WAAW;YAoBX,UAAU;YAmDV,YAAY;IA6B1B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,QAAQ;YA+DF,cAAc;YAmBd,WAAW;YAoCX,oBAAoB;YAoFpB,eAAe;YAwEf,WAAW;IAOzB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -10,7 +10,7 @@ import { allTools, executeTool } from '../tools/registry.js';
|
|
|
10
10
|
import { PermissionManager } from '../permissions/manager.js';
|
|
11
11
|
import { HistoryManager } from './history.js';
|
|
12
12
|
import { ConfigManager } from '../config/manager.js';
|
|
13
|
-
import {
|
|
13
|
+
import { interactiveSelect } from '../utils/selector.js';
|
|
14
14
|
// Get version from package.json
|
|
15
15
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
16
|
const __dirname = path.dirname(__filename);
|
|
@@ -58,12 +58,48 @@ export class GrokChat {
|
|
|
58
58
|
tokenUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
59
59
|
sessionStartTime = new Date();
|
|
60
60
|
apiKey;
|
|
61
|
+
// All slash commands for autocomplete
|
|
62
|
+
static SLASH_COMMANDS = [
|
|
63
|
+
'/help', '/h',
|
|
64
|
+
'/clear', '/c',
|
|
65
|
+
'/save', '/s',
|
|
66
|
+
'/exit', '/q',
|
|
67
|
+
'/history',
|
|
68
|
+
'/resume',
|
|
69
|
+
'/rename',
|
|
70
|
+
'/export',
|
|
71
|
+
'/compact',
|
|
72
|
+
'/config',
|
|
73
|
+
'/model',
|
|
74
|
+
'/stream',
|
|
75
|
+
'/permissions',
|
|
76
|
+
'/status',
|
|
77
|
+
'/context',
|
|
78
|
+
'/cost',
|
|
79
|
+
'/usage',
|
|
80
|
+
'/doctor',
|
|
81
|
+
'/version',
|
|
82
|
+
'/init',
|
|
83
|
+
'/review',
|
|
84
|
+
'/terminal-setup',
|
|
85
|
+
'/add-dir',
|
|
86
|
+
'/pwd',
|
|
87
|
+
];
|
|
61
88
|
constructor(options) {
|
|
62
89
|
this.apiKey = options.apiKey;
|
|
63
|
-
this.client = new GrokClient(options.apiKey, options.model || 'grok-4-
|
|
90
|
+
this.client = new GrokClient(options.apiKey, options.model || 'grok-4-1-fast-reasoning');
|
|
91
|
+
// Autocomplete function for slash commands
|
|
92
|
+
const completer = (line) => {
|
|
93
|
+
if (line.startsWith('/')) {
|
|
94
|
+
const hits = GrokChat.SLASH_COMMANDS.filter(cmd => cmd.startsWith(line));
|
|
95
|
+
return [hits.length ? hits : GrokChat.SLASH_COMMANDS, line];
|
|
96
|
+
}
|
|
97
|
+
return [[], line];
|
|
98
|
+
};
|
|
64
99
|
this.rl = readline.createInterface({
|
|
65
100
|
input: process.stdin,
|
|
66
101
|
output: process.stdout,
|
|
102
|
+
completer,
|
|
67
103
|
});
|
|
68
104
|
this.permissions = new PermissionManager();
|
|
69
105
|
this.permissions.setReadlineInterface(this.rl);
|
|
@@ -71,26 +107,11 @@ export class GrokChat {
|
|
|
71
107
|
this.config = new ConfigManager();
|
|
72
108
|
}
|
|
73
109
|
async start() {
|
|
74
|
-
//
|
|
75
|
-
console.log(chalk.cyan(`
|
|
76
|
-
██████╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗
|
|
77
|
-
██╔════╝ ██╔══██╗██╔═══██╗██║ ██╔╝ ██╔════╝██╔═══██╗██╔══██╗██╔════╝
|
|
78
|
-
██║ ███╗██████╔╝██║ ██║█████╔╝ ██║ ██║ ██║██║ ██║█████╗
|
|
79
|
-
██║ ██║██╔══██╗██║ ██║██╔═██╗ ██║ ██║ ██║██║ ██║██╔══╝
|
|
80
|
-
╚██████╔╝██║ ██║╚██████╔╝██║ ██╗ ╚██████╗╚██████╔╝██████╔╝███████╗
|
|
81
|
-
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝`));
|
|
110
|
+
// Clean welcome like Claude Code
|
|
82
111
|
console.log();
|
|
83
|
-
console.log(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
`${chalk.gray('Model:')} ${chalk.green(this.client.model)}`,
|
|
87
|
-
`${chalk.gray('CWD:')} ${chalk.blue(process.cwd())}`,
|
|
88
|
-
`${chalk.gray('Tools:')} ${chalk.cyan('8 available')} ${chalk.gray('(Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch)')}`,
|
|
89
|
-
'',
|
|
90
|
-
`${chalk.gray('Commands:')} ${chalk.cyan('/help')} ${chalk.gray('•')} ${chalk.cyan('/model')} ${chalk.gray('•')} ${chalk.cyan('/doctor')} ${chalk.gray('•')} ${chalk.yellow('exit')}`,
|
|
91
|
-
], { borderColor: chalk.cyan, padding: 0 }));
|
|
92
|
-
console.log();
|
|
93
|
-
console.log(randomTip());
|
|
112
|
+
console.log(chalk.bold.cyan(' Grok Code') + chalk.dim(` v${VERSION}`));
|
|
113
|
+
console.log(chalk.dim(` ${this.client.model} • ${process.cwd()}`));
|
|
114
|
+
console.log(chalk.dim(' Type /help for commands, Tab for autocomplete'));
|
|
94
115
|
console.log();
|
|
95
116
|
// Create new session
|
|
96
117
|
this.session = await this.history.createSession(process.cwd());
|
|
@@ -385,8 +406,8 @@ export class GrokChat {
|
|
|
385
406
|
console.log(chalk.gray(' Run `grok config` in terminal to modify.\n'));
|
|
386
407
|
}
|
|
387
408
|
async handleModel(modelName) {
|
|
388
|
-
// Fetch latest models from xAI API
|
|
389
|
-
|
|
409
|
+
// Fetch latest models from xAI API
|
|
410
|
+
process.stdout.write(chalk.dim(' Fetching models...'));
|
|
390
411
|
let availableModels = [];
|
|
391
412
|
try {
|
|
392
413
|
const response = await fetch('https://api.x.ai/v1/models', {
|
|
@@ -397,170 +418,77 @@ export class GrokChat {
|
|
|
397
418
|
availableModels = data.data.map(m => m.id).sort();
|
|
398
419
|
}
|
|
399
420
|
else {
|
|
400
|
-
// Fallback to known models if API fails
|
|
401
421
|
availableModels = [
|
|
402
|
-
'grok-4-0709', 'grok-4-fast-reasoning', 'grok-4-fast-non-reasoning',
|
|
403
422
|
'grok-4-1-fast-reasoning', 'grok-4-1-fast-non-reasoning',
|
|
404
|
-
'grok-
|
|
405
|
-
'grok-
|
|
423
|
+
'grok-4-0709', 'grok-4-fast-reasoning', 'grok-4-fast-non-reasoning',
|
|
424
|
+
'grok-3', 'grok-3-mini',
|
|
406
425
|
];
|
|
407
426
|
}
|
|
408
427
|
}
|
|
409
428
|
catch {
|
|
410
|
-
// Fallback to known models
|
|
411
429
|
availableModels = [
|
|
412
|
-
'grok-4-
|
|
413
|
-
'grok-
|
|
430
|
+
'grok-4-1-fast-reasoning', 'grok-4-1-fast-non-reasoning',
|
|
431
|
+
'grok-4-0709', 'grok-3', 'grok-3-mini',
|
|
414
432
|
];
|
|
415
433
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
const grok3 = [];
|
|
431
|
-
const grok2 = [];
|
|
432
|
-
const specialized = [];
|
|
433
|
-
for (const model of availableModels) {
|
|
434
|
-
if (model.startsWith('grok-4-1')) {
|
|
435
|
-
if (model.includes('non-reasoning')) {
|
|
436
|
-
grok41NonReasoning.push(model);
|
|
437
|
-
}
|
|
438
|
-
else if (model.includes('reasoning')) {
|
|
439
|
-
grok41Reasoning.push(model);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
else if (model.startsWith('grok-4')) {
|
|
443
|
-
if (model.includes('non-reasoning')) {
|
|
444
|
-
grok4NonReasoning.push(model);
|
|
445
|
-
}
|
|
446
|
-
else if (model.includes('reasoning')) {
|
|
447
|
-
grok4Reasoning.push(model);
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
grok4Other.push(model);
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
else if (model.startsWith('grok-3')) {
|
|
454
|
-
grok3.push(model);
|
|
455
|
-
}
|
|
456
|
-
else if (model.startsWith('grok-2')) {
|
|
457
|
-
grok2.push(model);
|
|
458
|
-
}
|
|
459
|
-
else if (model.includes('code') || model.includes('vision') || model.includes('image')) {
|
|
460
|
-
specialized.push(model);
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
// Display Grok 4.1 (Latest)
|
|
464
|
-
if (grok41Reasoning.length > 0 || grok41NonReasoning.length > 0) {
|
|
465
|
-
console.log(chalk.bold.magenta(' ⭐ Grok 4.1 (Latest)'));
|
|
466
|
-
console.log(chalk.gray(' ─────────────────────────────────────────────────────────────────'));
|
|
467
|
-
for (const model of grok41Reasoning) {
|
|
468
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
469
|
-
console.log(` ${chalk.green('🧠')} ${chalk.green(model)}${current} ${chalk.yellow('[REASONING]')}`);
|
|
470
|
-
}
|
|
471
|
-
for (const model of grok41NonReasoning) {
|
|
472
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
473
|
-
console.log(` ${chalk.cyan('⚡')} ${model}${current} ${chalk.gray('[FAST]')}`);
|
|
474
|
-
}
|
|
475
|
-
console.log();
|
|
476
|
-
}
|
|
477
|
-
// Display Grok 4
|
|
478
|
-
if (grok4Reasoning.length > 0 || grok4NonReasoning.length > 0 || grok4Other.length > 0) {
|
|
479
|
-
console.log(chalk.bold.cyan(' 🚀 Grok 4'));
|
|
480
|
-
console.log(chalk.gray(' ─────────────────────────────────────────────────────────────────'));
|
|
481
|
-
for (const model of grok4Other) {
|
|
482
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
483
|
-
console.log(` ${chalk.cyan('•')} ${model}${current} ${chalk.gray('(recommended)')}`);
|
|
484
|
-
}
|
|
485
|
-
for (const model of grok4Reasoning) {
|
|
486
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
487
|
-
console.log(` ${chalk.green('🧠')} ${chalk.green(model)}${current} ${chalk.yellow('[REASONING]')}`);
|
|
488
|
-
}
|
|
489
|
-
for (const model of grok4NonReasoning) {
|
|
490
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
491
|
-
console.log(` ${chalk.cyan('⚡')} ${model}${current} ${chalk.gray('[FAST]')}`);
|
|
492
|
-
}
|
|
493
|
-
console.log();
|
|
494
|
-
}
|
|
495
|
-
// Display Grok 3
|
|
496
|
-
if (grok3.length > 0) {
|
|
497
|
-
console.log(chalk.bold.blue(' 📦 Grok 3'));
|
|
498
|
-
console.log(chalk.gray(' ─────────────────────────────────────────────────────────────────'));
|
|
499
|
-
for (const model of grok3) {
|
|
500
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
501
|
-
console.log(` ${chalk.cyan('•')} ${model}${current}`);
|
|
502
|
-
}
|
|
503
|
-
console.log();
|
|
504
|
-
}
|
|
505
|
-
// Display Grok 2
|
|
506
|
-
if (grok2.length > 0) {
|
|
507
|
-
console.log(chalk.bold.gray(' 📷 Grok 2 (Vision/Image)'));
|
|
508
|
-
console.log(chalk.gray(' ─────────────────────────────────────────────────────────────────'));
|
|
509
|
-
for (const model of grok2) {
|
|
510
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
511
|
-
console.log(` ${chalk.cyan('•')} ${model}${current}`);
|
|
434
|
+
process.stdout.write('\r\x1B[K'); // Clear the "Fetching" line
|
|
435
|
+
// If model name provided directly, switch to it
|
|
436
|
+
if (modelName) {
|
|
437
|
+
let matchedModel = modelName;
|
|
438
|
+
if (!availableModels.includes(modelName)) {
|
|
439
|
+
// Normalize: "grok41" → "grok-4-1", "4.1" → "4-1"
|
|
440
|
+
const normalized = modelName.toLowerCase()
|
|
441
|
+
.replace(/grok\s*(\d)(\d)?/g, (_, d1, d2) => d2 ? `grok-${d1}-${d2}` : `grok-${d1}`)
|
|
442
|
+
.replace(/(\d+)\.(\d+)/g, '$1-$2')
|
|
443
|
+
.replace(/\s+/g, '-');
|
|
444
|
+
const partialMatch = availableModels.find(m => m.toLowerCase().includes(normalized)) ||
|
|
445
|
+
availableModels.find(m => m.toLowerCase().includes(modelName.toLowerCase()));
|
|
446
|
+
if (partialMatch) {
|
|
447
|
+
matchedModel = partialMatch;
|
|
512
448
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
if (specialized.length > 0) {
|
|
517
|
-
console.log(chalk.bold.yellow(' 🔧 Specialized'));
|
|
518
|
-
console.log(chalk.gray(' ─────────────────────────────────────────────────────────────────'));
|
|
519
|
-
for (const model of specialized) {
|
|
520
|
-
const current = model === this.client.model ? chalk.green(' ← current') : '';
|
|
521
|
-
console.log(` ${chalk.cyan('•')} ${model}${current}`);
|
|
449
|
+
else {
|
|
450
|
+
console.log(chalk.red(` Unknown model: ${modelName}`));
|
|
451
|
+
return;
|
|
522
452
|
}
|
|
523
|
-
console.log();
|
|
524
453
|
}
|
|
525
|
-
|
|
526
|
-
console.log(chalk.
|
|
527
|
-
console.log();
|
|
454
|
+
this.client = new GrokClient(this.apiKey, matchedModel);
|
|
455
|
+
console.log(chalk.green(` ✓ Switched to ${matchedModel}`));
|
|
528
456
|
return;
|
|
529
457
|
}
|
|
530
|
-
//
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
458
|
+
// Build options for interactive selector - prioritize Grok 4.1
|
|
459
|
+
const options = [];
|
|
460
|
+
// Categorize models
|
|
461
|
+
const grok41 = availableModels.filter(m => m.startsWith('grok-4-1'));
|
|
462
|
+
const grok4 = availableModels.filter(m => m.startsWith('grok-4') && !m.startsWith('grok-4-1'));
|
|
463
|
+
const grok3 = availableModels.filter(m => m.startsWith('grok-3'));
|
|
464
|
+
const others = availableModels.filter(m => !m.startsWith('grok-4') && !m.startsWith('grok-3'));
|
|
465
|
+
// Add Grok 4.1 first (latest)
|
|
466
|
+
for (const model of grok41) {
|
|
467
|
+
const desc = model.includes('non-reasoning') ? 'fast' : model.includes('reasoning') ? 'reasoning' : '';
|
|
468
|
+
options.push({ label: model, value: model, description: desc });
|
|
469
|
+
}
|
|
470
|
+
// Add Grok 4
|
|
471
|
+
for (const model of grok4) {
|
|
472
|
+
const desc = model.includes('non-reasoning') ? 'fast' : model.includes('reasoning') ? 'reasoning' : '';
|
|
473
|
+
options.push({ label: model, value: model, description: desc });
|
|
474
|
+
}
|
|
475
|
+
// Add Grok 3
|
|
476
|
+
for (const model of grok3) {
|
|
477
|
+
options.push({ label: model, value: model });
|
|
478
|
+
}
|
|
479
|
+
// Add others
|
|
480
|
+
for (const model of others) {
|
|
481
|
+
options.push({ label: model, value: model });
|
|
482
|
+
}
|
|
483
|
+
console.log();
|
|
484
|
+
const selected = await interactiveSelect('Select model:', options, this.client.model);
|
|
485
|
+
if (selected && selected !== this.client.model) {
|
|
486
|
+
this.client = new GrokClient(this.apiKey, selected);
|
|
487
|
+
console.log(chalk.green(` ✓ Switched to ${selected}`));
|
|
488
|
+
}
|
|
489
|
+
else if (!selected) {
|
|
490
|
+
console.log(chalk.dim(' Cancelled'));
|
|
561
491
|
}
|
|
562
|
-
this.client = new GrokClient(this.apiKey, matchedModel);
|
|
563
|
-
console.log(chalk.green(`✓ Switched to model: ${matchedModel}\n`));
|
|
564
492
|
}
|
|
565
493
|
handlePermissions() {
|
|
566
494
|
console.log(chalk.cyan('\n🔐 Permission Settings\n'));
|
|
@@ -965,9 +893,8 @@ Start by checking git status and recent changes, then provide specific, actionab
|
|
|
965
893
|
}
|
|
966
894
|
}
|
|
967
895
|
async getStreamingResponse() {
|
|
968
|
-
//
|
|
969
|
-
process.stdout.write(
|
|
970
|
-
process.stdout.write(chalk.cyan('│ ') + chalk.gray('⠋ thinking...'));
|
|
896
|
+
// Simple thinking indicator like Claude Code
|
|
897
|
+
process.stdout.write('\n' + chalk.dim(' Thinking...'));
|
|
971
898
|
let fullContent = '';
|
|
972
899
|
let toolCalls = [];
|
|
973
900
|
let currentToolCall = null;
|
|
@@ -977,8 +904,8 @@ Start by checking git status and recent changes, then provide specific, actionab
|
|
|
977
904
|
const delta = chunk.choices[0]?.delta;
|
|
978
905
|
if (delta?.content) {
|
|
979
906
|
if (firstChunk) {
|
|
980
|
-
// Clear thinking indicator
|
|
981
|
-
process.stdout.write('\r' +
|
|
907
|
+
// Clear thinking indicator
|
|
908
|
+
process.stdout.write('\r' + ' '.repeat(20) + '\r\n');
|
|
982
909
|
firstChunk = false;
|
|
983
910
|
}
|
|
984
911
|
process.stdout.write(delta.content);
|
|
@@ -1012,14 +939,12 @@ Start by checking git status and recent changes, then provide specific, actionab
|
|
|
1012
939
|
if (currentToolCall && currentToolCall.id) {
|
|
1013
940
|
toolCalls.push(currentToolCall);
|
|
1014
941
|
}
|
|
1015
|
-
//
|
|
942
|
+
// End response
|
|
1016
943
|
if (fullContent) {
|
|
1017
|
-
console.log();
|
|
1018
|
-
console.log(chalk.cyan('╰──────────────────────────────────────────────────────────────────────╯'));
|
|
944
|
+
console.log('\n');
|
|
1019
945
|
}
|
|
1020
|
-
else if (toolCalls.length > 0) {
|
|
1021
|
-
process.stdout.write('\r' +
|
|
1022
|
-
console.log(chalk.cyan('╰──────────────────────────────────────────────────────────────────────╯'));
|
|
946
|
+
else if (toolCalls.length > 0 && firstChunk) {
|
|
947
|
+
process.stdout.write('\r' + ' '.repeat(20) + '\r');
|
|
1023
948
|
}
|
|
1024
949
|
// Build the message for history
|
|
1025
950
|
const message = {
|
|
@@ -1075,58 +1000,38 @@ Start by checking git status and recent changes, then provide specific, actionab
|
|
|
1075
1000
|
});
|
|
1076
1001
|
return;
|
|
1077
1002
|
}
|
|
1078
|
-
//
|
|
1079
|
-
|
|
1080
|
-
Read: '📖', Write: '✏️', Edit: '🔧', Bash: '⚡',
|
|
1081
|
-
Glob: '🔍', Grep: '🔎', WebFetch: '🌐', WebSearch: '🔍'
|
|
1082
|
-
};
|
|
1083
|
-
const toolColors = {
|
|
1084
|
-
Read: chalk.green, Write: chalk.yellow, Edit: chalk.yellow, Bash: chalk.red,
|
|
1085
|
-
Glob: chalk.green, Grep: chalk.green, WebFetch: chalk.green, WebSearch: chalk.green
|
|
1086
|
-
};
|
|
1087
|
-
const icon = toolIcons[name] || '🔧';
|
|
1088
|
-
const color = toolColors[name] || chalk.gray;
|
|
1089
|
-
console.log();
|
|
1090
|
-
console.log(color('┌─ ') + chalk.bold(`${icon} ${name}`) + color(' ─────────────────────────────────────────────────'));
|
|
1091
|
-
// Show details based on tool type
|
|
1003
|
+
// Simple tool display like Claude Code
|
|
1004
|
+
let toolInfo = '';
|
|
1092
1005
|
if (name === 'Bash') {
|
|
1093
|
-
|
|
1006
|
+
toolInfo = chalk.dim('$ ') + params.command.slice(0, 60);
|
|
1007
|
+
}
|
|
1008
|
+
else if (name === 'Read') {
|
|
1009
|
+
toolInfo = params.file_path;
|
|
1010
|
+
}
|
|
1011
|
+
else if (name === 'Write') {
|
|
1012
|
+
toolInfo = params.file_path;
|
|
1094
1013
|
}
|
|
1095
|
-
else if (name === '
|
|
1096
|
-
|
|
1014
|
+
else if (name === 'Edit') {
|
|
1015
|
+
toolInfo = params.file_path;
|
|
1097
1016
|
}
|
|
1098
|
-
else if (name === 'Glob'
|
|
1099
|
-
|
|
1017
|
+
else if (name === 'Glob') {
|
|
1018
|
+
toolInfo = params.pattern;
|
|
1019
|
+
}
|
|
1020
|
+
else if (name === 'Grep') {
|
|
1021
|
+
toolInfo = params.pattern;
|
|
1100
1022
|
}
|
|
1101
1023
|
else if (name === 'WebFetch') {
|
|
1102
|
-
|
|
1024
|
+
toolInfo = params.url.slice(0, 50);
|
|
1103
1025
|
}
|
|
1104
1026
|
else if (name === 'WebSearch') {
|
|
1105
|
-
|
|
1027
|
+
toolInfo = params.query;
|
|
1106
1028
|
}
|
|
1029
|
+
console.log(chalk.dim(' ● ') + chalk.cyan(name) + chalk.dim(' ' + toolInfo));
|
|
1107
1030
|
// Execute
|
|
1108
1031
|
const result = await executeTool(name, params);
|
|
1109
|
-
if (result.success) {
|
|
1110
|
-
console.log(
|
|
1111
|
-
console.log(color('│ ') + chalk.green('✓ Success'));
|
|
1112
|
-
if (result.output && result.output.length < 500) {
|
|
1113
|
-
const lines = result.output.split('\n').slice(0, 10);
|
|
1114
|
-
for (const line of lines) {
|
|
1115
|
-
console.log(color('│ ') + chalk.gray(line.slice(0, 80)));
|
|
1116
|
-
}
|
|
1117
|
-
if (result.output.split('\n').length > 10) {
|
|
1118
|
-
console.log(color('│ ') + chalk.gray('... (truncated)'));
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
else if (result.output) {
|
|
1122
|
-
console.log(color('│ ') + chalk.gray(result.output.slice(0, 200) + '... (truncated)'));
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
else {
|
|
1126
|
-
console.log(color('│'));
|
|
1127
|
-
console.log(color('│ ') + chalk.red('✗ Failed: ') + chalk.red(result.error || 'Unknown error'));
|
|
1032
|
+
if (!result.success) {
|
|
1033
|
+
console.log(chalk.red(' ✗ ') + chalk.red(result.error || 'Failed'));
|
|
1128
1034
|
}
|
|
1129
|
-
console.log(color('└──────────────────────────────────────────────────────────────────────'));
|
|
1130
1035
|
this.messages.push({
|
|
1131
1036
|
role: 'tool',
|
|
1132
1037
|
tool_call_id: toolCall.id,
|