wave-agent-sdk 0.6.5 → 0.7.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.
Files changed (190) hide show
  1. package/dist/agent.d.ts +8 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +49 -240
  4. package/dist/constants/tools.d.ts +0 -2
  5. package/dist/constants/tools.d.ts.map +1 -1
  6. package/dist/constants/tools.js +0 -2
  7. package/dist/core/plugin.d.ts +86 -0
  8. package/dist/core/plugin.d.ts.map +1 -0
  9. package/dist/core/plugin.js +164 -0
  10. package/dist/core/session.d.ts +3 -0
  11. package/dist/core/session.d.ts.map +1 -0
  12. package/dist/core/session.js +1 -0
  13. package/dist/index.d.ts +2 -9
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -10
  16. package/dist/managers/MemoryRuleManager.d.ts +3 -1
  17. package/dist/managers/MemoryRuleManager.d.ts.map +1 -1
  18. package/dist/managers/MemoryRuleManager.js +2 -1
  19. package/dist/managers/aiManager.d.ts +13 -23
  20. package/dist/managers/aiManager.d.ts.map +1 -1
  21. package/dist/managers/aiManager.js +60 -32
  22. package/dist/managers/backgroundTaskManager.d.ts +3 -1
  23. package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
  24. package/dist/managers/backgroundTaskManager.js +2 -1
  25. package/dist/managers/bashManager.d.ts +4 -4
  26. package/dist/managers/bashManager.d.ts.map +1 -1
  27. package/dist/managers/bashManager.js +5 -2
  28. package/dist/managers/foregroundTaskManager.d.ts +3 -0
  29. package/dist/managers/foregroundTaskManager.d.ts.map +1 -1
  30. package/dist/managers/foregroundTaskManager.js +2 -1
  31. package/dist/managers/hookManager.d.ts +3 -3
  32. package/dist/managers/hookManager.d.ts.map +1 -1
  33. package/dist/managers/hookManager.js +20 -19
  34. package/dist/managers/liveConfigManager.d.ts +6 -13
  35. package/dist/managers/liveConfigManager.d.ts.map +1 -1
  36. package/dist/managers/liveConfigManager.js +50 -45
  37. package/dist/managers/lspManager.d.ts +4 -5
  38. package/dist/managers/lspManager.d.ts.map +1 -1
  39. package/dist/managers/lspManager.js +13 -12
  40. package/dist/managers/mcpManager.d.ts +3 -2
  41. package/dist/managers/mcpManager.d.ts.map +1 -1
  42. package/dist/managers/mcpManager.js +16 -15
  43. package/dist/managers/messageManager.d.ts +5 -7
  44. package/dist/managers/messageManager.d.ts.map +1 -1
  45. package/dist/managers/messageManager.js +12 -7
  46. package/dist/managers/permissionManager.d.ts +6 -4
  47. package/dist/managers/permissionManager.d.ts.map +1 -1
  48. package/dist/managers/permissionManager.js +39 -63
  49. package/dist/managers/planManager.d.ts +4 -6
  50. package/dist/managers/planManager.d.ts.map +1 -1
  51. package/dist/managers/planManager.js +18 -4
  52. package/dist/managers/pluginManager.d.ts +10 -22
  53. package/dist/managers/pluginManager.d.ts.map +1 -1
  54. package/dist/managers/pluginManager.js +27 -14
  55. package/dist/managers/reversionManager.d.ts +4 -3
  56. package/dist/managers/reversionManager.d.ts.map +1 -1
  57. package/dist/managers/reversionManager.js +5 -2
  58. package/dist/managers/skillManager.d.ts +3 -2
  59. package/dist/managers/skillManager.d.ts.map +1 -1
  60. package/dist/managers/skillManager.js +15 -14
  61. package/dist/managers/slashCommandManager.d.ts +9 -16
  62. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  63. package/dist/managers/slashCommandManager.js +21 -10
  64. package/dist/managers/subagentManager.d.ts +7 -17
  65. package/dist/managers/subagentManager.d.ts.map +1 -1
  66. package/dist/managers/subagentManager.js +41 -34
  67. package/dist/managers/toolManager.d.ts +15 -38
  68. package/dist/managers/toolManager.d.ts.map +1 -1
  69. package/dist/managers/toolManager.js +67 -56
  70. package/dist/prompts/index.d.ts +6 -2
  71. package/dist/prompts/index.d.ts.map +1 -1
  72. package/dist/prompts/index.js +8 -4
  73. package/dist/services/MarketplaceService.d.ts.map +1 -1
  74. package/dist/services/MarketplaceService.js +13 -0
  75. package/dist/services/aiService.d.ts +4 -0
  76. package/dist/services/aiService.d.ts.map +1 -1
  77. package/dist/services/aiService.js +47 -7
  78. package/dist/services/configurationService.d.ts.map +1 -1
  79. package/dist/services/configurationService.js +30 -11
  80. package/dist/services/taskManager.d.ts +3 -1
  81. package/dist/services/taskManager.d.ts.map +1 -1
  82. package/dist/services/taskManager.js +3 -2
  83. package/dist/tools/bashTool.d.ts.map +1 -1
  84. package/dist/tools/bashTool.js +19 -4
  85. package/dist/tools/editTool.d.ts.map +1 -1
  86. package/dist/tools/editTool.js +16 -4
  87. package/dist/tools/readTool.d.ts.map +1 -1
  88. package/dist/tools/readTool.js +2 -2
  89. package/dist/tools/skillTool.d.ts +2 -4
  90. package/dist/tools/skillTool.d.ts.map +1 -1
  91. package/dist/tools/skillTool.js +61 -61
  92. package/dist/tools/taskOutputTool.d.ts.map +1 -1
  93. package/dist/tools/taskOutputTool.js +3 -2
  94. package/dist/tools/taskTool.d.ts +2 -4
  95. package/dist/tools/taskTool.d.ts.map +1 -1
  96. package/dist/tools/taskTool.js +192 -187
  97. package/dist/tools/types.d.ts +12 -1
  98. package/dist/tools/types.d.ts.map +1 -1
  99. package/dist/tools/writeTool.d.ts.map +1 -1
  100. package/dist/tools/writeTool.js +5 -2
  101. package/dist/types/core.d.ts +2 -0
  102. package/dist/types/core.d.ts.map +1 -1
  103. package/dist/types/marketplace.d.ts +8 -0
  104. package/dist/types/marketplace.d.ts.map +1 -1
  105. package/dist/types/messaging.d.ts +1 -0
  106. package/dist/types/messaging.d.ts.map +1 -1
  107. package/dist/types/permissions.d.ts +3 -1
  108. package/dist/types/permissions.d.ts.map +1 -1
  109. package/dist/types/permissions.js +1 -3
  110. package/dist/types/skills.d.ts +0 -2
  111. package/dist/types/skills.d.ts.map +1 -1
  112. package/dist/types/tools.d.ts +0 -15
  113. package/dist/types/tools.d.ts.map +1 -1
  114. package/dist/utils/container.d.ts +31 -0
  115. package/dist/utils/container.d.ts.map +1 -0
  116. package/dist/utils/container.js +79 -0
  117. package/dist/utils/containerSetup.d.ts +26 -0
  118. package/dist/utils/containerSetup.d.ts.map +1 -0
  119. package/dist/utils/containerSetup.js +187 -0
  120. package/dist/utils/editUtils.d.ts +0 -3
  121. package/dist/utils/editUtils.d.ts.map +1 -1
  122. package/dist/utils/editUtils.js +4 -3
  123. package/dist/utils/hookMatcher.d.ts +1 -1
  124. package/dist/utils/hookMatcher.d.ts.map +1 -1
  125. package/dist/utils/hookMatcher.js +2 -2
  126. package/dist/utils/messageOperations.d.ts +2 -1
  127. package/dist/utils/messageOperations.d.ts.map +1 -1
  128. package/dist/utils/messageOperations.js +4 -1
  129. package/dist/utils/openaiClient.js +2 -2
  130. package/dist/utils/stringUtils.d.ts +6 -0
  131. package/dist/utils/stringUtils.d.ts.map +1 -1
  132. package/dist/utils/stringUtils.js +8 -0
  133. package/package.json +1 -1
  134. package/src/agent.ts +60 -282
  135. package/src/constants/tools.ts +0 -2
  136. package/src/core/plugin.ts +224 -0
  137. package/src/core/session.ts +6 -0
  138. package/src/index.ts +2 -11
  139. package/src/managers/MemoryRuleManager.ts +6 -1
  140. package/src/managers/aiManager.ts +84 -58
  141. package/src/managers/backgroundTaskManager.ts +5 -1
  142. package/src/managers/bashManager.ts +9 -4
  143. package/src/managers/foregroundTaskManager.ts +3 -0
  144. package/src/managers/hookManager.ts +21 -23
  145. package/src/managers/liveConfigManager.ts +57 -53
  146. package/src/managers/lspManager.ts +14 -19
  147. package/src/managers/mcpManager.ts +20 -20
  148. package/src/managers/messageManager.ts +19 -12
  149. package/src/managers/permissionManager.ts +45 -70
  150. package/src/managers/planManager.ts +26 -7
  151. package/src/managers/pluginManager.ts +37 -33
  152. package/src/managers/reversionManager.ts +5 -3
  153. package/src/managers/skillManager.ts +19 -20
  154. package/src/managers/slashCommandManager.ts +30 -25
  155. package/src/managers/subagentManager.ts +53 -53
  156. package/src/managers/toolManager.ts +93 -90
  157. package/src/prompts/index.ts +13 -5
  158. package/src/services/MarketplaceService.ts +13 -0
  159. package/src/services/aiService.ts +61 -15
  160. package/src/services/configurationService.ts +34 -13
  161. package/src/services/taskManager.ts +6 -2
  162. package/src/tools/bashTool.ts +19 -4
  163. package/src/tools/editTool.ts +17 -4
  164. package/src/tools/readTool.ts +2 -2
  165. package/src/tools/skillTool.ts +75 -71
  166. package/src/tools/taskOutputTool.ts +3 -2
  167. package/src/tools/taskTool.ts +224 -225
  168. package/src/tools/types.ts +14 -1
  169. package/src/tools/writeTool.ts +5 -2
  170. package/src/types/core.ts +2 -0
  171. package/src/types/marketplace.ts +9 -0
  172. package/src/types/messaging.ts +1 -0
  173. package/src/types/permissions.ts +2 -4
  174. package/src/types/skills.ts +0 -3
  175. package/src/types/tools.ts +0 -17
  176. package/src/utils/container.ts +92 -0
  177. package/src/utils/containerSetup.ts +279 -0
  178. package/src/utils/editUtils.ts +4 -3
  179. package/src/utils/hookMatcher.ts +2 -2
  180. package/src/utils/messageOperations.ts +5 -0
  181. package/src/utils/openaiClient.ts +2 -2
  182. package/src/utils/stringUtils.ts +9 -0
  183. package/dist/tools/deleteFileTool.d.ts +0 -6
  184. package/dist/tools/deleteFileTool.d.ts.map +0 -1
  185. package/dist/tools/deleteFileTool.js +0 -100
  186. package/dist/tools/multiEditTool.d.ts +0 -6
  187. package/dist/tools/multiEditTool.d.ts.map +0 -1
  188. package/dist/tools/multiEditTool.js +0 -246
  189. package/src/tools/deleteFileTool.ts +0 -127
  190. package/src/tools/multiEditTool.ts +0 -306
