wave-agent-sdk 0.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 +32 -0
- package/dist/agent.d.ts +96 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +286 -0
- package/dist/hooks/executor.d.ts +56 -0
- package/dist/hooks/executor.d.ts.map +1 -0
- package/dist/hooks/executor.js +312 -0
- package/dist/hooks/index.d.ts +17 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +14 -0
- package/dist/hooks/manager.d.ts +90 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +395 -0
- package/dist/hooks/matcher.d.ts +49 -0
- package/dist/hooks/matcher.d.ts.map +1 -0
- package/dist/hooks/matcher.js +147 -0
- package/dist/hooks/settings.d.ts +46 -0
- package/dist/hooks/settings.d.ts.map +1 -0
- package/dist/hooks/settings.js +100 -0
- package/dist/hooks/types.d.ts +80 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +59 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/managers/aiManager.d.ts +61 -0
- package/dist/managers/aiManager.d.ts.map +1 -0
- package/dist/managers/aiManager.js +415 -0
- package/dist/managers/backgroundBashManager.d.ts +27 -0
- package/dist/managers/backgroundBashManager.d.ts.map +1 -0
- package/dist/managers/backgroundBashManager.js +166 -0
- package/dist/managers/bashManager.d.ts +20 -0
- package/dist/managers/bashManager.d.ts.map +1 -0
- package/dist/managers/bashManager.js +66 -0
- package/dist/managers/mcpManager.d.ts +63 -0
- package/dist/managers/mcpManager.d.ts.map +1 -0
- package/dist/managers/mcpManager.js +378 -0
- package/dist/managers/messageManager.d.ts +85 -0
- package/dist/managers/messageManager.d.ts.map +1 -0
- package/dist/managers/messageManager.js +265 -0
- package/dist/managers/skillManager.d.ts +59 -0
- package/dist/managers/skillManager.d.ts.map +1 -0
- package/dist/managers/skillManager.js +317 -0
- package/dist/managers/slashCommandManager.d.ts +77 -0
- package/dist/managers/slashCommandManager.d.ts.map +1 -0
- package/dist/managers/slashCommandManager.js +208 -0
- package/dist/managers/toolManager.d.ts +23 -0
- package/dist/managers/toolManager.d.ts.map +1 -0
- package/dist/managers/toolManager.js +79 -0
- package/dist/services/aiService.d.ts +28 -0
- package/dist/services/aiService.d.ts.map +1 -0
- package/dist/services/aiService.js +180 -0
- package/dist/services/memory.d.ts +8 -0
- package/dist/services/memory.d.ts.map +1 -0
- package/dist/services/memory.js +128 -0
- package/dist/services/session.d.ts +54 -0
- package/dist/services/session.d.ts.map +1 -0
- package/dist/services/session.js +196 -0
- package/dist/tools/bashTool.d.ts +14 -0
- package/dist/tools/bashTool.d.ts.map +1 -0
- package/dist/tools/bashTool.js +351 -0
- package/dist/tools/deleteFileTool.d.ts +6 -0
- package/dist/tools/deleteFileTool.d.ts.map +1 -0
- package/dist/tools/deleteFileTool.js +67 -0
- package/dist/tools/editTool.d.ts +6 -0
- package/dist/tools/editTool.d.ts.map +1 -0
- package/dist/tools/editTool.js +168 -0
- package/dist/tools/globTool.d.ts +6 -0
- package/dist/tools/globTool.d.ts.map +1 -0
- package/dist/tools/globTool.js +113 -0
- package/dist/tools/grepTool.d.ts +6 -0
- package/dist/tools/grepTool.d.ts.map +1 -0
- package/dist/tools/grepTool.js +268 -0
- package/dist/tools/lsTool.d.ts +6 -0
- package/dist/tools/lsTool.d.ts.map +1 -0
- package/dist/tools/lsTool.js +160 -0
- package/dist/tools/multiEditTool.d.ts +6 -0
- package/dist/tools/multiEditTool.d.ts.map +1 -0
- package/dist/tools/multiEditTool.js +222 -0
- package/dist/tools/readTool.d.ts +6 -0
- package/dist/tools/readTool.d.ts.map +1 -0
- package/dist/tools/readTool.js +136 -0
- package/dist/tools/types.d.ts +35 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +4 -0
- package/dist/tools/writeTool.d.ts +6 -0
- package/dist/tools/writeTool.d.ts.map +1 -0
- package/dist/tools/writeTool.js +138 -0
- package/dist/types.d.ts +212 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/utils/bashHistory.d.ts +46 -0
- package/dist/utils/bashHistory.d.ts.map +1 -0
- package/dist/utils/bashHistory.js +236 -0
- package/dist/utils/commandArgumentParser.d.ts +34 -0
- package/dist/utils/commandArgumentParser.d.ts.map +1 -0
- package/dist/utils/commandArgumentParser.js +123 -0
- package/dist/utils/constants.d.ts +27 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +28 -0
- package/dist/utils/convertMessagesForAPI.d.ts +9 -0
- package/dist/utils/convertMessagesForAPI.d.ts.map +1 -0
- package/dist/utils/convertMessagesForAPI.js +189 -0
- package/dist/utils/customCommands.d.ts +14 -0
- package/dist/utils/customCommands.d.ts.map +1 -0
- package/dist/utils/customCommands.js +71 -0
- package/dist/utils/fileFilter.d.ts +26 -0
- package/dist/utils/fileFilter.d.ts.map +1 -0
- package/dist/utils/fileFilter.js +177 -0
- package/dist/utils/markdownParser.d.ts +27 -0
- package/dist/utils/markdownParser.d.ts.map +1 -0
- package/dist/utils/markdownParser.js +109 -0
- package/dist/utils/mcpUtils.d.ts +24 -0
- package/dist/utils/mcpUtils.d.ts.map +1 -0
- package/dist/utils/mcpUtils.js +51 -0
- package/dist/utils/messageOperations.d.ts +118 -0
- package/dist/utils/messageOperations.d.ts.map +1 -0
- package/dist/utils/messageOperations.js +334 -0
- package/dist/utils/path.d.ts +25 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +109 -0
- package/dist/utils/skillParser.d.ts +18 -0
- package/dist/utils/skillParser.d.ts.map +1 -0
- package/dist/utils/skillParser.js +147 -0
- package/dist/utils/stringUtils.d.ts +13 -0
- package/dist/utils/stringUtils.d.ts.map +1 -0
- package/dist/utils/stringUtils.js +44 -0
- package/package.json +51 -0
- package/src/agent.ts +405 -0
- package/src/hooks/executor.ts +440 -0
- package/src/hooks/index.ts +52 -0
- package/src/hooks/manager.ts +618 -0
- package/src/hooks/matcher.ts +187 -0
- package/src/hooks/settings.ts +129 -0
- package/src/hooks/types.ts +169 -0
- package/src/index.ts +24 -0
- package/src/managers/aiManager.ts +573 -0
- package/src/managers/backgroundBashManager.ts +203 -0
- package/src/managers/bashManager.ts +97 -0
- package/src/managers/mcpManager.ts +493 -0
- package/src/managers/messageManager.ts +415 -0
- package/src/managers/skillManager.ts +404 -0
- package/src/managers/slashCommandManager.ts +293 -0
- package/src/managers/toolManager.ts +106 -0
- package/src/services/aiService.ts +252 -0
- package/src/services/memory.ts +149 -0
- package/src/services/session.ts +265 -0
- package/src/tools/bashTool.ts +402 -0
- package/src/tools/deleteFileTool.ts +81 -0
- package/src/tools/editTool.ts +192 -0
- package/src/tools/globTool.ts +135 -0
- package/src/tools/grepTool.ts +326 -0
- package/src/tools/lsTool.ts +187 -0
- package/src/tools/multiEditTool.ts +268 -0
- package/src/tools/readTool.ts +165 -0
- package/src/tools/types.ts +47 -0
- package/src/tools/writeTool.ts +163 -0
- package/src/types.ts +260 -0
- package/src/utils/bashHistory.ts +303 -0
- package/src/utils/commandArgumentParser.ts +153 -0
- package/src/utils/constants.ts +37 -0
- package/src/utils/convertMessagesForAPI.ts +236 -0
- package/src/utils/customCommands.ts +85 -0
- package/src/utils/fileFilter.ts +202 -0
- package/src/utils/markdownParser.ts +156 -0
- package/src/utils/mcpUtils.ts +81 -0
- package/src/utils/messageOperations.ts +506 -0
- package/src/utils/path.ts +118 -0
- package/src/utils/skillParser.ts +188 -0
- package/src/utils/stringUtils.ts +50 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook Settings Management
|
|
3
|
+
*
|
|
4
|
+
* Handles loading and merging of hook configurations from:
|
|
5
|
+
* - User settings: ~/.wave/hooks.json
|
|
6
|
+
* - Project settings: ./.wave/hooks.json
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from "fs";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { homedir } from "os";
|
|
11
|
+
import { isValidHookEvent } from "./types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Get the user-specific hooks configuration file path
|
|
14
|
+
*/
|
|
15
|
+
export function getUserHooksConfigPath() {
|
|
16
|
+
return join(homedir(), ".wave", "hooks.json");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the project-specific hooks configuration file path
|
|
20
|
+
*/
|
|
21
|
+
export function getProjectHooksConfigPath(workdir) {
|
|
22
|
+
return join(workdir, ".wave", "hooks.json");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load hooks configuration from a JSON file
|
|
26
|
+
*/
|
|
27
|
+
export function loadHooksConfigFromFile(filePath) {
|
|
28
|
+
try {
|
|
29
|
+
if (!existsSync(filePath)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const content = readFileSync(filePath, "utf-8");
|
|
33
|
+
const config = JSON.parse(content);
|
|
34
|
+
// Validate basic structure
|
|
35
|
+
if (!config || typeof config !== "object" || !config.hooks) {
|
|
36
|
+
console.warn(`Invalid hooks configuration structure in ${filePath}`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return config.hooks;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.warn(`Failed to load hooks configuration from ${filePath}:`, error);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Load user hooks configuration
|
|
48
|
+
*/
|
|
49
|
+
export function loadUserHooksConfig() {
|
|
50
|
+
return loadHooksConfigFromFile(getUserHooksConfigPath());
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load project hooks configuration
|
|
54
|
+
*/
|
|
55
|
+
export function loadProjectHooksConfig(workdir) {
|
|
56
|
+
return loadHooksConfigFromFile(getProjectHooksConfigPath(workdir));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Load and merge hooks configuration with project settings taking precedence
|
|
60
|
+
*/
|
|
61
|
+
export function loadMergedHooksConfig(workdir) {
|
|
62
|
+
const userConfig = loadUserHooksConfig();
|
|
63
|
+
const projectConfig = loadProjectHooksConfig(workdir);
|
|
64
|
+
const merged = {};
|
|
65
|
+
// Start with user configuration
|
|
66
|
+
if (userConfig) {
|
|
67
|
+
Object.entries(userConfig).forEach(([event, configs]) => {
|
|
68
|
+
if (isValidHookEvent(event)) {
|
|
69
|
+
merged[event] = [...configs];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Override with project configuration (project takes precedence)
|
|
74
|
+
if (projectConfig) {
|
|
75
|
+
Object.entries(projectConfig).forEach(([event, configs]) => {
|
|
76
|
+
if (isValidHookEvent(event)) {
|
|
77
|
+
merged[event] = [...configs];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return merged;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if any hooks configuration files exist
|
|
85
|
+
*/
|
|
86
|
+
export function hasHooksConfiguration(workdir) {
|
|
87
|
+
return (existsSync(getUserHooksConfigPath()) ||
|
|
88
|
+
existsSync(getProjectHooksConfigPath(workdir)));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get information about available hooks configuration files
|
|
92
|
+
*/
|
|
93
|
+
export function getHooksConfigurationInfo(workdir) {
|
|
94
|
+
return {
|
|
95
|
+
userConfigExists: existsSync(getUserHooksConfigPath()),
|
|
96
|
+
projectConfigExists: existsSync(getProjectHooksConfigPath(workdir)),
|
|
97
|
+
userConfigPath: getUserHooksConfigPath(),
|
|
98
|
+
projectConfigPath: getProjectHooksConfigPath(workdir),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks System Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive TypeScript types for the Wave Code hooks system,
|
|
5
|
+
* enabling automated actions at specific workflow points.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getSessionFilePath(sessionId: string): string;
|
|
8
|
+
export type HookEvent = "PreToolUse" | "PostToolUse" | "UserPromptSubmit" | "Stop";
|
|
9
|
+
export interface HookCommand {
|
|
10
|
+
type: "command";
|
|
11
|
+
command: string;
|
|
12
|
+
}
|
|
13
|
+
export interface HookEventConfig {
|
|
14
|
+
matcher?: string;
|
|
15
|
+
hooks: HookCommand[];
|
|
16
|
+
}
|
|
17
|
+
export interface HookConfiguration {
|
|
18
|
+
hooks: Partial<Record<HookEvent, HookEventConfig[]>>;
|
|
19
|
+
}
|
|
20
|
+
export type PartialHookConfiguration = Partial<Record<HookEvent, HookEventConfig[]>>;
|
|
21
|
+
export type HookConfigurationRecord = Record<HookEvent, HookEventConfig[]>;
|
|
22
|
+
export interface HookExecutionContext {
|
|
23
|
+
event: HookEvent;
|
|
24
|
+
toolName?: string;
|
|
25
|
+
projectDir: string;
|
|
26
|
+
timestamp: Date;
|
|
27
|
+
}
|
|
28
|
+
export interface HookExecutionResult {
|
|
29
|
+
success: boolean;
|
|
30
|
+
exitCode?: number;
|
|
31
|
+
stdout?: string;
|
|
32
|
+
stderr?: string;
|
|
33
|
+
duration: number;
|
|
34
|
+
timedOut: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface HookExecutionOptions {
|
|
37
|
+
timeout?: number;
|
|
38
|
+
cwd?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ValidationResult {
|
|
41
|
+
valid: boolean;
|
|
42
|
+
errors: string[];
|
|
43
|
+
}
|
|
44
|
+
export declare class HookExecutionError extends Error {
|
|
45
|
+
readonly hookCommand: string;
|
|
46
|
+
readonly originalError: Error;
|
|
47
|
+
readonly context: HookExecutionContext;
|
|
48
|
+
constructor(hookCommand: string, originalError: Error, context: HookExecutionContext);
|
|
49
|
+
}
|
|
50
|
+
export declare class HookConfigurationError extends Error {
|
|
51
|
+
readonly configPath: string;
|
|
52
|
+
readonly validationErrors: string[];
|
|
53
|
+
constructor(configPath: string, validationErrors: string[]);
|
|
54
|
+
}
|
|
55
|
+
export declare function isValidHookEvent(event: string): event is HookEvent;
|
|
56
|
+
export declare function isValidHookCommand(cmd: unknown): cmd is HookCommand;
|
|
57
|
+
export declare function isValidHookEventConfig(config: unknown): config is HookEventConfig;
|
|
58
|
+
export interface HookJsonInput {
|
|
59
|
+
session_id: string;
|
|
60
|
+
transcript_path: string;
|
|
61
|
+
cwd: string;
|
|
62
|
+
hook_event_name: HookEvent;
|
|
63
|
+
tool_name?: string;
|
|
64
|
+
tool_input?: unknown;
|
|
65
|
+
tool_response?: unknown;
|
|
66
|
+
user_prompt?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface ExtendedHookExecutionContext extends HookExecutionContext {
|
|
69
|
+
sessionId?: string;
|
|
70
|
+
transcriptPath?: string;
|
|
71
|
+
cwd?: string;
|
|
72
|
+
toolInput?: unknown;
|
|
73
|
+
toolResponse?: unknown;
|
|
74
|
+
userPrompt?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface HookEnvironment {
|
|
77
|
+
WAVE_PROJECT_DIR: string;
|
|
78
|
+
[key: string]: string;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks System Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive TypeScript types for the Wave Code hooks system,
|
|
5
|
+
* enabling automated actions at specific workflow points.
|
|
6
|
+
*/
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
import { homedir } from "os";
|
|
9
|
+
// Session path utility (from session.ts)
|
|
10
|
+
export function getSessionFilePath(sessionId) {
|
|
11
|
+
const shortId = sessionId.split("_")[2] || sessionId.slice(-8);
|
|
12
|
+
return join(homedir(), ".wave", "sessions", `session_${shortId}.json`);
|
|
13
|
+
}
|
|
14
|
+
// Hook execution errors (non-blocking)
|
|
15
|
+
export class HookExecutionError extends Error {
|
|
16
|
+
constructor(hookCommand, originalError, context) {
|
|
17
|
+
super(`Hook execution failed: ${hookCommand} - ${originalError.message}`);
|
|
18
|
+
this.hookCommand = hookCommand;
|
|
19
|
+
this.originalError = originalError;
|
|
20
|
+
this.context = context;
|
|
21
|
+
this.name = "HookExecutionError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Configuration validation errors (blocking)
|
|
25
|
+
export class HookConfigurationError extends Error {
|
|
26
|
+
constructor(configPath, validationErrors) {
|
|
27
|
+
super(`Hook configuration error in ${configPath}: ${validationErrors.join(", ")}`);
|
|
28
|
+
this.configPath = configPath;
|
|
29
|
+
this.validationErrors = validationErrors;
|
|
30
|
+
this.name = "HookConfigurationError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Type guards for runtime validation
|
|
34
|
+
export function isValidHookEvent(event) {
|
|
35
|
+
return ["PreToolUse", "PostToolUse", "UserPromptSubmit", "Stop"].includes(event);
|
|
36
|
+
}
|
|
37
|
+
export function isValidHookCommand(cmd) {
|
|
38
|
+
return (typeof cmd === "object" &&
|
|
39
|
+
cmd !== null &&
|
|
40
|
+
"type" in cmd &&
|
|
41
|
+
cmd.type === "command" &&
|
|
42
|
+
"command" in cmd &&
|
|
43
|
+
typeof cmd.command === "string" &&
|
|
44
|
+
cmd.command.length > 0);
|
|
45
|
+
}
|
|
46
|
+
export function isValidHookEventConfig(config) {
|
|
47
|
+
if (typeof config !== "object" || config === null)
|
|
48
|
+
return false;
|
|
49
|
+
const cfg = config;
|
|
50
|
+
// Validate hooks array
|
|
51
|
+
if (!Array.isArray(cfg.hooks) || cfg.hooks.length === 0)
|
|
52
|
+
return false;
|
|
53
|
+
if (!cfg.hooks.every(isValidHookCommand))
|
|
54
|
+
return false;
|
|
55
|
+
// Validate optional matcher
|
|
56
|
+
if ("matcher" in cfg && typeof cfg.matcher !== "string")
|
|
57
|
+
return false;
|
|
58
|
+
return true;
|
|
59
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./services/aiService.js";
|
|
2
|
+
export * from "./services/memory.js";
|
|
3
|
+
export * from "./services/session.js";
|
|
4
|
+
export * from "./agent.js";
|
|
5
|
+
export * from "./utils/bashHistory.js";
|
|
6
|
+
export * from "./utils/convertMessagesForAPI.js";
|
|
7
|
+
export * from "./utils/fileFilter.js";
|
|
8
|
+
export * from "./utils/mcpUtils.js";
|
|
9
|
+
export * from "./utils/messageOperations.js";
|
|
10
|
+
export * from "./utils/path.js";
|
|
11
|
+
export * from "./utils/stringUtils.js";
|
|
12
|
+
export * from "./utils/markdownParser.js";
|
|
13
|
+
export * from "./utils/customCommands.js";
|
|
14
|
+
export * from "./hooks/index.js";
|
|
15
|
+
export * from "./types.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,YAAY,CAAC;AAG3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Export all services
|
|
2
|
+
export * from "./services/aiService.js";
|
|
3
|
+
export * from "./services/memory.js";
|
|
4
|
+
export * from "./services/session.js";
|
|
5
|
+
// Export main agent
|
|
6
|
+
export * from "./agent.js";
|
|
7
|
+
// Export all utilities
|
|
8
|
+
export * from "./utils/bashHistory.js";
|
|
9
|
+
export * from "./utils/convertMessagesForAPI.js";
|
|
10
|
+
export * from "./utils/fileFilter.js";
|
|
11
|
+
export * from "./utils/mcpUtils.js";
|
|
12
|
+
export * from "./utils/messageOperations.js";
|
|
13
|
+
export * from "./utils/path.js";
|
|
14
|
+
export * from "./utils/stringUtils.js";
|
|
15
|
+
export * from "./utils/markdownParser.js";
|
|
16
|
+
export * from "./utils/customCommands.js";
|
|
17
|
+
// Export hooks system
|
|
18
|
+
export * from "./hooks/index.js";
|
|
19
|
+
// Export types
|
|
20
|
+
export * from "./types.js";
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Logger } from "../types.js";
|
|
2
|
+
import type { ToolManager } from "./toolManager.js";
|
|
3
|
+
import type { MessageManager } from "./messageManager.js";
|
|
4
|
+
import type { BackgroundBashManager } from "./backgroundBashManager.js";
|
|
5
|
+
import type { HookManager } from "../hooks/index.js";
|
|
6
|
+
export interface AIManagerCallbacks {
|
|
7
|
+
onCompressionStateChange?: (isCompressing: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface AIManagerOptions {
|
|
10
|
+
messageManager: MessageManager;
|
|
11
|
+
toolManager: ToolManager;
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
backgroundBashManager?: BackgroundBashManager;
|
|
14
|
+
hookManager?: HookManager;
|
|
15
|
+
callbacks?: AIManagerCallbacks;
|
|
16
|
+
workdir: string;
|
|
17
|
+
systemPrompt?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class AIManager {
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
private abortController;
|
|
22
|
+
private toolAbortController;
|
|
23
|
+
private logger?;
|
|
24
|
+
private toolManager;
|
|
25
|
+
private messageManager;
|
|
26
|
+
private backgroundBashManager?;
|
|
27
|
+
private hookManager?;
|
|
28
|
+
private workdir;
|
|
29
|
+
private systemPrompt?;
|
|
30
|
+
constructor(options: AIManagerOptions);
|
|
31
|
+
private isCompressing;
|
|
32
|
+
private callbacks;
|
|
33
|
+
/**
|
|
34
|
+
* Get filtered tool configuration
|
|
35
|
+
*/
|
|
36
|
+
private getFilteredToolsConfig;
|
|
37
|
+
setIsLoading(isLoading: boolean): void;
|
|
38
|
+
abortAIMessage(): void;
|
|
39
|
+
private generateCompactParams;
|
|
40
|
+
private handleTokenUsageAndCompression;
|
|
41
|
+
getIsCompressing(): boolean;
|
|
42
|
+
setIsCompressing(isCompressing: boolean): void;
|
|
43
|
+
sendAIMessage(options?: {
|
|
44
|
+
recursionDepth?: number;
|
|
45
|
+
model?: string;
|
|
46
|
+
allowedTools?: string[];
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Execute Stop hooks when AI response cycle completes
|
|
50
|
+
*/
|
|
51
|
+
private executeStopHooks;
|
|
52
|
+
/**
|
|
53
|
+
* Execute PreToolUse hooks before tool execution
|
|
54
|
+
*/
|
|
55
|
+
private executePreToolUseHooks;
|
|
56
|
+
/**
|
|
57
|
+
* Execute PostToolUse hooks after tool completion
|
|
58
|
+
*/
|
|
59
|
+
private executePostToolUseHooks;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=aiManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,SAAS;IACb,SAAS,EAAE,OAAO,CAAS;IAClC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,EAAE,gBAAgB;IAWrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAqB;IAEtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAYvB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,cAAc,IAAI,IAAI;IAuB7B,OAAO,CAAC,qBAAqB;YAqBf,8BAA8B;IAuDrC,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAOxC,aAAa,CACxB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,GACL,OAAO,CAAC,IAAI,CAAC;IA6PhB;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,sBAAsB;IA0CpC;;OAEG;YACW,uBAAuB;CA2CtC"}
|