@defai.digital/ax-cli 1.2.3 → 2.0.1
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/README.md +13 -0
- package/config/messages.yaml +0 -1
- package/config/prompts.yaml +1 -6
- package/dist/agent/context-manager.d.ts +9 -8
- package/dist/agent/context-manager.js +25 -15
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/{grok-agent.d.ts → llm-agent.d.ts} +48 -8
- package/dist/agent/{grok-agent.js → llm-agent.js} +265 -192
- package/dist/agent/llm-agent.js.map +1 -0
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/setup.d.ts +5 -0
- package/dist/commands/setup.js +105 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/hooks/use-input-handler.d.ts +3 -3
- package/dist/hooks/use-input-handler.js +2 -2
- package/dist/hooks/use-input-handler.js.map +1 -1
- package/dist/index.js +15 -12
- package/dist/index.js.map +1 -1
- package/dist/{grok → llm}/client.d.ts +11 -11
- package/dist/{grok → llm}/client.js +6 -6
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/tools.d.ts +8 -0
- package/dist/{grok → llm}/tools.js +2 -33
- package/dist/llm/tools.js.map +1 -0
- package/dist/{grok → llm}/types.d.ts +3 -3
- package/dist/llm/types.js.map +1 -0
- package/dist/schemas/api-schemas.d.ts +9 -9
- package/dist/schemas/api-schemas.js +13 -13
- package/dist/schemas/api-schemas.js.map +1 -1
- package/dist/tools/bash.js +25 -15
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search.d.ts +2 -2
- package/dist/tools/search.js +21 -13
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +85 -59
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/tools/todo-tool.js +14 -0
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/ui/app.js +1 -1
- package/dist/ui/app.js.map +1 -1
- package/dist/ui/components/api-key-input.d.ts +2 -2
- package/dist/ui/components/api-key-input.js +2 -2
- package/dist/ui/components/api-key-input.js.map +1 -1
- package/dist/ui/components/chat-history.d.ts +1 -1
- package/dist/ui/components/chat-interface.d.ts +2 -2
- package/dist/ui/components/chat-interface.js +1 -1
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/mcp-status.js +1 -1
- package/dist/ui/components/mcp-status.js.map +1 -1
- package/dist/ui/components/model-selection.js +1 -1
- package/dist/ui/components/model-selection.js.map +1 -1
- package/dist/utils/confirmation-service.d.ts +8 -0
- package/dist/utils/confirmation-service.js +26 -0
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/path-validator.d.ts +36 -0
- package/dist/utils/path-validator.js +61 -0
- package/dist/utils/path-validator.js.map +1 -1
- package/dist/utils/prompt-builder.d.ts +0 -1
- package/dist/utils/prompt-builder.js +1 -1
- package/dist/utils/prompt-builder.js.map +1 -1
- package/dist/utils/settings-manager.js +1 -1
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/tool-helpers.d.ts +25 -0
- package/dist/utils/tool-helpers.js +53 -0
- package/dist/utils/tool-helpers.js.map +1 -0
- package/package.json +13 -4
- package/automatosx.config.json +0 -333
- package/dist/agent/grok-agent.js.map +0 -1
- package/dist/grok/client.js.map +0 -1
- package/dist/grok/tools.d.ts +0 -8
- package/dist/grok/tools.js.map +0 -1
- package/dist/grok/types.js.map +0 -1
- package/dist/tools/morph-editor.d.ts +0 -36
- package/dist/tools/morph-editor.js +0 -308
- package/dist/tools/morph-editor.js.map +0 -1
- package/packages/schemas/dist/index.d.ts +0 -14
- package/packages/schemas/dist/index.d.ts.map +0 -1
- package/packages/schemas/dist/index.js +0 -19
- package/packages/schemas/dist/index.js.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
- package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.js +0 -243
- package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
- package/packages/schemas/dist/public/core/enums.d.ts +0 -227
- package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/enums.js +0 -222
- package/packages/schemas/dist/public/core/enums.js.map +0 -1
- package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
- package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/id-types.js +0 -136
- package/packages/schemas/dist/public/core/id-types.js.map +0 -1
- /package/dist/{grok → llm}/types.js +0 -0
package/README.md
CHANGED
|
@@ -148,6 +148,19 @@ ax-cli mcp remove linear
|
|
|
148
148
|
|
|
149
149
|
[MCP Integration Guide →](docs/mcp.md)
|
|
150
150
|
|
|
151
|
+
## 🤖 Advanced Multi-Agent Orchestration
|
|
152
|
+
|
|
153
|
+
**AX CLI** is designed as a focused, single-agent CLI tool for direct AI-powered development tasks. For advanced multi-agent orchestration, collaborative AI workflows, and complex task automation, we recommend **[AutomatosX](https://automatosx.com)**.
|
|
154
|
+
|
|
155
|
+
### When to Use AutomatosX Instead
|
|
156
|
+
|
|
157
|
+
- **Multi-Agent Collaboration**: Coordinate multiple AI agents working together on complex projects
|
|
158
|
+
- **Specialized Agent Teams**: Use domain-specific agents (QA, architecture, security, etc.)
|
|
159
|
+
- **Advanced Workflows**: Build sophisticated automation pipelines with agent orchestration
|
|
160
|
+
- **Enterprise Scale**: Large-scale projects requiring parallel agent execution and coordination
|
|
161
|
+
|
|
162
|
+
AX CLI focuses on being a reliable, single-agent development assistant, while AutomatosX provides the full multi-agent orchestration platform for advanced use cases.
|
|
163
|
+
|
|
151
164
|
## 🏗️ Architecture
|
|
152
165
|
|
|
153
166
|
AX CLI implements enterprise-grade architecture with:
|
package/config/messages.yaml
CHANGED
|
@@ -14,7 +14,6 @@ errors:
|
|
|
14
14
|
warnings:
|
|
15
15
|
context_pruning: "Context pruning active to maintain performance"
|
|
16
16
|
near_context_limit: "Near context limit! Consider starting a new conversation soon"
|
|
17
|
-
morph_not_available: "MORPH_API_KEY not found. Morph editor functionality will be limited"
|
|
18
17
|
|
|
19
18
|
success:
|
|
20
19
|
file_created: "File created successfully"
|
package/config/prompts.yaml
CHANGED
|
@@ -22,9 +22,6 @@ system_prompt:
|
|
|
22
22
|
description: "Create NEW files only. Never use on existing files."
|
|
23
23
|
- name: str_replace_editor
|
|
24
24
|
description: "Edit existing files with precise string replacement. Primary editing tool."
|
|
25
|
-
- name: edit_file
|
|
26
|
-
description: "High-speed bulk editing via Morph Fast Apply (4,500+ tokens/sec, 98% accuracy)"
|
|
27
|
-
optional: true
|
|
28
25
|
- name: bash
|
|
29
26
|
description: "Execute shell commands for git, npm, testing, searching, and system operations"
|
|
30
27
|
- name: search
|
|
@@ -54,7 +51,7 @@ system_prompt:
|
|
|
54
51
|
title: "INTELLIGENT WORKFLOW PATTERNS"
|
|
55
52
|
guidelines:
|
|
56
53
|
- "Exploration: search → view_file → understand → act"
|
|
57
|
-
- "Editing: view_file → str_replace_editor
|
|
54
|
+
- "Editing: view_file → str_replace_editor → validate"
|
|
58
55
|
- "Creation: plan → create_file → test"
|
|
59
56
|
- "Debugging: search for errors → analyze → fix → verify"
|
|
60
57
|
- "Refactoring: understand scope → create_todo_list → execute incrementally"
|
|
@@ -66,7 +63,6 @@ system_prompt:
|
|
|
66
63
|
- "ALWAYS view_file before str_replace_editor to ensure context"
|
|
67
64
|
- "Use search when you don't know exact file locations"
|
|
68
65
|
- "Use bash for git operations, package management, testing"
|
|
69
|
-
- "Use edit_file (Morph) for large-scale refactors if available"
|
|
70
66
|
- "Create todo lists for tasks with 3+ distinct steps"
|
|
71
67
|
|
|
72
68
|
search_and_discovery:
|
|
@@ -93,7 +89,6 @@ system_prompt:
|
|
|
93
89
|
steps:
|
|
94
90
|
- "Editing existing file: view_file → str_replace_editor"
|
|
95
91
|
- "Creating new file: verify path doesn't exist → create_file"
|
|
96
|
-
- "Bulk changes: view_file → edit_file (Morph) for 100+ line changes"
|
|
97
92
|
- "Never guess file contents - always view_file first"
|
|
98
93
|
|
|
99
94
|
task_planning:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Context management for handling long conversations
|
|
3
3
|
* Prevents context window overflow through intelligent pruning
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { LLMMessage } from '../llm/client.js';
|
|
6
6
|
import type { TokenCounter } from '../utils/token-counter.js';
|
|
7
7
|
export interface ContextManagerOptions {
|
|
8
8
|
/** Model being used */
|
|
@@ -28,16 +28,17 @@ export declare class ContextManager {
|
|
|
28
28
|
private reservedTokens;
|
|
29
29
|
private tokenCache;
|
|
30
30
|
private readonly CACHE_TTL;
|
|
31
|
-
private
|
|
31
|
+
private readonly MAX_CACHE_SIZE;
|
|
32
32
|
constructor(options: ContextManagerOptions);
|
|
33
33
|
/**
|
|
34
|
-
* Memoized token counting with cache
|
|
34
|
+
* Memoized token counting with cache and lazy cleanup
|
|
35
35
|
* Uses message content hash as cache key
|
|
36
36
|
*/
|
|
37
37
|
private getCachedTokenCount;
|
|
38
38
|
/**
|
|
39
39
|
* Create a cache key from messages
|
|
40
40
|
* Fast hashing without full serialization
|
|
41
|
+
* Includes content sample to prevent collisions
|
|
41
42
|
*/
|
|
42
43
|
private createMessageCacheKey;
|
|
43
44
|
/**
|
|
@@ -51,15 +52,15 @@ export declare class ContextManager {
|
|
|
51
52
|
/**
|
|
52
53
|
* Check if context needs pruning (with caching)
|
|
53
54
|
*/
|
|
54
|
-
shouldPrune(messages:
|
|
55
|
+
shouldPrune(messages: LLMMessage[], tokenCounter: TokenCounter): boolean;
|
|
55
56
|
/**
|
|
56
57
|
* Check if we're approaching hard limit (with caching)
|
|
57
58
|
*/
|
|
58
|
-
isNearHardLimit(messages:
|
|
59
|
+
isNearHardLimit(messages: LLMMessage[], tokenCounter: TokenCounter): boolean;
|
|
59
60
|
/**
|
|
60
61
|
* Get current context usage statistics (with caching)
|
|
61
62
|
*/
|
|
62
|
-
getStats(messages:
|
|
63
|
+
getStats(messages: LLMMessage[], tokenCounter: TokenCounter): {
|
|
63
64
|
currentTokens: number;
|
|
64
65
|
contextWindow: number;
|
|
65
66
|
percentage: number;
|
|
@@ -76,7 +77,7 @@ export declare class ContextManager {
|
|
|
76
77
|
* 4. Remove old tool results (most verbose, least valuable)
|
|
77
78
|
* 5. Apply sliding window if still over threshold
|
|
78
79
|
*/
|
|
79
|
-
pruneMessages(messages:
|
|
80
|
+
pruneMessages(messages: LLMMessage[], tokenCounter: TokenCounter): LLMMessage[];
|
|
80
81
|
/**
|
|
81
82
|
* Identify important messages to preserve
|
|
82
83
|
*/
|
|
@@ -91,7 +92,7 @@ export declare class ContextManager {
|
|
|
91
92
|
*/
|
|
92
93
|
private applySlidingWindow;
|
|
93
94
|
/**
|
|
94
|
-
* Cleanup method to clear
|
|
95
|
+
* Cleanup method to clear cache and prevent memory leaks
|
|
95
96
|
* Should be called when the ContextManager is no longer needed
|
|
96
97
|
*/
|
|
97
98
|
dispose(): void;
|
|
@@ -15,7 +15,7 @@ export class ContextManager {
|
|
|
15
15
|
// Use Map with JSON serialized messages as key for cache lookup
|
|
16
16
|
tokenCache = new Map();
|
|
17
17
|
CACHE_TTL = 60000; // 1 minute TTL
|
|
18
|
-
|
|
18
|
+
MAX_CACHE_SIZE = 100; // Maximum cache entries before cleanup
|
|
19
19
|
constructor(options) {
|
|
20
20
|
this.model = options.model;
|
|
21
21
|
const modelConfig = GLM_MODELS[this.model];
|
|
@@ -25,37 +25,51 @@ export class ContextManager {
|
|
|
25
25
|
this.keepRecentToolRounds = options.keepRecentToolRounds || 8;
|
|
26
26
|
this.keepFirstMessages = options.keepFirstMessages || 2;
|
|
27
27
|
this.reservedTokens = options.reservedTokens || 3000;
|
|
28
|
-
// Periodic cache cleanup to prevent memory leaks
|
|
29
|
-
this.cleanupIntervalId = setInterval(() => this.cleanupCache(), 60000); // Cleanup every minute
|
|
30
28
|
}
|
|
31
29
|
/**
|
|
32
|
-
* Memoized token counting with cache
|
|
30
|
+
* Memoized token counting with cache and lazy cleanup
|
|
33
31
|
* Uses message content hash as cache key
|
|
34
32
|
*/
|
|
35
33
|
getCachedTokenCount(messages, tokenCounter) {
|
|
36
34
|
// Create cache key from message array
|
|
37
35
|
// Use a simplified hash based on message count, roles, and content lengths
|
|
38
36
|
const cacheKey = this.createMessageCacheKey(messages);
|
|
39
|
-
//
|
|
37
|
+
// Lazy cleanup: check if cached entry exists and is valid
|
|
38
|
+
const now = Date.now();
|
|
40
39
|
const cached = this.tokenCache.get(cacheKey);
|
|
41
|
-
if (cached
|
|
42
|
-
|
|
40
|
+
if (cached) {
|
|
41
|
+
if (now - cached.timestamp < this.CACHE_TTL) {
|
|
42
|
+
return cached.count;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Expired, remove it
|
|
46
|
+
this.tokenCache.delete(cacheKey);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Perform full cache cleanup if cache is getting too large
|
|
50
|
+
if (this.tokenCache.size > this.MAX_CACHE_SIZE) {
|
|
51
|
+
this.cleanupCache();
|
|
43
52
|
}
|
|
44
53
|
// Count tokens and cache result
|
|
45
54
|
const count = tokenCounter.countMessageTokens(messages);
|
|
46
|
-
this.tokenCache.set(cacheKey, { count, timestamp:
|
|
55
|
+
this.tokenCache.set(cacheKey, { count, timestamp: now });
|
|
47
56
|
return count;
|
|
48
57
|
}
|
|
49
58
|
/**
|
|
50
59
|
* Create a cache key from messages
|
|
51
60
|
* Fast hashing without full serialization
|
|
61
|
+
* Includes content sample to prevent collisions
|
|
52
62
|
*/
|
|
53
63
|
createMessageCacheKey(messages) {
|
|
54
|
-
// Use message count + roles + content lengths as a fast hash
|
|
64
|
+
// Use message count + roles + content lengths + content sample as a fast hash
|
|
55
65
|
return messages.map(m => {
|
|
56
66
|
const contentLen = typeof m.content === 'string' ? m.content.length : 0;
|
|
57
67
|
const toolCallsLen = m.tool_calls?.length || 0;
|
|
58
|
-
|
|
68
|
+
// Include first 20 chars of content to prevent hash collisions
|
|
69
|
+
const contentSample = typeof m.content === 'string'
|
|
70
|
+
? m.content.substring(0, 20).replace(/[|:]/g, '') // Remove delimiters
|
|
71
|
+
: '';
|
|
72
|
+
return `${m.role}:${contentLen}:${toolCallsLen}:${contentSample}`;
|
|
59
73
|
}).join('|');
|
|
60
74
|
}
|
|
61
75
|
/**
|
|
@@ -283,14 +297,10 @@ export class ContextManager {
|
|
|
283
297
|
return result;
|
|
284
298
|
}
|
|
285
299
|
/**
|
|
286
|
-
* Cleanup method to clear
|
|
300
|
+
* Cleanup method to clear cache and prevent memory leaks
|
|
287
301
|
* Should be called when the ContextManager is no longer needed
|
|
288
302
|
*/
|
|
289
303
|
dispose() {
|
|
290
|
-
if (this.cleanupIntervalId) {
|
|
291
|
-
clearInterval(this.cleanupIntervalId);
|
|
292
|
-
this.cleanupIntervalId = null;
|
|
293
|
-
}
|
|
294
304
|
this.tokenCache.clear();
|
|
295
305
|
}
|
|
296
306
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/agent/context-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,OAAO,cAAc;IACjB,KAAK,CAAS;IACd,aAAa,CAAS;IACtB,cAAc,CAAS;IACvB,SAAS,CAAS;IAClB,oBAAoB,CAAS;IAC7B,iBAAiB,CAAS;IAC1B,cAAc,CAAS;IAE/B,uCAAuC;IACvC,gEAAgE;IACxD,UAAU,GAAG,IAAI,GAAG,EAAgD,CAAC;IAC5D,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe;
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/agent/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LLMToolCall } from "../llm/client.js";
|
|
2
2
|
import { ToolResult } from "../types/index.js";
|
|
3
3
|
import { EventEmitter } from "events";
|
|
4
4
|
export interface ChatEntry {
|
|
5
5
|
type: "user" | "assistant" | "tool_result" | "tool_call";
|
|
6
6
|
content: string;
|
|
7
7
|
timestamp: Date;
|
|
8
|
-
toolCalls?:
|
|
9
|
-
toolCall?:
|
|
8
|
+
toolCalls?: LLMToolCall[];
|
|
9
|
+
toolCall?: LLMToolCall;
|
|
10
10
|
toolResult?: {
|
|
11
11
|
success: boolean;
|
|
12
12
|
output?: string;
|
|
@@ -23,15 +23,14 @@ export interface StreamingChunk {
|
|
|
23
23
|
content?: string;
|
|
24
24
|
/** GLM-4.6 reasoning content chunk */
|
|
25
25
|
reasoningContent?: string;
|
|
26
|
-
toolCalls?:
|
|
27
|
-
toolCall?:
|
|
26
|
+
toolCalls?: LLMToolCall[];
|
|
27
|
+
toolCall?: LLMToolCall;
|
|
28
28
|
toolResult?: ToolResult;
|
|
29
29
|
tokenCount?: number;
|
|
30
30
|
}
|
|
31
|
-
export declare class
|
|
32
|
-
private
|
|
31
|
+
export declare class LLMAgent extends EventEmitter {
|
|
32
|
+
private llmClient;
|
|
33
33
|
private textEditor;
|
|
34
|
-
private morphEditor;
|
|
35
34
|
private bash;
|
|
36
35
|
private todoTool;
|
|
37
36
|
private search;
|
|
@@ -47,7 +46,48 @@ export declare class GrokAgent extends EventEmitter {
|
|
|
47
46
|
private shouldUseSearchFor;
|
|
48
47
|
processUserMessage(message: string): Promise<ChatEntry[]>;
|
|
49
48
|
private messageReducer;
|
|
49
|
+
/**
|
|
50
|
+
* Prepare user message and apply context management
|
|
51
|
+
* Returns the calculated input tokens
|
|
52
|
+
*/
|
|
53
|
+
private prepareUserMessageForStreaming;
|
|
54
|
+
/**
|
|
55
|
+
* Yield context warnings if needed
|
|
56
|
+
*/
|
|
57
|
+
private yieldContextWarnings;
|
|
58
|
+
/**
|
|
59
|
+
* Check if operation was cancelled
|
|
60
|
+
*/
|
|
61
|
+
private isCancelled;
|
|
62
|
+
/**
|
|
63
|
+
* Yield cancellation message
|
|
64
|
+
*/
|
|
65
|
+
private yieldCancellation;
|
|
66
|
+
/**
|
|
67
|
+
* Load tools with error handling
|
|
68
|
+
* Returns tools array, logs error if loading fails
|
|
69
|
+
*/
|
|
70
|
+
private loadToolsSafely;
|
|
71
|
+
/**
|
|
72
|
+
* Process streaming chunks and accumulate message
|
|
73
|
+
*/
|
|
74
|
+
private processStreamingChunks;
|
|
75
|
+
/**
|
|
76
|
+
* Add assistant message to history and conversation
|
|
77
|
+
*/
|
|
78
|
+
private addAssistantMessage;
|
|
79
|
+
/**
|
|
80
|
+
* Execute tool calls and yield results
|
|
81
|
+
*/
|
|
82
|
+
private executeToolCalls;
|
|
50
83
|
processUserMessageStream(message: string): AsyncGenerator<StreamingChunk, void, unknown>;
|
|
84
|
+
/**
|
|
85
|
+
* Parse and validate tool call arguments
|
|
86
|
+
* @param toolCall The tool call to parse arguments from
|
|
87
|
+
* @param toolType Type of tool (for error messages)
|
|
88
|
+
* @returns Parsed arguments or error result
|
|
89
|
+
*/
|
|
90
|
+
private parseToolArguments;
|
|
51
91
|
private executeTool;
|
|
52
92
|
private executeMCPTool;
|
|
53
93
|
getChatHistory(): ChatEntry[];
|