@@ -166,8 +166,23 @@ Usage notes:
166
166
  });
167
167
  let outputBuffer = "";
168
168
  let errorBuffer = "";
169
+ let shortResultBuffer = "";
169
170
  let isAborted = false;
170
171
  let isBackgrounded = false;
172
+ const updateShortResult = (chunk) => {
173
+ if (!chunk)
174
+ return;
175
+ shortResultBuffer += chunk;
176
+ if (shortResultBuffer.length > MAX_OUTPUT_LENGTH) {
177
+ shortResultBuffer = shortResultBuffer.slice(-MAX_OUTPUT_LENGTH);
178
+ }
179
+ const lastLines = shortResultBuffer
180
+ .trim()
181
+ .split("\n")
182
+ .slice(-3)
183
+ .join("\n");
184
+ context.onShortResultUpdate?.(lastLines || "");
185
+ };
171
186
  const foregroundTaskId = `bash_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
172
187
  // Register as foreground task
173
188
  if (context.foregroundTaskManager && command) {
@@ -261,17 +276,17 @@ Usage notes:
261
276
  });
262
277
  }
263
278
  child.stdout?.on("data", (data) => {
264
- if (!isAborted && !isBackgrounded) {
279
+ if (!isAborted && !isBackgrounded && !runInBackground) {
265
280
  const chunk = stripAnsiColors(data.toString());
266
281
  outputBuffer += chunk;
267
- context.onShortResultUpdate?.(chunk.trim().split("\n").pop() || "");
282
+ updateShortResult(chunk);
268
283
  }
269
284
  });
270
285
  child.stderr?.on("data", (data) => {
271
- if (!isAborted && !isBackgrounded) {
286
+ if (!isAborted && !isBackgrounded && !runInBackground) {
272
287
  const chunk = stripAnsiColors(data.toString());
273
288
  errorBuffer += chunk;
274
- context.onShortResultUpdate?.(chunk.trim().split("\n").pop() || "");
289
+ updateShortResult(chunk);
275
290
  }
276
291
  });
277
292
  child.on("exit", (code) => {
@@ -1 +1 @@
1
- {"version":3,"file":"editTool.d.ts","sourceRoot":"","sources":["../../src/tools/editTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAgBtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAmNtB,CAAC"}
1
+ {"version":3,"file":"editTool.d.ts","sourceRoot":"","sources":["../../src/tools/editTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAgBtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAgOtB,CAAC"}
@@ -16,7 +16,15 @@ function formatCompactParams(args, context) {
16
16
  export const editTool = {
17
17
  name: EDIT_TOOL_NAME,
18
18
  formatCompactParams,
19
- prompt: () => `Performs exact string replacements in files. \n\nUsage:\n- You must use your \`${READ_TOOL_NAME}\` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file. \n- When editing text from read_file tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.\n- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\n- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.\n- The edit will FAIL if \`old_string\` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use \`replace_all\` to change every instance of \`old_string\`. \n- Use \`replace_all\` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.`,
19
+ prompt: () => `Performs exact string replacements in files.
20
+
21
+ Usage:
22
+ - You must use your \`${READ_TOOL_NAME}\` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.
23
+ - When editing text from ${READ_TOOL_NAME} tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.
24
+ - ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
25
+ - Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
26
+ - The edit will FAIL if \`old_string\` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use \`replace_all\` to change every instance of \`old_string\`.
27
+ - Use \`replace_all\` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.`,
20
28
  config: {
21
29
  type: "function",
22
30
  function: {
@@ -97,9 +105,11 @@ export const editTool = {
97
105
  };
98
106
  }
99
107
  // Check if old_string exists
100
- const matchedOldString = originalContent.includes(oldString)
101
- ? oldString
102
- : null;
108
+ const index = originalContent.indexOf(oldString);
109
+ const matchedOldString = index !== -1 ? oldString : null;
110
+ const startLineNumber = index !== -1
111
+ ? originalContent.substring(0, index).split("\n").length
112
+ : undefined;
103
113
  if (!matchedOldString) {
104
114
  return {
105
115
  success: false,
@@ -136,6 +146,7 @@ export const editTool = {
136
146
  old_string: oldString,
137
147
  new_string: newString,
138
148
  replace_all: replaceAll,
149
+ startLineNumber,
139
150
  });
140
151
  const permissionResult = await context.permissionManager.checkPermission(permissionContext);
141
152
  if (permissionResult.behavior === "deny") {
@@ -183,6 +194,7 @@ export const editTool = {
183
194
  content: shortResult,
184
195
  shortResult,
185
196
  filePath: resolvedPath,
197
+ startLineNumber,
186
198
  };
187
199
  }
188
200
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"readTool.d.ts","sourceRoot":"","sources":["../../src/tools/readTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AA6HtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAkOtB,CAAC"}
1
+ {"version":3,"file":"readTool.d.ts","sourceRoot":"","sources":["../../src/tools/readTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AA8HtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAiOtB,CAAC"}
@@ -2,6 +2,7 @@ import { readFile, stat } from "fs/promises";
2
2
  import { extname } from "path";
3
3
  import { logger } from "../utils/globalLogger.js";
4
4
  import { resolvePath, getDisplayPath } from "../utils/path.js";
5
+ import { formatLineNumberPrefix } from "../utils/stringUtils.js";
5
6
  import { isBinaryDocument, getBinaryDocumentError, } from "../utils/fileFormat.js";
6
7
  import { convertImageToBase64 } from "../utils/messageOperations.js";
7
8
  import { READ_TOOL_NAME } from "../constants/tools.js";
@@ -123,7 +124,6 @@ Usage:
123
124
  - Any lines longer than 2000 characters will be truncated
124
125
  - Results are returned using cat -n format, with line numbers starting at 1
125
126
  - This tool allows Agent to read images (eg PNG, JPG, etc). When reading an image file the contents are presented visually as Agent is a multimodal LLM.
126
- - This tool can read Jupyter notebooks (.ipynb files) and returns all cells with their outputs, combining code, text, and visualizations.
127
127
  - You have the capability to call multiple tools in a single response. It is always better to speculatively read multiple files as a batch that are potentially useful.
128
128
  - You will regularly be asked to read screenshots. If the user provides a path to a screenshot ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths like /var/folders/123/abc/T/TemporaryItems/NSIRD_screencaptureui_ZfB1tD/Screenshot.png
129
129
  - If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.
@@ -245,7 +245,7 @@ Usage:
245
245
  const lineNumber = startLine + index;
246
246
  // Truncate overly long lines
247
247
  const truncatedLine = line.length > 2000 ? line.substring(0, 2000) + "..." : line;
248
- return `${lineNumber.toString().padStart(6)}\t${truncatedLine}`;
248
+ return `${formatLineNumberPrefix(lineNumber)}${truncatedLine}`;
249
249
  })
250
250
  .join("\n");
251
251
  // Add file information header
@@ -1,8 +1,6 @@
1
1
  import type { ToolPlugin } from "./types.js";
2
- import type { SkillManager } from "../managers/skillManager.js";
3
2
  /**
4
- * Create a skill tool plugin that uses the provided SkillManager
5
- * Note: SkillManager should be initialized before calling this function
3
+ * Skill tool plugin for invoking Wave skills
6
4
  */
7
- export declare function createSkillTool(skillManager: SkillManager): ToolPlugin;
5
+ export declare const skillTool: ToolPlugin;
8
6
  //# sourceMappingURL=skillTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillTool.d.ts","sourceRoot":"","sources":["../../src/tools/skillTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,UAAU,CA8EtE"}
1
+ {"version":3,"file":"skillTool.d.ts","sourceRoot":"","sources":["../../src/tools/skillTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAItE;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,UAmFvB,CAAC"}
@@ -1,75 +1,75 @@
1
1
  import { SKILL_TOOL_NAME } from "../constants/tools.js";
2
2
  /**
3
- * Create a skill tool plugin that uses the provided SkillManager
4
- * Note: SkillManager should be initialized before calling this function
3
+ * Skill tool plugin for invoking Wave skills
5
4
  */
6
- export function createSkillTool(skillManager) {
7
- // Ensure SkillManager is initialized
8
- skillManager.getAvailableSkills();
9
- return {
10
- name: SKILL_TOOL_NAME,
11
- get config() {
12
- const availableSkills = skillManager.getAvailableSkills();
13
- const getToolDescription = () => {
14
- if (availableSkills.length === 0) {
15
- return "Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific. No skills are currently available.";
16
- }
17
- const skillList = availableSkills
18
- .map((skill) => `• **${skill.name}** (${skill.type}): ${skill.description}`)
19
- .join("\n");
20
- return `Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific.\n\nAvailable skills:\n${skillList}`;
21
- };
22
- return {
23
- type: "function",
24
- function: {
25
- name: SKILL_TOOL_NAME,
26
- description: getToolDescription(),
27
- parameters: {
28
- type: "object",
29
- properties: {
30
- skill_name: {
31
- type: "string",
32
- description: "Name of the skill to invoke",
33
- enum: availableSkills.map((skill) => skill.name),
34
- },
35
- },
36
- required: ["skill_name"],
5
+ export const skillTool = {
6
+ name: SKILL_TOOL_NAME,
7
+ config: {
8
+ type: "function",
9
+ function: {
10
+ name: SKILL_TOOL_NAME,
11
+ description: "Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific.",
12
+ parameters: {
13
+ type: "object",
14
+ properties: {
15
+ skill_name: {
16
+ type: "string",
17
+ description: "Name of the skill to invoke",
37
18
  },
38
19
  },
39
- };
20
+ required: ["skill_name"],
21
+ },
40
22
  },
41
- execute: async (args) => {
42
- try {
43
- // Validate arguments
44
- const skillName = args.skill_name;
45
- if (!skillName || typeof skillName !== "string") {
46
- return {
47
- success: false,
48
- content: "",
49
- error: "skill_name parameter is required and must be a string",
50
- };
51
- }
52
- // Execute the skill
53
- const result = await skillManager.executeSkill({
54
- skill_name: skillName,
55
- });
23
+ },
24
+ prompt: (args) => {
25
+ const availableSkills = args?.availableSkills;
26
+ if (!availableSkills || availableSkills.length === 0) {
27
+ return "Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific. No skills are currently available.";
28
+ }
29
+ const skillList = availableSkills
30
+ .map((skill) => `• **${skill.name}** (${skill.type}): ${skill.description}`)
31
+ .join("\n");
32
+ return `Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific.\n\nAvailable skills:\n${skillList}`;
33
+ },
34
+ execute: async (args, context) => {
35
+ try {
36
+ const skillManager = context.skillManager;
37
+ if (!skillManager) {
56
38
  return {
57
- success: true,
58
- content: result.content,
59
- shortResult: `Invoked skill: ${skillName}`,
39
+ success: false,
40
+ content: "",
41
+ error: "Skill manager not available in tool context",
60
42
  };
61
43
  }
62
- catch (error) {
44
+ // Validate arguments
45
+ const skillName = args.skill_name;
46
+ if (!skillName || typeof skillName !== "string") {
63
47
  return {
64
48
  success: false,
65
49
  content: "",
66
- error: error instanceof Error ? error.message : String(error),
50
+ error: "skill_name parameter is required and must be a string",
67
51
  };
68
52
  }
69
- },
70
- formatCompactParams: (params) => {
71
- const skillName = params.skill_name;
72
- return skillName || "unknown-skill";
73
- },
74
- };
75
- }
53
+ // Execute the skill
54
+ const result = await skillManager.executeSkill({
55
+ skill_name: skillName,
56
+ });
57
+ return {
58
+ success: true,
59
+ content: result.content,
60
+ shortResult: `Invoked skill: ${skillName}`,
61
+ };
62
+ }
63
+ catch (error) {
64
+ return {
65
+ success: false,
66
+ content: "",
67
+ error: error instanceof Error ? error.message : String(error),
68
+ };
69
+ }
70
+ },
71
+ formatCompactParams: (params) => {
72
+ const skillName = params.skill_name;
73
+ return skillName || "unknown-skill";
74
+ },
75
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"taskOutputTool.d.ts","sourceRoot":"","sources":["../../src/tools/taskOutputTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAKjE,eAAO,MAAM,cAAc,EAAE,UA6L5B,CAAC"}
1
+ {"version":3,"file":"taskOutputTool.d.ts","sourceRoot":"","sources":["../../src/tools/taskOutputTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,UAAU,EAAc,MAAM,YAAY,CAAC;AAKjE,eAAO,MAAM,cAAc,EAAE,UA8L5B,CAAC"}
@@ -149,7 +149,8 @@ export const taskOutputTool = {
149
149
  });
150
150
  }
151
151
  else {
152
- timeoutHandle = setTimeout(check, 500);
152
+ const pollingInterval = process.env.NODE_ENV === "test" ? 10 : 500;
153
+ timeoutHandle = setTimeout(check, pollingInterval);
153
154
  }
154
155
  };
155
156
  check();
@@ -167,7 +168,7 @@ export const taskOutputTool = {
167
168
  },
168
169
  formatCompactParams: (params) => {
169
170
  const taskId = params.task_id;
170
- const block = params.block;
171
+ const block = params.block ?? true;
171
172
  return `${taskId}${block ? " (blocking)" : ""}`;
172
173
  },
173
174
  };
@@ -1,8 +1,6 @@
1
1
  import type { ToolPlugin } from "./types.js";
2
- import type { SubagentManager } from "../managers/subagentManager.js";
3
2
  /**
4
- * Create a task tool plugin that uses the provided SubagentManager
5
- * Note: SubagentManager should be initialized before calling this function
3
+ * Task tool plugin for delegating tasks to specialized subagents
6
4
  */
7
- export declare function createTaskTool(subagentManager: SubagentManager): ToolPlugin;
5
+ export declare const taskTool: ToolPlugin;
8
6
  //# sourceMappingURL=taskTool.d.ts.map
@@ -1 +1 @@
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;AAItE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,eAAe,GAAG,UAAU,CA2O3E"}
1
+ {"version":3,"file":"taskTool.d.ts","sourceRoot":"","sources":["../../src/tools/taskTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAKtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UA2OtB,CAAC"}