wave-agent-sdk 0.0.4 → 0.0.6

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.
Files changed (155) hide show
  1. package/dist/agent.d.ts +63 -9
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +103 -27
  4. package/dist/index.d.ts +3 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -3
  7. package/dist/managers/aiManager.d.ts +5 -2
  8. package/dist/managers/aiManager.d.ts.map +1 -1
  9. package/dist/managers/aiManager.js +121 -53
  10. package/dist/managers/backgroundBashManager.d.ts +1 -1
  11. package/dist/managers/backgroundBashManager.d.ts.map +1 -1
  12. package/dist/{hooks/manager.d.ts → managers/hookManager.d.ts} +26 -7
  13. package/dist/managers/hookManager.d.ts.map +1 -0
  14. package/dist/{hooks/manager.js → managers/hookManager.js} +108 -18
  15. package/dist/managers/mcpManager.d.ts +1 -1
  16. package/dist/managers/mcpManager.d.ts.map +1 -1
  17. package/dist/managers/mcpManager.js +5 -5
  18. package/dist/managers/messageManager.d.ts +29 -5
  19. package/dist/managers/messageManager.d.ts.map +1 -1
  20. package/dist/managers/messageManager.js +33 -12
  21. package/dist/managers/skillManager.d.ts +1 -1
  22. package/dist/managers/skillManager.d.ts.map +1 -1
  23. package/dist/managers/skillManager.js +3 -3
  24. package/dist/managers/slashCommandManager.d.ts +1 -1
  25. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  26. package/dist/managers/slashCommandManager.js +1 -1
  27. package/dist/managers/subagentManager.d.ts +9 -12
  28. package/dist/managers/subagentManager.d.ts.map +1 -1
  29. package/dist/managers/subagentManager.js +43 -45
  30. package/dist/managers/toolManager.d.ts +1 -1
  31. package/dist/managers/toolManager.d.ts.map +1 -1
  32. package/dist/services/aiService.d.ts +10 -2
  33. package/dist/services/aiService.d.ts.map +1 -1
  34. package/dist/services/aiService.js +25 -4
  35. package/dist/services/hook.d.ts +56 -0
  36. package/dist/services/hook.d.ts.map +1 -0
  37. package/dist/services/hook.js +276 -0
  38. package/dist/services/memory.js +3 -3
  39. package/dist/services/session.d.ts +65 -16
  40. package/dist/services/session.d.ts.map +1 -1
  41. package/dist/services/session.js +85 -34
  42. package/dist/tools/bashTool.js +2 -2
  43. package/dist/tools/deleteFileTool.js +1 -1
  44. package/dist/tools/editTool.js +1 -1
  45. package/dist/tools/multiEditTool.js +2 -2
  46. package/dist/tools/taskTool.d.ts.map +1 -1
  47. package/dist/tools/taskTool.js +7 -3
  48. package/dist/tools/writeTool.js +1 -1
  49. package/dist/types/commands.d.ts +24 -0
  50. package/dist/types/commands.d.ts.map +1 -0
  51. package/dist/types/commands.js +5 -0
  52. package/dist/types/config.d.ts +13 -0
  53. package/dist/types/config.d.ts.map +1 -0
  54. package/dist/types/config.js +5 -0
  55. package/dist/types/core.d.ts +38 -0
  56. package/dist/types/core.d.ts.map +1 -0
  57. package/dist/{types.js → types/core.js} +4 -13
  58. package/dist/{hooks/types.d.ts → types/hooks.d.ts} +2 -1
  59. package/dist/types/hooks.d.ts.map +1 -0
  60. package/dist/types/index.d.ts +20 -0
  61. package/dist/types/index.d.ts.map +1 -0
  62. package/dist/types/index.js +21 -0
  63. package/dist/types/mcp.d.ts +28 -0
  64. package/dist/types/mcp.d.ts.map +1 -0
  65. package/dist/types/mcp.js +5 -0
  66. package/dist/types/messaging.d.ts +80 -0
  67. package/dist/types/messaging.d.ts.map +1 -0
  68. package/dist/types/messaging.js +5 -0
  69. package/dist/types/processes.d.ts +17 -0
  70. package/dist/types/processes.d.ts.map +1 -0
  71. package/dist/types/processes.js +5 -0
  72. package/dist/types/skills.d.ts +78 -0
  73. package/dist/types/skills.d.ts.map +1 -0
  74. package/dist/types/skills.js +17 -0
  75. package/dist/utils/configResolver.d.ts +1 -1
  76. package/dist/utils/configResolver.d.ts.map +1 -1
  77. package/dist/utils/configResolver.js +1 -1
  78. package/dist/utils/configValidator.d.ts +1 -1
  79. package/dist/utils/configValidator.d.ts.map +1 -1
  80. package/dist/utils/configValidator.js +1 -1
  81. package/dist/utils/convertMessagesForAPI.d.ts +1 -1
  82. package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
  83. package/dist/utils/customCommands.d.ts +1 -1
  84. package/dist/utils/customCommands.d.ts.map +1 -1
  85. package/dist/{hooks/matcher.d.ts → utils/hookMatcher.d.ts} +1 -1
  86. package/dist/utils/hookMatcher.d.ts.map +1 -0
  87. package/dist/utils/markdownParser.d.ts +1 -1
  88. package/dist/utils/markdownParser.d.ts.map +1 -1
  89. package/dist/utils/mcpUtils.d.ts +1 -1
  90. package/dist/utils/mcpUtils.d.ts.map +1 -1
  91. package/dist/utils/messageOperations.d.ts +7 -2
  92. package/dist/utils/messageOperations.d.ts.map +1 -1
  93. package/dist/utils/messageOperations.js +18 -1
  94. package/dist/utils/skillParser.d.ts +1 -1
  95. package/dist/utils/skillParser.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/src/agent.ts +150 -50
  98. package/src/index.ts +3 -4
  99. package/src/managers/aiManager.ts +282 -164
  100. package/src/managers/backgroundBashManager.ts +1 -1
  101. package/src/{hooks/manager.ts → managers/hookManager.ts} +163 -28
  102. package/src/managers/mcpManager.ts +6 -6
  103. package/src/managers/messageManager.ts +69 -10
  104. package/src/managers/skillManager.ts +4 -4
  105. package/src/managers/slashCommandManager.ts +6 -2
  106. package/src/managers/subagentManager.ts +58 -53
  107. package/src/managers/toolManager.ts +1 -1
  108. package/src/services/aiService.ts +37 -7
  109. package/src/services/hook.ts +360 -0
  110. package/src/services/memory.ts +3 -3
  111. package/src/services/session.ts +99 -33
  112. package/src/tools/bashTool.ts +2 -2
  113. package/src/tools/deleteFileTool.ts +1 -1
  114. package/src/tools/editTool.ts +1 -1
  115. package/src/tools/multiEditTool.ts +2 -2
  116. package/src/tools/taskTool.ts +13 -5
  117. package/src/tools/writeTool.ts +1 -1
  118. package/src/types/commands.ts +26 -0
  119. package/src/types/config.ts +14 -0
  120. package/src/types/core.ts +49 -0
  121. package/src/{hooks/types.ts → types/hooks.ts} +1 -0
  122. package/src/types/index.ts +23 -0
  123. package/src/{types.ts → types/index.ts.backup} +13 -0
  124. package/src/types/mcp.ts +31 -0
  125. package/src/types/messaging.ts +103 -0
  126. package/src/types/processes.ts +18 -0
  127. package/src/types/skills.ts +91 -0
  128. package/src/utils/configResolver.ts +1 -1
  129. package/src/utils/configValidator.ts +5 -1
  130. package/src/utils/convertMessagesForAPI.ts +1 -1
  131. package/src/utils/customCommands.ts +1 -1
  132. package/src/utils/markdownParser.ts +1 -1
  133. package/src/utils/mcpUtils.ts +1 -1
  134. package/src/utils/messageOperations.ts +22 -1
  135. package/src/utils/skillParser.ts +1 -1
  136. package/dist/hooks/executor.d.ts +0 -56
  137. package/dist/hooks/executor.d.ts.map +0 -1
  138. package/dist/hooks/executor.js +0 -312
  139. package/dist/hooks/index.d.ts +0 -17
  140. package/dist/hooks/index.d.ts.map +0 -1
  141. package/dist/hooks/index.js +0 -14
  142. package/dist/hooks/manager.d.ts.map +0 -1
  143. package/dist/hooks/matcher.d.ts.map +0 -1
  144. package/dist/hooks/settings.d.ts +0 -46
  145. package/dist/hooks/settings.d.ts.map +0 -1
  146. package/dist/hooks/settings.js +0 -100
  147. package/dist/hooks/types.d.ts.map +0 -1
  148. package/dist/types.d.ts +0 -276
  149. package/dist/types.d.ts.map +0 -1
  150. package/src/hooks/executor.ts +0 -440
  151. package/src/hooks/index.ts +0 -52
  152. package/src/hooks/settings.ts +0 -129
  153. /package/dist/{hooks/types.js → types/hooks.js} +0 -0
  154. /package/dist/{hooks/matcher.js → utils/hookMatcher.js} +0 -0
  155. /package/src/{hooks/matcher.ts → utils/hookMatcher.ts} +0 -0
