@zds-ai/cli 0.1.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/LICENSE +21 -0
- package/README.md +497 -0
- package/dist/agent/grok-agent.d.ts +250 -0
- package/dist/agent/grok-agent.js +2480 -0
- package/dist/agent/grok-agent.js.map +1 -0
- package/dist/agent/index.d.ts +14 -0
- package/dist/agent/index.js +136 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +2 -0
- package/dist/commands/mcp.js +239 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/grok/client.d.ts +55 -0
- package/dist/grok/client.js +276 -0
- package/dist/grok/client.js.map +1 -0
- package/dist/grok/tools.d.ts +8 -0
- package/dist/grok/tools.js +878 -0
- package/dist/grok/tools.js.map +1 -0
- package/dist/hooks/use-enhanced-input.d.ts +38 -0
- package/dist/hooks/use-enhanced-input.js +228 -0
- package/dist/hooks/use-enhanced-input.js.map +1 -0
- package/dist/hooks/use-input-handler.d.ts +36 -0
- package/dist/hooks/use-input-handler.js +1099 -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 +61 -0
- package/dist/hooks/use-input-history.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +869 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +41 -0
- package/dist/mcp/client.js +224 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +13 -0
- package/dist/mcp/config.js +56 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/transports.d.ts +53 -0
- package/dist/mcp/transports.js +256 -0
- package/dist/mcp/transports.js.map +1 -0
- package/dist/tools/character-tool.d.ts +27 -0
- package/dist/tools/character-tool.js +194 -0
- package/dist/tools/character-tool.js.map +1 -0
- package/dist/tools/clear-cache-tool.d.ts +14 -0
- package/dist/tools/clear-cache-tool.js +82 -0
- package/dist/tools/clear-cache-tool.js.map +1 -0
- package/dist/tools/confirmation-tool.d.ts +16 -0
- package/dist/tools/confirmation-tool.js +72 -0
- package/dist/tools/confirmation-tool.js.map +1 -0
- package/dist/tools/env-tool.d.ts +17 -0
- package/dist/tools/env-tool.js +89 -0
- package/dist/tools/env-tool.js.map +1 -0
- package/dist/tools/file-conversion-tool.d.ts +16 -0
- package/dist/tools/file-conversion-tool.js +181 -0
- package/dist/tools/file-conversion-tool.js.map +1 -0
- package/dist/tools/image-tool.d.ts +22 -0
- package/dist/tools/image-tool.js +268 -0
- package/dist/tools/image-tool.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/internet-tool.d.ts +11 -0
- package/dist/tools/internet-tool.js +108 -0
- package/dist/tools/internet-tool.js.map +1 -0
- package/dist/tools/introspect-tool.d.ts +11 -0
- package/dist/tools/introspect-tool.js +243 -0
- package/dist/tools/introspect-tool.js.map +1 -0
- package/dist/tools/morph-editor.d.ts +38 -0
- package/dist/tools/morph-editor.js +318 -0
- package/dist/tools/morph-editor.js.map +1 -0
- package/dist/tools/restart-tool.d.ts +7 -0
- package/dist/tools/restart-tool.js +24 -0
- package/dist/tools/restart-tool.js.map +1 -0
- package/dist/tools/search.d.ts +71 -0
- package/dist/tools/search.js +340 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/task-tool.d.ts +19 -0
- package/dist/tools/task-tool.js +115 -0
- package/dist/tools/task-tool.js.map +1 -0
- package/dist/tools/text-editor.d.ts +35 -0
- package/dist/tools/text-editor.js +669 -0
- package/dist/tools/text-editor.js.map +1 -0
- package/dist/tools/tool-discovery.d.ts +20 -0
- package/dist/tools/tool-discovery.js +45 -0
- package/dist/tools/tool-discovery.js.map +1 -0
- package/dist/tools/zsh.d.ts +13 -0
- package/dist/tools/zsh.js +168 -0
- package/dist/tools/zsh.js.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/app.d.ts +7 -0
- package/dist/ui/app.js +99 -0
- package/dist/ui/app.js.map +1 -0
- package/dist/ui/components/active-task-status.d.ts +7 -0
- package/dist/ui/components/active-task-status.js +37 -0
- package/dist/ui/components/active-task-status.js.map +1 -0
- package/dist/ui/components/api-key-input.d.ts +7 -0
- package/dist/ui/components/api-key-input.js +80 -0
- package/dist/ui/components/api-key-input.js.map +1 -0
- package/dist/ui/components/backend-status.d.ts +7 -0
- package/dist/ui/components/backend-status.js +85 -0
- package/dist/ui/components/backend-status.js.map +1 -0
- package/dist/ui/components/chat-history.d.ts +8 -0
- package/dist/ui/components/chat-history.js +187 -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 +63 -0
- package/dist/ui/components/chat-input.js.map +1 -0
- package/dist/ui/components/chat-interface.d.ts +9 -0
- package/dist/ui/components/chat-interface.js +389 -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 +22 -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 +105 -0
- package/dist/ui/components/confirmation-dialog.js.map +1 -0
- package/dist/ui/components/context-status.d.ts +7 -0
- package/dist/ui/components/context-status.js +36 -0
- package/dist/ui/components/context-status.js.map +1 -0
- package/dist/ui/components/diff-renderer.d.ts +13 -0
- package/dist/ui/components/diff-renderer.js +206 -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 +64 -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 +57 -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 +17 -0
- package/dist/ui/components/model-selection.js.map +1 -0
- package/dist/ui/components/mood-status.d.ts +7 -0
- package/dist/ui/components/mood-status.js +34 -0
- package/dist/ui/components/mood-status.js.map +1 -0
- package/dist/ui/components/persona-status.d.ts +7 -0
- package/dist/ui/components/persona-status.js +34 -0
- package/dist/ui/components/persona-status.js.map +1 -0
- package/dist/ui/shared/max-sized-box.d.ts +8 -0
- package/dist/ui/shared/max-sized-box.js +6 -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 +7 -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 +15 -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 +40 -0
- package/dist/ui/utils/markdown-renderer.js.map +1 -0
- package/dist/utils/auth-helper.d.ts +63 -0
- package/dist/utils/auth-helper.js +129 -0
- package/dist/utils/auth-helper.js.map +1 -0
- package/dist/utils/chat-history-manager-sqlite.d.ts +92 -0
- package/dist/utils/chat-history-manager-sqlite.js +334 -0
- package/dist/utils/chat-history-manager-sqlite.js.map +1 -0
- package/dist/utils/chat-history-manager.d.ts +87 -0
- package/dist/utils/chat-history-manager.js +273 -0
- package/dist/utils/chat-history-manager.js.map +1 -0
- package/dist/utils/chat-history-manager.json-backup.d.ts +69 -0
- package/dist/utils/chat-history-manager.json-backup.js +215 -0
- package/dist/utils/chat-history-manager.json-backup.js.map +1 -0
- package/dist/utils/confirmation-service.d.ts +46 -0
- package/dist/utils/confirmation-service.js +165 -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 +30 -0
- package/dist/utils/custom-instructions.js.map +1 -0
- package/dist/utils/database-connection.d.ts +27 -0
- package/dist/utils/database-connection.js +81 -0
- package/dist/utils/database-connection.js.map +1 -0
- package/dist/utils/database-schema.d.ts +17 -0
- package/dist/utils/database-schema.js +93 -0
- package/dist/utils/database-schema.js.map +1 -0
- package/dist/utils/error-logger.d.ts +13 -0
- package/dist/utils/error-logger.js +56 -0
- package/dist/utils/error-logger.js.map +1 -0
- package/dist/utils/hook-executor.d.ts +59 -0
- package/dist/utils/hook-executor.js +351 -0
- package/dist/utils/hook-executor.js.map +1 -0
- package/dist/utils/model-config.d.ts +28 -0
- package/dist/utils/model-config.js +42 -0
- package/dist/utils/model-config.js.map +1 -0
- package/dist/utils/path-utils.d.ts +4 -0
- package/dist/utils/path-utils.js +12 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +169 -0
- package/dist/utils/settings-manager.js +403 -0
- package/dist/utils/settings-manager.js.map +1 -0
- package/dist/utils/settings.d.ts +1 -0
- package/dist/utils/settings.js +4 -0
- package/dist/utils/settings.js.map +1 -0
- package/dist/utils/slash-commands.d.ts +25 -0
- package/dist/utils/slash-commands.js +454 -0
- package/dist/utils/slash-commands.js.map +1 -0
- package/dist/utils/startup-hook.d.ts +13 -0
- package/dist/utils/startup-hook.js +44 -0
- package/dist/utils/startup-hook.js.map +1 -0
- package/dist/utils/text-utils.d.ts +80 -0
- package/dist/utils/text-utils.js +182 -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 +78 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ConfirmationService } from '../utils/confirmation-service.js';
|
|
2
|
+
export class ConfirmationTool {
|
|
3
|
+
confirmationService;
|
|
4
|
+
constructor() {
|
|
5
|
+
this.confirmationService = ConfirmationService.getInstance();
|
|
6
|
+
}
|
|
7
|
+
async requestConfirmation(request) {
|
|
8
|
+
try {
|
|
9
|
+
// If autoAccept is true, skip the confirmation dialog
|
|
10
|
+
if (request.autoAccept) {
|
|
11
|
+
return {
|
|
12
|
+
success: true,
|
|
13
|
+
output: `Auto-accepted: ${request.operation}(${request.filename})${request.description ? ` - ${request.description}` : ''}`
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const options = {
|
|
17
|
+
operation: request.operation,
|
|
18
|
+
filename: request.filename,
|
|
19
|
+
showVSCodeOpen: request.showVSCodeOpen || false
|
|
20
|
+
};
|
|
21
|
+
// Determine operation type based on operation name
|
|
22
|
+
const operationType = request.operation.toLowerCase().includes('zsh') ? 'zsh' : 'file';
|
|
23
|
+
const result = await this.confirmationService.requestConfirmation(options, operationType);
|
|
24
|
+
if (result.confirmed) {
|
|
25
|
+
return {
|
|
26
|
+
success: true,
|
|
27
|
+
output: `User confirmed: ${request.operation}(${request.filename})${request.description ? ` - ${request.description}` : ''}${result.dontAskAgain ? ' (Don\'t ask again enabled)' : ''}`
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
error: result.feedback || `User rejected: ${request.operation}(${request.filename})`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
error: `Confirmation error: ${error.message}`
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async checkSessionAcceptance() {
|
|
45
|
+
try {
|
|
46
|
+
const sessionFlags = this.confirmationService.getSessionFlags();
|
|
47
|
+
// Return structured data without JSON output to avoid displaying raw JSON
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
data: {
|
|
51
|
+
fileOperationsAccepted: sessionFlags.fileOperations,
|
|
52
|
+
bashCommandsAccepted: sessionFlags.zshCommands,
|
|
53
|
+
allOperationsAccepted: sessionFlags.allOperations,
|
|
54
|
+
hasAnyAcceptance: sessionFlags.fileOperations || sessionFlags.zshCommands || sessionFlags.allOperations
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
error: `Error checking session acceptance: ${error.message}`
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
resetSession() {
|
|
66
|
+
this.confirmationService.resetSession();
|
|
67
|
+
}
|
|
68
|
+
isPending() {
|
|
69
|
+
return this.confirmationService.isPending();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=confirmation-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirmation-tool.js","sourceRoot":"","sources":["../../src/tools/confirmation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ToolResult } from "../types/index.js";
|
|
2
|
+
import { ToolDiscovery } from "./tool-discovery.js";
|
|
3
|
+
export declare class EnvTool implements ToolDiscovery {
|
|
4
|
+
/**
|
|
5
|
+
* Get all environment variables
|
|
6
|
+
*/
|
|
7
|
+
getAllEnv(): Promise<ToolResult>;
|
|
8
|
+
/**
|
|
9
|
+
* Get a specific environment variable by name
|
|
10
|
+
*/
|
|
11
|
+
getEnv(varName: string): Promise<ToolResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Search environment variables by pattern (case-insensitive)
|
|
14
|
+
*/
|
|
15
|
+
searchEnv(pattern: string): Promise<ToolResult>;
|
|
16
|
+
getHandledToolNames(): string[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { getHandledToolNames } from "./tool-discovery.js";
|
|
2
|
+
export class EnvTool {
|
|
3
|
+
/**
|
|
4
|
+
* Get all environment variables
|
|
5
|
+
*/
|
|
6
|
+
async getAllEnv() {
|
|
7
|
+
try {
|
|
8
|
+
const envVars = process.env;
|
|
9
|
+
const envList = Object.entries(envVars)
|
|
10
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
11
|
+
.map(([key, value]) => `${key}=${value || ''}`)
|
|
12
|
+
.join('\n');
|
|
13
|
+
const count = Object.keys(envVars).length;
|
|
14
|
+
return {
|
|
15
|
+
success: true,
|
|
16
|
+
output: `Environment Variables (${count} total):\n${envList}`,
|
|
17
|
+
displayOutput: `Retrieved ${count} environment variables`
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return {
|
|
22
|
+
success: false,
|
|
23
|
+
error: `Error reading environment variables: ${error.message}`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get a specific environment variable by name
|
|
29
|
+
*/
|
|
30
|
+
async getEnv(varName) {
|
|
31
|
+
try {
|
|
32
|
+
const value = process.env[varName];
|
|
33
|
+
if (value === undefined) {
|
|
34
|
+
return {
|
|
35
|
+
success: false,
|
|
36
|
+
error: `Environment variable '${varName}' not found`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
success: true,
|
|
41
|
+
output: `${varName}=${value}`,
|
|
42
|
+
displayOutput: `Retrieved environment variable: ${varName}`
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
error: `Error reading environment variable '${varName}': ${error.message}`
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Search environment variables by pattern (case-insensitive)
|
|
54
|
+
*/
|
|
55
|
+
async searchEnv(pattern) {
|
|
56
|
+
try {
|
|
57
|
+
const envVars = process.env;
|
|
58
|
+
const regex = new RegExp(pattern, 'i');
|
|
59
|
+
const matches = Object.entries(envVars)
|
|
60
|
+
.filter(([key, value]) => regex.test(key) || regex.test(value || ''))
|
|
61
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
62
|
+
.map(([key, value]) => `${key}=${value || ''}`)
|
|
63
|
+
.join('\n');
|
|
64
|
+
const matchCount = matches.split('\n').filter(line => line.length > 0).length;
|
|
65
|
+
if (matchCount === 0) {
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
output: `No environment variables match pattern: ${pattern}`,
|
|
69
|
+
displayOutput: `No matches found for pattern: ${pattern}`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
success: true,
|
|
74
|
+
output: `Environment Variables matching '${pattern}' (${matchCount} found):\n${matches}`,
|
|
75
|
+
displayOutput: `Found ${matchCount} environment variables matching: ${pattern}`
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: `Error searching environment variables: ${error.message}`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
getHandledToolNames() {
|
|
86
|
+
return getHandledToolNames(this);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=env-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-tool.js","sourceRoot":"","sources":["../../src/tools/env-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ToolResult } from "../types/index.js";
|
|
2
|
+
import { ToolDiscovery } from "./tool-discovery.js";
|
|
3
|
+
export declare class FileConversionTool implements ToolDiscovery {
|
|
4
|
+
private agent;
|
|
5
|
+
setAgent(agent: any): void;
|
|
6
|
+
getHandledToolNames(): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Read an XLSX file and return its contents.
|
|
9
|
+
* Uses read_xlsx.py script with multiple output format options.
|
|
10
|
+
*/
|
|
11
|
+
readXlsx(filename: string, sheetName?: string, outputFormat?: "text" | "json" | "all-sheets-json" | "csv", output?: string): Promise<ToolResult>;
|
|
12
|
+
/**
|
|
13
|
+
* List all available sheets in an XLSX file.
|
|
14
|
+
*/
|
|
15
|
+
listXlsxSheets(filename: string): Promise<ToolResult>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { exec } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
import { getHandledToolNames } from "./tool-discovery.js";
|
|
4
|
+
const execAsync = promisify(exec);
|
|
5
|
+
export class FileConversionTool {
|
|
6
|
+
agent; // Reference to the GrokAgent
|
|
7
|
+
setAgent(agent) {
|
|
8
|
+
this.agent = agent;
|
|
9
|
+
}
|
|
10
|
+
getHandledToolNames() {
|
|
11
|
+
return getHandledToolNames(this);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read an XLSX file and return its contents.
|
|
15
|
+
* Uses read_xlsx.py script with multiple output format options.
|
|
16
|
+
*/
|
|
17
|
+
async readXlsx(filename, sheetName, outputFormat, output) {
|
|
18
|
+
try {
|
|
19
|
+
if (!filename) {
|
|
20
|
+
return {
|
|
21
|
+
success: false,
|
|
22
|
+
error: "Filename is required",
|
|
23
|
+
output: "Filename is required"
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Escape filename for shell
|
|
27
|
+
const escapedFilename = filename.replace(/'/g, "'\\''");
|
|
28
|
+
// Build command using read_xlsx.py
|
|
29
|
+
let command = `read_xlsx.py '${escapedFilename}'`;
|
|
30
|
+
// Add sheet name if provided
|
|
31
|
+
if (sheetName) {
|
|
32
|
+
const escapedSheetName = sheetName.replace(/'/g, "'\\''");
|
|
33
|
+
command += ` --sheet '${escapedSheetName}'`;
|
|
34
|
+
}
|
|
35
|
+
// Add output format options
|
|
36
|
+
const format = outputFormat || "text";
|
|
37
|
+
switch (format) {
|
|
38
|
+
case "json":
|
|
39
|
+
command += " --json";
|
|
40
|
+
break;
|
|
41
|
+
case "all-sheets-json":
|
|
42
|
+
command += " --all-sheets-json";
|
|
43
|
+
break;
|
|
44
|
+
case "csv":
|
|
45
|
+
command += " --csv";
|
|
46
|
+
break;
|
|
47
|
+
case "text":
|
|
48
|
+
default:
|
|
49
|
+
// No additional flags for text format
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
// Add output file if specified
|
|
53
|
+
if (output) {
|
|
54
|
+
const escapedOutput = output.replace(/'/g, "'\\''");
|
|
55
|
+
command += ` --output '${escapedOutput}'`;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
59
|
+
timeout: 60000, // 60 second timeout
|
|
60
|
+
shell: '/bin/zsh'
|
|
61
|
+
});
|
|
62
|
+
// If there's stderr output and no stdout, it's an error
|
|
63
|
+
if (stderr && !stdout) {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
error: `XLSX reading failed: ${stderr}`,
|
|
67
|
+
output: stderr
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const result = stdout.trim();
|
|
71
|
+
// Create display output based on format
|
|
72
|
+
let displayOutput;
|
|
73
|
+
if (format === "json" || format === "all-sheets-json") {
|
|
74
|
+
try {
|
|
75
|
+
const jsonData = JSON.parse(result);
|
|
76
|
+
if (format === "all-sheets-json") {
|
|
77
|
+
const sheetCount = Object.keys(jsonData.sheets || {}).length;
|
|
78
|
+
displayOutput = `Read ${sheetCount} sheet(s) from ${filename}`;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
displayOutput = `Read ${jsonData.row_count || 0} row(s) from ${sheetName || jsonData.sheet_name || filename}`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
displayOutput = `Read XLSX file: ${filename}`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (format === "csv") {
|
|
89
|
+
displayOutput = `Converted ${sheetName || 'default sheet'} to CSV`;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
displayOutput = `Read XLSX file: ${filename}${sheetName ? ` (sheet: ${sheetName})` : ''}`;
|
|
93
|
+
}
|
|
94
|
+
// If output file was specified, mention it in display
|
|
95
|
+
if (output) {
|
|
96
|
+
displayOutput += ` → ${output}`;
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
success: true,
|
|
100
|
+
output: result,
|
|
101
|
+
displayOutput: displayOutput
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
// Extract error details
|
|
106
|
+
const errorMessage = error.message || "Unknown error";
|
|
107
|
+
const stderr = error.stderr || "";
|
|
108
|
+
const stdout = error.stdout || "";
|
|
109
|
+
return {
|
|
110
|
+
success: false,
|
|
111
|
+
error: `XLSX reading failed (code ${error.code || 'unknown'}): ${errorMessage}${stderr ? '\nstderr: ' + stderr : ''}${stdout ? '\nstdout: ' + stdout : ''}`,
|
|
112
|
+
output: `Error code: ${error.code || 'unknown'}\n${errorMessage}${stderr ? '\nstderr: ' + stderr : ''}${stdout ? '\nstdout: ' + stdout : ''}`
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
error: error instanceof Error ? error.message : "Unknown error reading XLSX file",
|
|
120
|
+
output: error instanceof Error ? error.message : "Unknown error reading XLSX file"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* List all available sheets in an XLSX file.
|
|
126
|
+
*/
|
|
127
|
+
async listXlsxSheets(filename) {
|
|
128
|
+
try {
|
|
129
|
+
if (!filename) {
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
error: "Filename is required",
|
|
133
|
+
output: "Filename is required"
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// Escape filename for shell
|
|
137
|
+
const escapedFilename = filename.replace(/'/g, "'\\''");
|
|
138
|
+
// Build command to list sheets
|
|
139
|
+
const command = `read_xlsx.py '${escapedFilename}' --list-sheets`;
|
|
140
|
+
try {
|
|
141
|
+
const { stdout, stderr } = await execAsync(command, {
|
|
142
|
+
timeout: 30000, // 30 second timeout
|
|
143
|
+
shell: '/bin/zsh'
|
|
144
|
+
});
|
|
145
|
+
// If there's stderr output and no stdout, it's an error
|
|
146
|
+
if (stderr && !stdout) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
error: `XLSX sheet listing failed: ${stderr}`,
|
|
150
|
+
output: stderr
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const output = stdout.trim();
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
output: output,
|
|
157
|
+
displayOutput: `Listed sheets in ${filename}`
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
// Extract error details
|
|
162
|
+
const errorMessage = error.message || "Unknown error";
|
|
163
|
+
const stderr = error.stderr || "";
|
|
164
|
+
const stdout = error.stdout || "";
|
|
165
|
+
return {
|
|
166
|
+
success: false,
|
|
167
|
+
error: `XLSX sheet listing failed (code ${error.code || 'unknown'}): ${errorMessage}${stderr ? '\nstderr: ' + stderr : ''}${stdout ? '\nstdout: ' + stdout : ''}`,
|
|
168
|
+
output: `Error code: ${error.code || 'unknown'}\n${errorMessage}${stderr ? '\nstderr: ' + stderr : ''}${stdout ? '\nstdout: ' + stdout : ''}`
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
return {
|
|
174
|
+
success: false,
|
|
175
|
+
error: error instanceof Error ? error.message : "Unknown error listing XLSX sheets",
|
|
176
|
+
output: error instanceof Error ? error.message : "Unknown error listing XLSX sheets"
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=file-conversion-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-conversion-tool.js","sourceRoot":"","sources":["../../src/tools/file-conversion-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ToolResult } from "../types/index.js";
|
|
2
|
+
import { ToolDiscovery } from "./tool-discovery.js";
|
|
3
|
+
export declare class ImageTool implements ToolDiscovery {
|
|
4
|
+
private agent;
|
|
5
|
+
setAgent(agent: any): void;
|
|
6
|
+
getHandledToolNames(): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Generate an image using AI image generation.
|
|
9
|
+
* Uses generate_image_asl.sh script with Stable Diffusion.
|
|
10
|
+
*/
|
|
11
|
+
generateImage(prompt: string, negativePrompt?: string, width?: number, height?: number, model?: string, sampler?: string, configScale?: number, numSteps?: number, nsfw?: boolean, name?: string, move?: boolean, seed?: number): Promise<ToolResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Caption an image using AI image captioning.
|
|
14
|
+
* Uses joycaption script.
|
|
15
|
+
*/
|
|
16
|
+
captionImage(filename: string, prompt?: string): Promise<ToolResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Extract PNG metadata (generation settings) from a PNG file.
|
|
19
|
+
* Uses exiftool to read embedded generation parameters.
|
|
20
|
+
*/
|
|
21
|
+
pngInfo(filename: string): Promise<ToolResult>;
|
|
22
|
+
}
|