@zds-ai/cli 0.1.8 → 0.1.10
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 +387 -34
- package/dist/agent/context-manager.d.ts +70 -0
- package/dist/agent/context-manager.js +138 -0
- package/dist/agent/context-manager.js.map +1 -0
- package/dist/agent/hook-manager.d.ts +194 -0
- package/dist/agent/hook-manager.js +676 -0
- package/dist/agent/hook-manager.js.map +1 -0
- package/dist/agent/llm-agent.d.ts +469 -100
- package/dist/agent/llm-agent.js +781 -1580
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/message-processor.d.ts +103 -0
- package/dist/agent/message-processor.js +225 -0
- package/dist/agent/message-processor.js.map +1 -0
- package/dist/agent/prompt-variables.d.ts +103 -40
- package/dist/agent/prompt-variables.js +250 -113
- package/dist/agent/prompt-variables.js.map +1 -1
- package/dist/agent/session-manager.d.ts +75 -0
- package/dist/agent/session-manager.js +194 -0
- package/dist/agent/session-manager.js.map +1 -0
- package/dist/agent/tool-executor.d.ts +111 -0
- package/dist/agent/tool-executor.js +397 -0
- package/dist/agent/tool-executor.js.map +1 -0
- package/dist/bin/generate_image_sd.sh +19 -12
- package/dist/bin/joycaption.sh +37 -0
- package/dist/grok/client.d.ts +52 -0
- package/dist/grok/client.js +127 -19
- package/dist/grok/client.js.map +1 -1
- package/dist/grok/tools.js +42 -8
- package/dist/grok/tools.js.map +1 -1
- package/dist/hooks/use-input-handler.d.ts +1 -1
- package/dist/hooks/use-input-handler.js +100 -13
- package/dist/hooks/use-input-handler.js.map +1 -1
- package/dist/index.js +25 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/config.d.ts +1 -0
- package/dist/mcp/config.js +45 -7
- package/dist/mcp/config.js.map +1 -1
- package/dist/tools/character-tool.js +13 -1
- package/dist/tools/character-tool.js.map +1 -1
- package/dist/tools/image-tool.d.ts +11 -1
- package/dist/tools/image-tool.js +109 -2
- package/dist/tools/image-tool.js.map +1 -1
- package/dist/tools/introspect-tool.js +131 -30
- package/dist/tools/introspect-tool.js.map +1 -1
- package/dist/tools/morph-editor.d.ts +21 -9
- package/dist/tools/morph-editor.js +21 -9
- package/dist/tools/morph-editor.js.map +1 -1
- package/dist/ui/components/active-task-status.d.ts +1 -1
- package/dist/ui/components/api-key-input.d.ts +1 -1
- package/dist/ui/components/backend-status.d.ts +1 -1
- package/dist/ui/components/chat-history.d.ts +1 -1
- package/dist/ui/components/chat-interface.d.ts +1 -1
- package/dist/ui/components/chat-interface.js +1 -1
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/context-status.d.ts +1 -1
- package/dist/ui/components/mood-status.d.ts +1 -1
- package/dist/ui/components/persona-status.d.ts +1 -1
- package/dist/utils/chat-history-manager.d.ts +12 -4
- package/dist/utils/chat-history-manager.js +26 -11
- package/dist/utils/chat-history-manager.js.map +1 -1
- package/dist/utils/hook-executor.d.ts +53 -2
- package/dist/utils/hook-executor.js +258 -36
- package/dist/utils/hook-executor.js.map +1 -1
- package/dist/utils/rephrase-handler.d.ts +1 -1
- package/dist/utils/settings-manager.d.ts +41 -11
- package/dist/utils/settings-manager.js +172 -40
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/slash-commands.d.ts +3 -3
- package/dist/utils/slash-commands.js +11 -5
- package/dist/utils/slash-commands.js.map +1 -1
- package/dist/utils/startup-hook.js +9 -2
- package/dist/utils/startup-hook.js.map +1 -1
- package/package.json +10 -8
|
@@ -5,8 +5,9 @@ export interface HookResult {
|
|
|
5
5
|
commands?: HookCommand[];
|
|
6
6
|
}
|
|
7
7
|
export interface HookCommand {
|
|
8
|
-
type: "ENV" | "TOOL_RESULT" | "ECHO" | "RUN" | "BACKEND" | "MODEL" | "SYSTEM" | "SYSTEM_FILE" | "BASE_URL" | "API_KEY_ENV_VAR" | "SET" | "SET_FILE" | "SET_TEMP_FILE" | "PREFILL";
|
|
8
|
+
type: "ENV" | "TOOL_RESULT" | "ECHO" | "RUN" | "BACKEND" | "MODEL" | "SYSTEM" | "SYSTEM_FILE" | "BASE_URL" | "API_KEY_ENV_VAR" | "SET" | "SET_FILE" | "SET_TEMP_FILE" | "PREFILL" | "CALL" | "MAXCONTEXT";
|
|
9
9
|
value: string;
|
|
10
|
+
isConditional?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export interface HookCommandResults {
|
|
12
13
|
env: Record<string, string>;
|
|
@@ -17,7 +18,24 @@ export interface HookCommandResults {
|
|
|
17
18
|
baseUrl?: string;
|
|
18
19
|
apiKeyEnvVar?: string;
|
|
19
20
|
prefill?: string;
|
|
20
|
-
|
|
21
|
+
maxContext?: number;
|
|
22
|
+
promptVars: Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
value: string;
|
|
25
|
+
}>;
|
|
26
|
+
calls: string[];
|
|
27
|
+
conditionalResults?: {
|
|
28
|
+
env: Record<string, string>;
|
|
29
|
+
toolResult: string;
|
|
30
|
+
system: string;
|
|
31
|
+
prefill?: string;
|
|
32
|
+
maxContext?: number;
|
|
33
|
+
promptVars: Array<{
|
|
34
|
+
name: string;
|
|
35
|
+
value: string;
|
|
36
|
+
}>;
|
|
37
|
+
calls: string[];
|
|
38
|
+
};
|
|
21
39
|
}
|
|
22
40
|
/**
|
|
23
41
|
* Apply hook commands and return extracted values
|
|
@@ -31,9 +49,14 @@ export interface HookCommandResults {
|
|
|
31
49
|
* BASE_URL commands set the base URL to use (last one wins if multiple)
|
|
32
50
|
* API_KEY_ENV_VAR commands set the env var name for API key (last one wins if multiple)
|
|
33
51
|
* PREFILL commands set assistant prefill text (last one wins if multiple)
|
|
52
|
+
* MAXCONTEXT commands set maximum context size in tokens (last one wins if multiple)
|
|
34
53
|
* SET commands set prompt variables (text limited to 10,000 bytes)
|
|
35
54
|
* SET_FILE commands read file contents (up to 20,000 bytes) and set prompt variables
|
|
36
55
|
* SET_TEMP_FILE commands read file contents (up to 20,000 bytes), set prompt variables, and delete file
|
|
56
|
+
*
|
|
57
|
+
* Commands marked with isConditional=true are separated and returned in conditionalResults.
|
|
58
|
+
* These should only be applied after backend/model tests succeed.
|
|
59
|
+
*
|
|
37
60
|
* Returns extracted values for caller to use
|
|
38
61
|
*/
|
|
39
62
|
export declare function applyHookCommands(commands: HookCommand[]): HookCommandResults;
|
|
@@ -54,8 +77,36 @@ export declare function applyEnvVariables(env: Record<string, string>): void;
|
|
|
54
77
|
* @returns Promise<HookResult>
|
|
55
78
|
*/
|
|
56
79
|
export declare function executeOperationHook(hookPath: string, operation: string, data: Record<string, any>, timeoutMs?: number, mandatory?: boolean, contextCurrent?: number, contextMax?: number): Promise<HookResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Execute a preToolCall hook with tool name and parameters passed via environment
|
|
82
|
+
* This hook runs before tool execution and can modify environment/prompt variables
|
|
83
|
+
* Non-blocking: always processes commands even on non-zero exit
|
|
84
|
+
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
85
|
+
* @param toolName Name of the tool being executed
|
|
86
|
+
* @param parameters Tool parameters as key-value pairs
|
|
87
|
+
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
88
|
+
* @returns Promise<HookResult>
|
|
89
|
+
*/
|
|
90
|
+
export declare function executePreToolCallHook(hookPath: string, toolName: string, parameters: Record<string, any>, timeoutMs?: number, contextCurrent?: number, contextMax?: number): Promise<HookResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Execute a postToolCall hook with tool name, parameters, and result passed via environment
|
|
93
|
+
* This hook runs after tool execution and can add context/guidance based on results
|
|
94
|
+
* Non-blocking: always processes commands even on non-zero exit
|
|
95
|
+
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
96
|
+
* @param toolName Name of the tool that was executed
|
|
97
|
+
* @param parameters Tool parameters as key-value pairs
|
|
98
|
+
* @param result Tool execution result
|
|
99
|
+
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
100
|
+
* @returns Promise<HookResult>
|
|
101
|
+
*/
|
|
102
|
+
export declare function executePostToolCallHook(hookPath: string, toolName: string, parameters: Record<string, any>, result: {
|
|
103
|
+
success: boolean;
|
|
104
|
+
output?: string;
|
|
105
|
+
error?: string;
|
|
106
|
+
}, timeoutMs?: number, contextCurrent?: number, contextMax?: number): Promise<HookResult>;
|
|
57
107
|
/**
|
|
58
108
|
* Execute a tool approval hook with tool name and parameters passed via environment
|
|
109
|
+
* Blocking: non-zero exit code rejects the tool execution
|
|
59
110
|
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
60
111
|
* @param toolName Name of the tool being executed
|
|
61
112
|
* @param parameters Tool parameters as key-value pairs
|
|
@@ -34,58 +34,104 @@ function expandTilde(filePath) {
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Parse hook output for command directives
|
|
37
|
-
* Lines starting with "ENV ", "TOOL_RESULT ", "ECHO ", "RUN ", "BACKEND ", "MODEL ", "SYSTEM ", "SYSTEM_FILE ", "BASE_URL ", "API_KEY_ENV_VAR ", "SET ", "SET_FILE ", "SET_TEMP_FILE ", or "
|
|
37
|
+
* Lines starting with "ENV ", "TOOL_RESULT ", "ECHO ", "RUN ", "BACKEND ", "MODEL ", "SYSTEM ", "SYSTEM_FILE ", "BASE_URL ", "API_KEY_ENV_VAR ", "SET ", "SET_FILE ", "SET_TEMP_FILE ", "PREFILL ", "CALL ", or "MAXCONTEXT " are commands
|
|
38
|
+
* BACKEND and MODEL commands may optionally be prefixed with "CONDITION " for clarity
|
|
39
|
+
* ENV, SET*, SYSTEM*, TOOL_RESULT, PREFILL, CALL, and MAXCONTEXT commands may be prefixed with "CONDITIONAL " to make them dependent on backend/model test success
|
|
38
40
|
* Other lines are treated as TOOL_RESULT if present
|
|
39
41
|
*/
|
|
40
42
|
function parseHookOutput(stdout) {
|
|
41
43
|
const commands = [];
|
|
42
44
|
const lines = stdout.split("\n").filter((line) => line.trim());
|
|
43
|
-
for (
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
for (let line of lines) {
|
|
46
|
+
let isConditional = false;
|
|
47
|
+
// Handle CONDITIONAL prefix (marks command as dependent on backend/model test)
|
|
48
|
+
if (line.startsWith("CONDITIONAL ")) {
|
|
49
|
+
isConditional = true;
|
|
50
|
+
line = line.slice(12); // Strip "CONDITIONAL "
|
|
51
|
+
}
|
|
52
|
+
// Handle CONDITION prefix (only valid for BACKEND and MODEL)
|
|
53
|
+
if (line.startsWith("CONDITION ")) {
|
|
54
|
+
const remainder = line.slice(10); // Strip "CONDITION "
|
|
55
|
+
if (remainder.startsWith("BACKEND ")) {
|
|
56
|
+
commands.push({ type: "BACKEND", value: remainder.slice(8) });
|
|
57
|
+
}
|
|
58
|
+
else if (remainder.startsWith("MODEL ")) {
|
|
59
|
+
commands.push({ type: "MODEL", value: remainder.slice(6) });
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// CONDITION prefix is only valid for BACKEND and MODEL
|
|
63
|
+
throw new Error(`Invalid hook command: CONDITION prefix is only valid for BACKEND and MODEL commands, got: CONDITION ${remainder}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (line.startsWith("ENV ")) {
|
|
67
|
+
commands.push({ type: "ENV", value: line.slice(4), isConditional });
|
|
46
68
|
}
|
|
47
69
|
else if (line.startsWith("TOOL_RESULT ")) {
|
|
48
|
-
commands.push({ type: "TOOL_RESULT", value: line.slice(12) });
|
|
70
|
+
commands.push({ type: "TOOL_RESULT", value: line.slice(12), isConditional });
|
|
49
71
|
}
|
|
50
72
|
else if (line.startsWith("ECHO ")) {
|
|
73
|
+
if (isConditional) {
|
|
74
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for ECHO commands`);
|
|
75
|
+
}
|
|
51
76
|
commands.push({ type: "ECHO", value: line.slice(5) });
|
|
52
77
|
}
|
|
53
78
|
else if (line.startsWith("RUN ")) {
|
|
79
|
+
if (isConditional) {
|
|
80
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for RUN commands`);
|
|
81
|
+
}
|
|
54
82
|
commands.push({ type: "RUN", value: line.slice(4) });
|
|
55
83
|
}
|
|
56
84
|
else if (line.startsWith("BACKEND ")) {
|
|
85
|
+
if (isConditional) {
|
|
86
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for BACKEND commands (use CONDITION BACKEND instead)`);
|
|
87
|
+
}
|
|
57
88
|
commands.push({ type: "BACKEND", value: line.slice(8) });
|
|
58
89
|
}
|
|
59
90
|
else if (line.startsWith("MODEL ")) {
|
|
91
|
+
if (isConditional) {
|
|
92
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for MODEL commands (use CONDITION MODEL instead)`);
|
|
93
|
+
}
|
|
60
94
|
commands.push({ type: "MODEL", value: line.slice(6) });
|
|
61
95
|
}
|
|
62
96
|
else if (line.startsWith("SYSTEM_FILE ")) {
|
|
63
|
-
commands.push({ type: "SYSTEM_FILE", value: line.slice(12) });
|
|
97
|
+
commands.push({ type: "SYSTEM_FILE", value: line.slice(12), isConditional });
|
|
64
98
|
}
|
|
65
99
|
else if (line.startsWith("SYSTEM ")) {
|
|
66
|
-
commands.push({ type: "SYSTEM", value: line.slice(7) });
|
|
100
|
+
commands.push({ type: "SYSTEM", value: line.slice(7), isConditional });
|
|
67
101
|
}
|
|
68
102
|
else if (line.startsWith("BASE_URL ")) {
|
|
103
|
+
if (isConditional) {
|
|
104
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for BASE_URL commands`);
|
|
105
|
+
}
|
|
69
106
|
commands.push({ type: "BASE_URL", value: line.slice(9) });
|
|
70
107
|
}
|
|
71
108
|
else if (line.startsWith("API_KEY_ENV_VAR ")) {
|
|
109
|
+
if (isConditional) {
|
|
110
|
+
throw new Error(`Invalid hook command: CONDITIONAL prefix is not valid for API_KEY_ENV_VAR commands`);
|
|
111
|
+
}
|
|
72
112
|
commands.push({ type: "API_KEY_ENV_VAR", value: line.slice(16) });
|
|
73
113
|
}
|
|
74
114
|
else if (line.startsWith("SET_TEMP_FILE ")) {
|
|
75
|
-
commands.push({ type: "SET_TEMP_FILE", value: line.slice(14) });
|
|
115
|
+
commands.push({ type: "SET_TEMP_FILE", value: line.slice(14), isConditional });
|
|
76
116
|
}
|
|
77
117
|
else if (line.startsWith("SET_FILE ")) {
|
|
78
|
-
commands.push({ type: "SET_FILE", value: line.slice(9) });
|
|
118
|
+
commands.push({ type: "SET_FILE", value: line.slice(9), isConditional });
|
|
79
119
|
}
|
|
80
120
|
else if (line.startsWith("SET ")) {
|
|
81
|
-
commands.push({ type: "SET", value: line.slice(4) });
|
|
121
|
+
commands.push({ type: "SET", value: line.slice(4), isConditional });
|
|
82
122
|
}
|
|
83
123
|
else if (line.startsWith("PREFILL ")) {
|
|
84
|
-
commands.push({ type: "PREFILL", value: line.slice(8) });
|
|
124
|
+
commands.push({ type: "PREFILL", value: line.slice(8), isConditional });
|
|
125
|
+
}
|
|
126
|
+
else if (line.startsWith("CALL ")) {
|
|
127
|
+
commands.push({ type: "CALL", value: line.slice(5), isConditional });
|
|
128
|
+
}
|
|
129
|
+
else if (line.startsWith("MAXCONTEXT ")) {
|
|
130
|
+
commands.push({ type: "MAXCONTEXT", value: line.slice(11), isConditional });
|
|
85
131
|
}
|
|
86
132
|
else if (line.trim()) {
|
|
87
133
|
// Non-empty lines without a command prefix are treated as TOOL_RESULT
|
|
88
|
-
commands.push({ type: "TOOL_RESULT", value: line });
|
|
134
|
+
commands.push({ type: "TOOL_RESULT", value: line, isConditional });
|
|
89
135
|
}
|
|
90
136
|
}
|
|
91
137
|
return commands;
|
|
@@ -102,21 +148,57 @@ function parseHookOutput(stdout) {
|
|
|
102
148
|
* BASE_URL commands set the base URL to use (last one wins if multiple)
|
|
103
149
|
* API_KEY_ENV_VAR commands set the env var name for API key (last one wins if multiple)
|
|
104
150
|
* PREFILL commands set assistant prefill text (last one wins if multiple)
|
|
151
|
+
* MAXCONTEXT commands set maximum context size in tokens (last one wins if multiple)
|
|
105
152
|
* SET commands set prompt variables (text limited to 10,000 bytes)
|
|
106
153
|
* SET_FILE commands read file contents (up to 20,000 bytes) and set prompt variables
|
|
107
154
|
* SET_TEMP_FILE commands read file contents (up to 20,000 bytes), set prompt variables, and delete file
|
|
155
|
+
*
|
|
156
|
+
* Commands marked with isConditional=true are separated and returned in conditionalResults.
|
|
157
|
+
* These should only be applied after backend/model tests succeed.
|
|
158
|
+
*
|
|
108
159
|
* Returns extracted values for caller to use
|
|
109
160
|
*/
|
|
110
161
|
export function applyHookCommands(commands) {
|
|
162
|
+
// Separate conditional and non-conditional commands
|
|
163
|
+
const immediateCommands = commands.filter(cmd => !cmd.isConditional);
|
|
164
|
+
const conditionalCommands = commands.filter(cmd => cmd.isConditional);
|
|
165
|
+
// Process immediate commands
|
|
166
|
+
const immediateResults = processCommandBatch(immediateCommands);
|
|
167
|
+
// Process conditional commands (if any)
|
|
168
|
+
let conditionalResults = undefined;
|
|
169
|
+
if (conditionalCommands.length > 0) {
|
|
170
|
+
const conditionalBatch = processCommandBatch(conditionalCommands);
|
|
171
|
+
conditionalResults = {
|
|
172
|
+
env: conditionalBatch.env,
|
|
173
|
+
toolResult: conditionalBatch.toolResult,
|
|
174
|
+
system: conditionalBatch.system,
|
|
175
|
+
prefill: conditionalBatch.prefill,
|
|
176
|
+
maxContext: conditionalBatch.maxContext,
|
|
177
|
+
promptVars: conditionalBatch.promptVars,
|
|
178
|
+
calls: conditionalBatch.calls,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
...immediateResults,
|
|
183
|
+
conditionalResults,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Process a batch of hook commands and return extracted values
|
|
188
|
+
* Internal helper for applyHookCommands
|
|
189
|
+
*/
|
|
190
|
+
function processCommandBatch(commands) {
|
|
111
191
|
const env = {};
|
|
112
192
|
const toolResultLines = [];
|
|
113
193
|
const systemLines = [];
|
|
114
|
-
const promptVars =
|
|
194
|
+
const promptVars = [];
|
|
195
|
+
const calls = [];
|
|
115
196
|
let model = undefined;
|
|
116
197
|
let backend = undefined;
|
|
117
198
|
let baseUrl = undefined;
|
|
118
199
|
let apiKeyEnvVar = undefined;
|
|
119
200
|
let prefill = undefined;
|
|
201
|
+
let maxContext = undefined;
|
|
120
202
|
for (const cmd of commands) {
|
|
121
203
|
if (cmd.type === "ENV") {
|
|
122
204
|
// Parse "KEY=VALUE" - DO NOT apply to process.env yet, just extract
|
|
@@ -181,7 +263,7 @@ export function applyHookCommands(commands) {
|
|
|
181
263
|
}
|
|
182
264
|
else if (cmd.type === "SET") {
|
|
183
265
|
// Parse "VAR_NAME=value"
|
|
184
|
-
const match = cmd.value.match(/^([A-
|
|
266
|
+
const match = cmd.value.match(/^([A-Z_:]+)=(.*)$/);
|
|
185
267
|
if (match) {
|
|
186
268
|
const [, varName, value] = match;
|
|
187
269
|
// Limit text values to 10,000 bytes
|
|
@@ -190,12 +272,12 @@ export function applyHookCommands(commands) {
|
|
|
190
272
|
if (finalValue.length > MAX_TEXT_SIZE) {
|
|
191
273
|
finalValue = finalValue.substring(0, MAX_TEXT_SIZE) + "\n\n[Text truncated at 10,000 bytes]";
|
|
192
274
|
}
|
|
193
|
-
promptVars.
|
|
275
|
+
promptVars.push({ name: varName, value: finalValue });
|
|
194
276
|
}
|
|
195
277
|
}
|
|
196
278
|
else if (cmd.type === "SET_FILE") {
|
|
197
279
|
// Parse "VAR_NAME=/path/to/file"
|
|
198
|
-
const match = cmd.value.match(/^([A-
|
|
280
|
+
const match = cmd.value.match(/^([A-Z_:]+)=(.+)$/);
|
|
199
281
|
if (match) {
|
|
200
282
|
const [, varName, filePath] = match;
|
|
201
283
|
try {
|
|
@@ -215,18 +297,18 @@ export function applyHookCommands(commands) {
|
|
|
215
297
|
// Read entire file
|
|
216
298
|
fileContents = fs.readFileSync(expandedPath, 'utf-8');
|
|
217
299
|
}
|
|
218
|
-
promptVars.
|
|
300
|
+
promptVars.push({ name: varName, value: fileContents });
|
|
219
301
|
}
|
|
220
302
|
catch (error) {
|
|
221
303
|
// Add error to variable value
|
|
222
304
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
223
|
-
promptVars.
|
|
305
|
+
promptVars.push({ name: varName, value: `[Error reading file ${filePath}: ${errorMsg}]` });
|
|
224
306
|
}
|
|
225
307
|
}
|
|
226
308
|
}
|
|
227
309
|
else if (cmd.type === "SET_TEMP_FILE") {
|
|
228
310
|
// Parse "VAR_NAME=/path/to/file"
|
|
229
|
-
const match = cmd.value.match(/^([A-
|
|
311
|
+
const match = cmd.value.match(/^([A-Z_:]+)=(.+)$/);
|
|
230
312
|
if (match) {
|
|
231
313
|
const [, varName, filePath] = match;
|
|
232
314
|
try {
|
|
@@ -246,14 +328,14 @@ export function applyHookCommands(commands) {
|
|
|
246
328
|
// Read entire file
|
|
247
329
|
fileContents = fs.readFileSync(expandedPath, 'utf-8');
|
|
248
330
|
}
|
|
249
|
-
promptVars.
|
|
331
|
+
promptVars.push({ name: varName, value: fileContents });
|
|
250
332
|
// Delete temp file after reading
|
|
251
333
|
fs.unlinkSync(expandedPath);
|
|
252
334
|
}
|
|
253
335
|
catch (error) {
|
|
254
336
|
// Add error to variable value (file might not exist or delete might fail)
|
|
255
337
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
256
|
-
promptVars.
|
|
338
|
+
promptVars.push({ name: varName, value: `[Error with temp file ${filePath}: ${errorMsg}]` });
|
|
257
339
|
}
|
|
258
340
|
}
|
|
259
341
|
}
|
|
@@ -261,6 +343,17 @@ export function applyHookCommands(commands) {
|
|
|
261
343
|
// PREFILL sets the assistant prefill text (last one wins if multiple)
|
|
262
344
|
prefill = cmd.value;
|
|
263
345
|
}
|
|
346
|
+
else if (cmd.type === "MAXCONTEXT") {
|
|
347
|
+
// MAXCONTEXT sets the maximum context size in tokens (last one wins if multiple)
|
|
348
|
+
const value = parseInt(cmd.value.trim(), 10);
|
|
349
|
+
if (!isNaN(value) && value > 0) {
|
|
350
|
+
maxContext = value;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
else if (cmd.type === "CALL") {
|
|
354
|
+
// CALL commands are collected for asynchronous execution after hook processing
|
|
355
|
+
calls.push(cmd.value);
|
|
356
|
+
}
|
|
264
357
|
}
|
|
265
358
|
return {
|
|
266
359
|
env,
|
|
@@ -271,7 +364,9 @@ export function applyHookCommands(commands) {
|
|
|
271
364
|
baseUrl,
|
|
272
365
|
apiKeyEnvVar,
|
|
273
366
|
prefill,
|
|
367
|
+
maxContext,
|
|
274
368
|
promptVars,
|
|
369
|
+
calls,
|
|
275
370
|
};
|
|
276
371
|
}
|
|
277
372
|
/**
|
|
@@ -389,14 +484,16 @@ export async function executeOperationHook(hookPath, operation, data, timeoutMs
|
|
|
389
484
|
});
|
|
390
485
|
}
|
|
391
486
|
/**
|
|
392
|
-
*
|
|
487
|
+
* Generic tool hook executor for both approval and preToolCall hooks
|
|
393
488
|
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
489
|
+
* @param operation Operation name to set in environment (or undefined for toolApproval)
|
|
394
490
|
* @param toolName Name of the tool being executed
|
|
395
491
|
* @param parameters Tool parameters as key-value pairs
|
|
396
492
|
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
493
|
+
* @param blockOnError If true, non-zero exit code rejects; if false, processes commands anyway
|
|
397
494
|
* @returns Promise<HookResult>
|
|
398
495
|
*/
|
|
399
|
-
|
|
496
|
+
async function executeToolHook(hookPath, operation, toolName, parameters, timeoutMs = 30000, blockOnError = true, contextCurrent, contextMax) {
|
|
400
497
|
// Expand ~ to home directory
|
|
401
498
|
const expandedPath = expandTilde(hookPath);
|
|
402
499
|
// Build environment with tool info using ZDS_AI_AGENT_* naming convention
|
|
@@ -406,6 +503,10 @@ export async function executeToolApprovalHook(hookPath, toolName, parameters, ti
|
|
|
406
503
|
...process.env,
|
|
407
504
|
[`${ENV_PREFIX}TOOL_NAME`]: toolName,
|
|
408
505
|
};
|
|
506
|
+
// Set operation if provided (preToolCall sets this, toolApproval doesn't)
|
|
507
|
+
if (operation) {
|
|
508
|
+
env[`${ENV_PREFIX}OPERATION`] = operation;
|
|
509
|
+
}
|
|
409
510
|
// Add context information if provided
|
|
410
511
|
if (contextCurrent !== undefined) {
|
|
411
512
|
env[`${ENV_PREFIX}CONTEXT_CURRENT`] = contextCurrent.toString();
|
|
@@ -431,30 +532,137 @@ export async function executeToolApprovalHook(hookPath, toolName, parameters, ti
|
|
|
431
532
|
});
|
|
432
533
|
return;
|
|
433
534
|
}
|
|
434
|
-
// Non-zero exit code
|
|
535
|
+
// Non-zero exit code handling depends on blockOnError
|
|
435
536
|
if (error.code && error.code > 0) {
|
|
436
|
-
// Parse commands even on
|
|
537
|
+
// Parse commands even on error
|
|
437
538
|
const commands = parseHookOutput(stdout);
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
539
|
+
if (blockOnError) {
|
|
540
|
+
// Extract TOOL_RESULT commands as the denial reason
|
|
541
|
+
const toolResultLines = [];
|
|
542
|
+
for (const cmd of commands) {
|
|
543
|
+
if (cmd.type === "TOOL_RESULT") {
|
|
544
|
+
toolResultLines.push(cmd.value);
|
|
545
|
+
}
|
|
443
546
|
}
|
|
547
|
+
const reason = toolResultLines.length > 0
|
|
548
|
+
? toolResultLines.join("\n")
|
|
549
|
+
: (stdout.trim() || stderr.trim() || "Tool execution denied by hook");
|
|
550
|
+
resolve({
|
|
551
|
+
approved: false,
|
|
552
|
+
reason,
|
|
553
|
+
timedOut: false,
|
|
554
|
+
commands,
|
|
555
|
+
});
|
|
444
556
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
557
|
+
else {
|
|
558
|
+
// Non-blocking hook: process commands anyway
|
|
559
|
+
resolve({
|
|
560
|
+
approved: true,
|
|
561
|
+
timedOut: false,
|
|
562
|
+
commands,
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
// Exit code 0 = success
|
|
569
|
+
const commands = parseHookOutput(stdout);
|
|
570
|
+
resolve({
|
|
571
|
+
approved: true,
|
|
572
|
+
timedOut: false,
|
|
573
|
+
commands,
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
// Handle timeout explicitly
|
|
577
|
+
setTimeout(() => {
|
|
578
|
+
try {
|
|
579
|
+
child.kill("SIGTERM");
|
|
580
|
+
}
|
|
581
|
+
catch (_e) {
|
|
582
|
+
// Process may have already exited
|
|
583
|
+
}
|
|
584
|
+
}, timeoutMs);
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Execute a preToolCall hook with tool name and parameters passed via environment
|
|
589
|
+
* This hook runs before tool execution and can modify environment/prompt variables
|
|
590
|
+
* Non-blocking: always processes commands even on non-zero exit
|
|
591
|
+
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
592
|
+
* @param toolName Name of the tool being executed
|
|
593
|
+
* @param parameters Tool parameters as key-value pairs
|
|
594
|
+
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
595
|
+
* @returns Promise<HookResult>
|
|
596
|
+
*/
|
|
597
|
+
export async function executePreToolCallHook(hookPath, toolName, parameters, timeoutMs = 30000, contextCurrent, contextMax) {
|
|
598
|
+
return executeToolHook(hookPath, "preToolCall", toolName, parameters, timeoutMs, false, // Non-blocking: process commands even on error
|
|
599
|
+
contextCurrent, contextMax);
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Execute a postToolCall hook with tool name, parameters, and result passed via environment
|
|
603
|
+
* This hook runs after tool execution and can add context/guidance based on results
|
|
604
|
+
* Non-blocking: always processes commands even on non-zero exit
|
|
605
|
+
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
606
|
+
* @param toolName Name of the tool that was executed
|
|
607
|
+
* @param parameters Tool parameters as key-value pairs
|
|
608
|
+
* @param result Tool execution result
|
|
609
|
+
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
610
|
+
* @returns Promise<HookResult>
|
|
611
|
+
*/
|
|
612
|
+
export async function executePostToolCallHook(hookPath, toolName, parameters, result, timeoutMs = 30000, contextCurrent, contextMax) {
|
|
613
|
+
// Expand ~ to home directory
|
|
614
|
+
const expandedPath = expandTilde(hookPath);
|
|
615
|
+
// Build environment with tool info and result using ZDS_AI_AGENT_* naming convention
|
|
616
|
+
const env = {
|
|
617
|
+
...process.env,
|
|
618
|
+
[`${ENV_PREFIX}OPERATION`]: "postToolCall",
|
|
619
|
+
[`${ENV_PREFIX}TOOL_NAME`]: toolName,
|
|
620
|
+
[`${ENV_PREFIX}TOOL_SUCCESS`]: result.success.toString(),
|
|
621
|
+
};
|
|
622
|
+
// Add tool output/error to environment
|
|
623
|
+
if (result.output) {
|
|
624
|
+
env[`${ENV_PREFIX}TOOL_OUTPUT`] = result.output;
|
|
625
|
+
}
|
|
626
|
+
if (result.error) {
|
|
627
|
+
env[`${ENV_PREFIX}TOOL_ERROR`] = result.error;
|
|
628
|
+
}
|
|
629
|
+
// Add context information if provided
|
|
630
|
+
if (contextCurrent !== undefined) {
|
|
631
|
+
env[`${ENV_PREFIX}CONTEXT_CURRENT`] = contextCurrent.toString();
|
|
632
|
+
}
|
|
633
|
+
if (contextMax !== undefined) {
|
|
634
|
+
env[`${ENV_PREFIX}CONTEXT_MAX`] = contextMax.toString();
|
|
635
|
+
}
|
|
636
|
+
// Add each parameter as ZDS_AI_AGENT_PARAM_<KEY>=<VALUE>
|
|
637
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
638
|
+
const envKey = `${ENV_PREFIX}PARAM_${key.toUpperCase()}`;
|
|
639
|
+
env[envKey] = typeof value === 'string' ? value : JSON.stringify(value);
|
|
640
|
+
}
|
|
641
|
+
return new Promise((resolve) => {
|
|
642
|
+
// Execute hook with isolated environment (child process only)
|
|
643
|
+
const child = exec(expandedPath, { env, timeout: timeoutMs }, (error, stdout, stderr) => {
|
|
644
|
+
if (error) {
|
|
645
|
+
// Check if it was a timeout
|
|
646
|
+
if (error.killed && error.signal === "SIGTERM") {
|
|
647
|
+
// Timeout = auto-approve (don't block the agent)
|
|
448
648
|
resolve({
|
|
449
|
-
approved:
|
|
450
|
-
|
|
649
|
+
approved: true,
|
|
650
|
+
timedOut: true,
|
|
651
|
+
});
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
// Non-zero exit code: non-blocking, process commands anyway
|
|
655
|
+
if (error.code && error.code > 0) {
|
|
656
|
+
const commands = parseHookOutput(stdout);
|
|
657
|
+
resolve({
|
|
658
|
+
approved: true,
|
|
451
659
|
timedOut: false,
|
|
452
660
|
commands,
|
|
453
661
|
});
|
|
454
662
|
return;
|
|
455
663
|
}
|
|
456
664
|
}
|
|
457
|
-
// Exit code 0 =
|
|
665
|
+
// Exit code 0 = success
|
|
458
666
|
const commands = parseHookOutput(stdout);
|
|
459
667
|
resolve({
|
|
460
668
|
approved: true,
|
|
@@ -473,4 +681,18 @@ export async function executeToolApprovalHook(hookPath, toolName, parameters, ti
|
|
|
473
681
|
}, timeoutMs);
|
|
474
682
|
});
|
|
475
683
|
}
|
|
684
|
+
/**
|
|
685
|
+
* Execute a tool approval hook with tool name and parameters passed via environment
|
|
686
|
+
* Blocking: non-zero exit code rejects the tool execution
|
|
687
|
+
* @param hookPath Path to hook script (supports ~/ expansion)
|
|
688
|
+
* @param toolName Name of the tool being executed
|
|
689
|
+
* @param parameters Tool parameters as key-value pairs
|
|
690
|
+
* @param timeoutMs Timeout in milliseconds (default 30000)
|
|
691
|
+
* @returns Promise<HookResult>
|
|
692
|
+
*/
|
|
693
|
+
export async function executeToolApprovalHook(hookPath, toolName, parameters, timeoutMs = 30000, contextCurrent, contextMax) {
|
|
694
|
+
return executeToolHook(hookPath, undefined, // toolApproval doesn't set OPERATION
|
|
695
|
+
toolName, parameters, timeoutMs, true, // Blocking: reject on error
|
|
696
|
+
contextCurrent, contextMax);
|
|
697
|
+
}
|
|
476
698
|
//# sourceMappingURL=hook-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-executor.js","sourceRoot":"","sources":["../../src/utils/hook-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook-executor.js","sourceRoot":"","sources":["../../src/utils/hook-executor.ts"],"names":[],"mappings":"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"}
|