@@ -5,12 +5,22 @@ import { homedir } from "os";
5
5
  const SESSION_DIR = join(homedir(), ".wave", "sessions");
6
6
  const VERSION = "1.0.0";
7
7
  const MAX_SESSION_AGE_DAYS = 30;
8
+ /**
9
+ * Resolve session directory path with fallback to default
10
+ * @param sessionDir Optional custom session directory
11
+ * @returns Resolved session directory path
12
+ */
13
+ export function resolveSessionDir(sessionDir) {
14
+ return sessionDir || SESSION_DIR;
15
+ }
8
16
  /**
9
17
  * Ensure session directory exists
18
+ * @param sessionDir Optional custom session directory
10
19
  */
11
- async function ensureSessionDir() {
20
+ export async function ensureSessionDir(sessionDir) {
21
+ const resolvedDir = resolveSessionDir(sessionDir);
12
22
  try {
13
- await fs.mkdir(SESSION_DIR, { recursive: true });
23
+ await fs.mkdir(resolvedDir, { recursive: true });
14
24
  }
15
25
  catch (error) {
16
26
  throw new Error(`Failed to create session directory: ${error}`);
@@ -19,9 +29,10 @@ async function ensureSessionDir() {
19
29
  /**
20
30
  * Generate session file path
21
31
  */
22
- export function getSessionFilePath(sessionId) {
32
+ export function getSessionFilePath(sessionId, sessionDir) {
23
33
  const shortId = sessionId.split("_")[2] || sessionId.slice(-8);
24
- return join(SESSION_DIR, `session_${shortId}.json`);
34
+ const resolvedDir = resolveSessionDir(sessionDir);
35
+ return join(resolvedDir, `session_${shortId}.json`);
25
36
  }
26
37
  /**
27
38
  * Filter out diff blocks from messages to avoid saving unimportant data
@@ -35,9 +46,17 @@ function filterDiffBlocks(messages) {
35
46
  .filter((message) => message.blocks.length > 0);
36
47
  }
37
48
  /**
38
- * Save session data
49
+ * Save session data to storage
50
+ *
51
+ * @param sessionId - Unique identifier for the session
52
+ * @param messages - Array of messages to save
53
+ * @param workdir - Working directory for the session
54
+ * @param latestTotalTokens - Total tokens used in the session
55
+ * @param startedAt - ISO timestamp when session started (defaults to current time)
56
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
57
+ * @throws {Error} When session cannot be saved due to permission or disk space issues
39
58
  */
40
- export async function saveSession(sessionId, messages, workdir, latestTotalTokens = 0, startedAt) {
59
+ export async function saveSession(sessionId, messages, workdir, latestTotalTokens = 0, startedAt, sessionDir) {
41
60
  // Do not save session files in test environment
42
61
  if (process.env.NODE_ENV === "test") {
43
62
  return;
@@ -46,7 +65,7 @@ export async function saveSession(sessionId, messages, workdir, latestTotalToken
46
65
  if (messages.length === 0) {
47
66
  return;
48
67
  }
49
- await ensureSessionDir();
68
+ await ensureSessionDir(sessionDir);
50
69
  // Filter out diff blocks before saving
51
70
  const filteredMessages = filterDiffBlocks(messages);
52
71
  const now = new Date().toISOString();
@@ -62,7 +81,7 @@ export async function saveSession(sessionId, messages, workdir, latestTotalToken
62
81
  latestTotalTokens,
63
82
  },
64
83
  };
65
- const filePath = getSessionFilePath(sessionId);
84
+ const filePath = getSessionFilePath(sessionId, sessionDir);
66
85
  try {
67
86
  await fs.writeFile(filePath, JSON.stringify(sessionData, null, 2), "utf-8");
68
87
  }
@@ -71,10 +90,15 @@ export async function saveSession(sessionId, messages, workdir, latestTotalToken
71
90
  }
72
91
  }
73
92
  /**
74
- * Load session data
93
+ * Load session data from storage
94
+ *
95
+ * @param sessionId - Unique identifier for the session to load
96
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
97
+ * @returns Promise that resolves to session data or null if session doesn't exist
98
+ * @throws {Error} When session exists but cannot be read or contains invalid data
75
99
  */
76
- export async function loadSession(sessionId) {
77
- const filePath = getSessionFilePath(sessionId);
100
+ export async function loadSession(sessionId, sessionDir) {
101
+ const filePath = getSessionFilePath(sessionId, sessionDir);
78
102
  try {
79
103
  const content = await fs.readFile(filePath, "utf-8");
80
104
  const sessionData = JSON.parse(content);
@@ -92,31 +116,43 @@ export async function loadSession(sessionId) {
92
116
  }
93
117
  }
94
118
  /**
95
- * Get most recent session
119
+ * Get the most recent session for a specific working directory
120
+ *
121
+ * @param workdir - Working directory to find the most recent session for
122
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
123
+ * @returns Promise that resolves to the most recent session data or null if no sessions exist
124
+ * @throws {Error} When session directory cannot be accessed or session data is corrupted
96
125
  */
97
- export async function getLatestSession(workdir) {
98
- const sessions = await listSessions(workdir);
126
+ export async function getLatestSession(workdir, sessionDir) {
127
+ const sessions = await listSessions(workdir, false, sessionDir);
99
128
  if (sessions.length === 0) {
100
129
  return null;
101
130
  }
102
131
  // Sort by last active time, return the latest
103
132
  const latestSession = sessions.sort((a, b) => new Date(b.lastActiveAt).getTime() - new Date(a.lastActiveAt).getTime())[0];
104
- return loadSession(latestSession.id);
133
+ return loadSession(latestSession.id, sessionDir);
105
134
  }
106
135
  /**
107
- * List all sessions
136
+ * List all sessions for a specific working directory or across all working directories
137
+ *
138
+ * @param workdir - Working directory to filter sessions by
139
+ * @param includeAllWorkdirs - If true, returns sessions from all working directories
140
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
141
+ * @returns Promise that resolves to array of session metadata objects
142
+ * @throws {Error} When session directory cannot be accessed or read
108
143
  */
109
- export async function listSessions(workdir, includeAllWorkdirs = false) {
144
+ export async function listSessions(workdir, includeAllWorkdirs = false, sessionDir) {
110
145
  try {
111
- await ensureSessionDir();
112
- const files = await fs.readdir(SESSION_DIR);
146
+ await ensureSessionDir(sessionDir);
147
+ const resolvedDir = resolveSessionDir(sessionDir);
148
+ const files = await fs.readdir(resolvedDir);
113
149
  const sessions = [];
114
150
  for (const file of files) {
115
151
  if (!file.startsWith("session_") || !file.endsWith(".json")) {
116
152
  continue;
117
153
  }
118
154
  try {
119
- const filePath = join(SESSION_DIR, file);
155
+ const filePath = join(resolvedDir, file);
120
156
  const content = await fs.readFile(filePath, "utf-8");
121
157
  const sessionData = JSON.parse(content);
122
158
  // Only return sessions for the current working directory, unless includeAllWorkdirs is true
@@ -133,8 +169,8 @@ export async function listSessions(workdir, includeAllWorkdirs = false) {
133
169
  });
134
170
  }
135
171
  catch {
136
- // Ignore corrupted session files
137
- console.warn(`Skipping corrupted session file: ${file}`);
172
+ // Skip corrupted session files and continue processing others
173
+ continue;
138
174
  }
139
175
  }
140
176
  return sessions.sort((a, b) => new Date(b.lastActiveAt).getTime() - new Date(a.lastActiveAt).getTime());
@@ -144,10 +180,15 @@ export async function listSessions(workdir, includeAllWorkdirs = false) {
144
180
  }
145
181
  }
146
182
  /**
147
- * Delete session
183
+ * Delete a session from storage
184
+ *
185
+ * @param sessionId - Unique identifier for the session to delete
186
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
187
+ * @returns Promise that resolves to true if session was deleted, false if it didn't exist
188
+ * @throws {Error} When session exists but cannot be deleted due to permission issues
148
189
  */
149
- export async function deleteSession(sessionId) {
150
- const filePath = getSessionFilePath(sessionId);
190
+ export async function deleteSession(sessionId, sessionDir) {
191
+ const filePath = getSessionFilePath(sessionId, sessionDir);
151
192
  try {
152
193
  await fs.unlink(filePath);
153
194
  return true;
@@ -160,14 +201,19 @@ export async function deleteSession(sessionId) {
160
201
  }
161
202
  }
162
203
  /**
163
- * Clean up expired sessions
204
+ * Clean up expired sessions older than the configured maximum age
205
+ *
206
+ * @param workdir - Working directory to clean up sessions for
207
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
208
+ * @returns Promise that resolves to the number of sessions that were deleted
209
+ * @throws {Error} When session directory cannot be accessed or sessions cannot be deleted
164
210
  */
165
- export async function cleanupExpiredSessions(workdir) {
211
+ export async function cleanupExpiredSessions(workdir, sessionDir) {
166
212
  // Do not perform cleanup operations in test environment
167
213
  if (process.env.NODE_ENV === "test") {
168
214
  return 0;
169
215
  }
170
- const sessions = await listSessions(workdir, true);
216
+ const sessions = await listSessions(workdir, true, sessionDir);
171
217
  const now = new Date();
172
218
  const maxAge = MAX_SESSION_AGE_DAYS * 24 * 60 * 60 * 1000; // Convert to milliseconds
173
219
  let deletedCount = 0;
@@ -175,21 +221,26 @@ export async function cleanupExpiredSessions(workdir) {
175
221
  const sessionAge = now.getTime() - new Date(session.lastActiveAt).getTime();
176
222
  if (sessionAge > maxAge) {
177
223
  try {
178
- await deleteSession(session.id);
224
+ await deleteSession(session.id, sessionDir);
179
225
  deletedCount++;
180
226
  }
181
- catch (error) {
182
- console.warn(`Failed to delete expired session ${session.id}: ${error}`);
227
+ catch {
228
+ // Skip failed deletions and continue processing other sessions
229
+ continue;
183
230
  }
184
231
  }
185
232
  }
186
233
  return deletedCount;
187
234
  }
188
235
  /**
189
- * Check if session exists
236
+ * Check if a session exists in storage
237
+ *
238
+ * @param sessionId - Unique identifier for the session to check
239
+ * @param sessionDir - Optional custom directory for session storage (defaults to ~/.wave/sessions/)
240
+ * @returns Promise that resolves to true if session exists, false otherwise
190
241
  */
191
- export async function sessionExists(sessionId) {
192
- const filePath = getSessionFilePath(sessionId);
242
+ export async function sessionExists(sessionId, sessionDir) {
243
+ const filePath = getSessionFilePath(sessionId, sessionDir);
193
244
  try {
194
245
  await fs.access(filePath);
195
246
  return true;
@@ -36,9 +36,9 @@ export const bashTool = {
36
36
  execute: async (args, context) => {
37
37
  const command = args.command;
38
38
  const runInBackground = args.run_in_background;
39
- // Set default timeout: 30s for foreground, no timeout for background
39
+ // Set default timeout: 60s for foreground, no timeout for background
40
40
  const timeout = args.timeout ??
41
- (runInBackground ? undefined : 30000);
41
+ (runInBackground ? undefined : 60000);
42
42
  if (!command || typeof command !== "string") {
43
43
  return {
44
44
  success: false,
@@ -38,7 +38,7 @@ export const deleteFileTool = {
38
38
  const filePath = resolvePath(targetFile, context.workdir);
39
39
  // Delete file
40
40
  await unlink(filePath);
41
- // logger.info(`Successfully deleted file: ${filePath}`);
41
+ // logger.debug(`Successfully deleted file: ${filePath}`);
42
42
  return {
43
43
  success: true,
44
44
  content: `Successfully deleted file: ${targetFile}`,
@@ -138,7 +138,7 @@ export const editTool = {
138
138
  const shortResult = replaceAll
139
139
  ? `Replaced ${replacementCount} instances`
140
140
  : "Text replaced successfully";
141
- // logger.info(`Edit tool: ${shortResult}`);
141
+ // logger.debug(`Edit tool: ${shortResult}`);
142
142
  return {
143
143
  success: true,
144
144
  content: shortResult,
@@ -123,7 +123,7 @@ export const multiEditTool = {
123
123
  if (edits[0] && edits[0].old_string === "") {
124
124
  originalContent = "";
125
125
  isNewFile = true;
126
- // logger.info(`Creating new file: ${resolvedPath}`);
126
+ // logger.debug(`Creating new file: ${resolvedPath}`);
127
127
  }
128
128
  else {
129
129
  return {
@@ -192,7 +192,7 @@ export const multiEditTool = {
192
192
  ? `Created file with ${edits.length} operations`
193
193
  : `Applied ${edits.length} edits`;
194
194
  const detailedContent = `${shortResult}\n\nOperations performed:\n${appliedEdits.map((edit, i) => `${i + 1}. ${edit}`).join("\n")}`;
195
- // logger.info(`MultiEdit tool: ${shortResult}`);
195
+ // logger.debug(`MultiEdit tool: ${shortResult}`);
196
196
  return {
197
197
  success: true,
198
198
  content: detailedContent,
@@ -1 +1 @@
1
- {"version":3,"file":"taskTool.d.ts","sourceRoot":"","sources":["../../src/tools/taskTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,eAAe,GAAG,UAAU,CAwH3E"}
1
+ {"version":3,"file":"taskTool.d.ts","sourceRoot":"","sources":["../../src/tools/taskTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,eAAe,GAAG,UAAU,CAgI3E"}
@@ -39,7 +39,7 @@ ${subagentList || "No subagents configured"}`;
39
39
  },
40
40
  },
41
41
  },
42
- execute: async (args) => {
42
+ execute: async (args, context) => {
43
43
  // Input validation
44
44
  const description = args.description;
45
45
  const prompt = args.prompt;
@@ -83,8 +83,12 @@ ${subagentList || "No subagents configured"}`;
83
83
  };
84
84
  }
85
85
  // Create subagent instance and execute task
86
- const instance = await subagentManager.createInstance(configuration, description);
87
- const response = await subagentManager.executeTask(instance, prompt);
86
+ const instance = await subagentManager.createInstance(configuration, {
87
+ description,
88
+ prompt,
89
+ subagent_type,
90
+ });
91
+ const response = await subagentManager.executeTask(instance, prompt, context.abortSignal);
88
92
  return {
89
93
  success: true,
90
94
  content: response,
@@ -103,7 +103,7 @@ export const writeTool = {
103
103
  const lines = content.split("\n").length;
104
104
  const chars = content.length;
105
105
  const detailedContent = `${shortResult} (${lines} lines, ${chars} characters)`;
106
- // logger.info(`Write tool: ${shortResult}`);
106
+ // logger.debug(`Write tool: ${shortResult}`);
107
107
  return {
108
108
  success: true,
109
109
  content: detailedContent,
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Slash command and custom command types
3
+ * Dependencies: None
4
+ */
5
+ export interface SlashCommand {
6
+ id: string;
7
+ name: string;
8
+ description: string;
9
+ handler: (args?: string) => Promise<void> | void;
10
+ }
11
+ export interface CustomSlashCommandConfig {
12
+ allowedTools?: string[];
13
+ model?: string;
14
+ description?: string;
15
+ }
16
+ export interface CustomSlashCommand {
17
+ id: string;
18
+ name: string;
19
+ description?: string;
20
+ filePath: string;
21
+ content: string;
22
+ config?: CustomSlashCommandConfig;
23
+ }
24
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/types/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,wBAAwB,CAAC;CACnC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Slash command and custom command types
3
+ * Dependencies: None
4
+ */
5
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Agent and service configuration types
3
+ * Dependencies: None
4
+ */
5
+ export interface GatewayConfig {
6
+ apiKey: string;
7
+ baseURL: string;
8
+ }
9
+ export interface ModelConfig {
10
+ agentModel: string;
11
+ fastModel: string;
12
+ }
13
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Agent and service configuration types
3
+ * Dependencies: None
4
+ */
5
+ export {};
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Core foundational types used across multiple domains
3
+ * Dependencies: None (foundation layer)
4
+ */
5
+ /**
6
+ * Logger interface definition
7
+ * Compatible with OpenAI package Logger interface
8
+ */
9
+ export interface Logger {
10
+ error: (...args: unknown[]) => void;
11
+ warn: (...args: unknown[]) => void;
12
+ info: (...args: unknown[]) => void;
13
+ debug: (...args: unknown[]) => void;
14
+ }
15
+ /**
16
+ * Usage statistics for AI operations
17
+ * Extends OpenAI's Usage format with additional tracking fields
18
+ */
19
+ export interface Usage {
20
+ prompt_tokens: number;
21
+ completion_tokens: number;
22
+ total_tokens: number;
23
+ model?: string;
24
+ operation_type?: "agent" | "compress";
25
+ }
26
+ export declare class ConfigurationError extends Error {
27
+ readonly field: string;
28
+ readonly provided?: unknown | undefined;
29
+ constructor(message: string, field: string, provided?: unknown | undefined);
30
+ }
31
+ export declare const CONFIG_ERRORS: {
32
+ readonly MISSING_API_KEY: "Gateway configuration requires apiKey. Provide via constructor or AIGW_TOKEN environment variable.";
33
+ readonly MISSING_BASE_URL: "Gateway configuration requires baseURL. Provide via constructor or AIGW_URL environment variable.";
34
+ readonly INVALID_TOKEN_LIMIT: "Token limit must be a positive integer.";
35
+ readonly EMPTY_API_KEY: "API key cannot be empty string.";
36
+ readonly EMPTY_BASE_URL: "Base URL cannot be empty string.";
37
+ };
38
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACvC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,KAAK,EAAE,MAAM;aACb,QAAQ,CAAC,EAAE,OAAO;gBAFlC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,YAAA;CAKrC;AAGD,eAAO,MAAM,aAAa;;;;;;CAQhB,CAAC"}
@@ -1,16 +1,7 @@
1
- export const SKILL_DEFAULTS = {
2
- PERSONAL_SKILLS_DIR: ".wave/skills",
3
- PROJECT_SKILLS_DIR: ".wave/skills",
4
- SKILL_FILE_NAME: "SKILL.md",
5
- MAX_NAME_LENGTH: 64,
6
- MAX_DESCRIPTION_LENGTH: 1024,
7
- MIN_DESCRIPTION_LENGTH: 1,
8
- NAME_PATTERN: /^[a-z0-9-]+$/,
9
- MAX_METADATA_CACHE: 1000,
10
- MAX_CONTENT_CACHE: 100,
11
- SCAN_TIMEOUT: 5000,
12
- LOAD_TIMEOUT: 2000,
13
- };
1
+ /**
2
+ * Core foundational types used across multiple domains
3
+ * Dependencies: None (foundation layer)
4
+ */
14
5
  export class ConfigurationError extends Error {
15
6
  constructor(message, field, provided) {
16
7
  super(message);
@@ -36,6 +36,7 @@ export interface HookExecutionResult {
36
36
  export interface HookExecutionOptions {
37
37
  timeout?: number;
38
38
  cwd?: string;
39
+ continueOnFailure?: boolean;
39
40
  }
40
41
  export interface ValidationResult {
41
42
  valid: boolean;
@@ -77,4 +78,4 @@ export interface HookEnvironment {
77
78
  WAVE_PROJECT_DIR: string;
78
79
  [key: string]: string;
79
80
  }
80
- //# sourceMappingURL=types.d.ts.map
81
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Main type index - Barrel export for backward compatibility
3
+ * Re-exports all domain types for legacy imports
4
+ *
5
+ * Legacy import pattern (continues to work):
6
+ * import { Message, Logger, McpTool } from 'wave-agent-sdk/types';
7
+ *
8
+ * New domain-specific import pattern:
9
+ * import { Message } from 'wave-agent-sdk/types/messaging';
10
+ * import { Logger } from 'wave-agent-sdk/types/core';
11
+ * import { McpTool } from 'wave-agent-sdk/types/mcp';
12
+ */
13
+ export * from "./core.js";
14
+ export * from "./messaging.js";
15
+ export * from "./mcp.js";
16
+ export * from "./processes.js";
17
+ export * from "./commands.js";
18
+ export * from "./skills.js";
19
+ export * from "./config.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Main type index - Barrel export for backward compatibility
3
+ * Re-exports all domain types for legacy imports
4
+ *
5
+ * Legacy import pattern (continues to work):
6
+ * import { Message, Logger, McpTool } from 'wave-agent-sdk/types';
7
+ *
8
+ * New domain-specific import pattern:
9
+ * import { Message } from 'wave-agent-sdk/types/messaging';
10
+ * import { Logger } from 'wave-agent-sdk/types/core';
11
+ * import { McpTool } from 'wave-agent-sdk/types/mcp';
12
+ */
13
+ // Core foundational types
14
+ export * from "./core.js";
15
+ // Domain-specific types
16
+ export * from "./messaging.js";
17
+ export * from "./mcp.js";
18
+ export * from "./processes.js";
19
+ export * from "./commands.js";
20
+ export * from "./skills.js";
21
+ export * from "./config.js";
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Model Context Protocol types
3
+ * Dependencies: None
4
+ */
5
+ export interface McpServerConfig {
6
+ command: string;
7
+ args?: string[];
8
+ env?: Record<string, string>;
9
+ }
10
+ export interface McpConfig {
11
+ mcpServers: Record<string, McpServerConfig>;
12
+ }
13
+ export interface McpTool {
14
+ name: string;
15
+ description?: string;
16
+ inputSchema: Record<string, unknown>;
17
+ }
18
+ export interface McpServerStatus {
19
+ name: string;
20
+ config: McpServerConfig;
21
+ status: "disconnected" | "connected" | "connecting" | "error";
22
+ tools?: McpTool[];
23
+ toolCount?: number;
24
+ capabilities?: string[];
25
+ lastConnected?: number;
26
+ error?: string;
27
+ }
28
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IAC9D,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Model Context Protocol types
3
+ * Dependencies: None
4
+ */
5
+ export {};
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Message and communication block types
3
+ * Dependencies: Core (Usage)
4
+ */
5
+ import type { Usage } from "./core.js";
6
+ export interface Message {
7
+ role: "user" | "assistant";
8
+ blocks: MessageBlock[];
9
+ usage?: Usage;
10
+ }
11
+ export type MessageBlock = TextBlock | ErrorBlock | ToolBlock | ImageBlock | DiffBlock | CommandOutputBlock | CompressBlock | MemoryBlock | CustomCommandBlock | SubagentBlock;
12
+ export interface TextBlock {
13
+ type: "text";
14
+ content: string;
15
+ }
16
+ export interface ErrorBlock {
17
+ type: "error";
18
+ content: string;
19
+ }
20
+ export interface ToolBlock {
21
+ type: "tool";
22
+ parameters?: string;
23
+ result?: string;
24
+ shortResult?: string;
25
+ images?: Array<{
26
+ data: string;
27
+ mediaType?: string;
28
+ }>;
29
+ id?: string;
30
+ name?: string;
31
+ isRunning?: boolean;
32
+ success?: boolean;
33
+ error?: string | Error;
34
+ compactParams?: string;
35
+ }
36
+ export interface ImageBlock {
37
+ type: "image";
38
+ imageUrls?: string[];
39
+ }
40
+ export interface DiffBlock {
41
+ type: "diff";
42
+ path: string;
43
+ diffResult: Array<{
44
+ value: string;
45
+ added?: boolean;
46
+ removed?: boolean;
47
+ }>;
48
+ }
49
+ export interface CommandOutputBlock {
50
+ type: "command_output";
51
+ command: string;
52
+ output: string;
53
+ isRunning: boolean;
54
+ exitCode: number | null;
55
+ }
56
+ export interface CompressBlock {
57
+ type: "compress";
58
+ content: string;
59
+ }
60
+ export interface MemoryBlock {
61
+ type: "memory";
62
+ content: string;
63
+ isSuccess: boolean;
64
+ memoryType?: "project" | "user";
65
+ storagePath?: string;
66
+ }
67
+ export interface CustomCommandBlock {
68
+ type: "custom_command";
69
+ commandName: string;
70
+ content: string;
71
+ originalInput?: string;
72
+ }
73
+ export interface SubagentBlock {
74
+ type: "subagent";
75
+ subagentId: string;
76
+ subagentName: string;
77
+ status: "active" | "completed" | "error" | "aborted";
78
+ messages: Message[];
79
+ }
80
+ //# sourceMappingURL=messaging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/types/messaging.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,aAAa,CAAC;AAElB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC;QAEb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IACrD,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Message and communication block types
3
+ * Dependencies: Core (Usage)
4
+ */
5
+ export {};