wave-agent-sdk 0.10.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/agent.d.ts +8 -6
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +12 -9
  4. package/dist/builtin-skills/builtin-skills/loop/SKILL.md +53 -0
  5. package/dist/builtin-skills/builtin-skills/loop/parsing.ts +159 -0
  6. package/dist/builtin-skills/builtin-skills/settings/HOOKS.md +82 -0
  7. package/dist/builtin-skills/{settings → builtin-skills/settings}/SKILL.md +1 -1
  8. package/dist/builtin-skills/loop/parsing.d.ts +13 -0
  9. package/dist/builtin-skills/loop/parsing.d.ts.map +1 -0
  10. package/dist/builtin-skills/loop/parsing.js +125 -0
  11. package/dist/constants/tools.d.ts +3 -0
  12. package/dist/constants/tools.d.ts.map +1 -1
  13. package/dist/constants/tools.js +3 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/managers/aiManager.d.ts +0 -2
  18. package/dist/managers/aiManager.d.ts.map +1 -1
  19. package/dist/managers/aiManager.js +53 -14
  20. package/dist/managers/cronManager.d.ts +19 -0
  21. package/dist/managers/cronManager.d.ts.map +1 -0
  22. package/dist/managers/cronManager.js +124 -0
  23. package/dist/managers/hookManager.d.ts.map +1 -1
  24. package/dist/managers/hookManager.js +21 -13
  25. package/dist/managers/liveConfigManager.js +1 -1
  26. package/dist/managers/mcpManager.d.ts +1 -1
  27. package/dist/managers/mcpManager.d.ts.map +1 -1
  28. package/dist/managers/mcpManager.js +10 -2
  29. package/dist/managers/messageManager.d.ts +0 -1
  30. package/dist/managers/messageManager.d.ts.map +1 -1
  31. package/dist/managers/permissionManager.d.ts +27 -7
  32. package/dist/managers/permissionManager.d.ts.map +1 -1
  33. package/dist/managers/permissionManager.js +119 -14
  34. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  35. package/dist/managers/slashCommandManager.js +11 -0
  36. package/dist/managers/subagentManager.d.ts +3 -0
  37. package/dist/managers/subagentManager.d.ts.map +1 -1
  38. package/dist/managers/subagentManager.js +10 -17
  39. package/dist/managers/toolManager.d.ts +1 -1
  40. package/dist/managers/toolManager.d.ts.map +1 -1
  41. package/dist/managers/toolManager.js +28 -4
  42. package/dist/services/configurationService.d.ts.map +1 -1
  43. package/dist/services/configurationService.js +8 -7
  44. package/dist/services/hook.d.ts.map +1 -1
  45. package/dist/services/hook.js +3 -10
  46. package/dist/services/initializationService.js +2 -2
  47. package/dist/services/jsonlHandler.d.ts.map +1 -1
  48. package/dist/services/jsonlHandler.js +3 -0
  49. package/dist/services/reversionService.d.ts +2 -2
  50. package/dist/services/reversionService.d.ts.map +1 -1
  51. package/dist/services/reversionService.js +3 -3
  52. package/dist/services/session.d.ts.map +1 -1
  53. package/dist/services/session.js +18 -11
  54. package/dist/tools/agentTool.js +1 -1
  55. package/dist/tools/bashTool.d.ts.map +1 -1
  56. package/dist/tools/bashTool.js +33 -12
  57. package/dist/tools/cronCreateTool.d.ts +3 -0
  58. package/dist/tools/cronCreateTool.d.ts.map +1 -0
  59. package/dist/tools/cronCreateTool.js +59 -0
  60. package/dist/tools/cronDeleteTool.d.ts +3 -0
  61. package/dist/tools/cronDeleteTool.d.ts.map +1 -0
  62. package/dist/tools/cronDeleteTool.js +38 -0
  63. package/dist/tools/cronListTool.d.ts +3 -0
  64. package/dist/tools/cronListTool.d.ts.map +1 -0
  65. package/dist/tools/cronListTool.js +30 -0
  66. package/dist/tools/readTool.d.ts.map +1 -1
  67. package/dist/tools/readTool.js +8 -32
  68. package/dist/tools/skillTool.d.ts +0 -3
  69. package/dist/tools/skillTool.d.ts.map +1 -1
  70. package/dist/tools/skillTool.js +4 -3
  71. package/dist/tools/taskOutputTool.d.ts.map +1 -1
  72. package/dist/tools/taskOutputTool.js +15 -8
  73. package/dist/tools/types.d.ts +2 -0
  74. package/dist/tools/types.d.ts.map +1 -1
  75. package/dist/types/agent.d.ts +10 -0
  76. package/dist/types/agent.d.ts.map +1 -1
  77. package/dist/types/configuration.d.ts +1 -1
  78. package/dist/types/configuration.d.ts.map +1 -1
  79. package/dist/types/cron.d.ts +10 -0
  80. package/dist/types/cron.d.ts.map +1 -0
  81. package/dist/types/cron.js +1 -0
  82. package/dist/types/hooks.d.ts +1 -5
  83. package/dist/types/hooks.d.ts.map +1 -1
  84. package/dist/types/hooks.js +1 -1
  85. package/dist/types/index.d.ts +1 -0
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/index.js +1 -0
  88. package/dist/types/messaging.d.ts +1 -1
  89. package/dist/types/messaging.d.ts.map +1 -1
  90. package/dist/utils/containerSetup.d.ts.map +1 -1
  91. package/dist/utils/containerSetup.js +40 -13
  92. package/dist/utils/mcpUtils.d.ts +2 -2
  93. package/dist/utils/mcpUtils.d.ts.map +1 -1
  94. package/dist/utils/mcpUtils.js +1 -5
  95. package/package.json +2 -1
  96. package/src/agent.ts +17 -12
  97. package/src/builtin-skills/loop/SKILL.md +53 -0
  98. package/src/builtin-skills/loop/parsing.ts +159 -0
  99. package/src/builtin-skills/settings/HOOKS.md +44 -57
  100. package/src/builtin-skills/settings/SKILL.md +1 -1
  101. package/src/constants/tools.ts +3 -0
  102. package/src/index.ts +1 -0
  103. package/src/managers/aiManager.ts +72 -24
  104. package/src/managers/cronManager.ts +167 -0
  105. package/src/managers/hookManager.ts +27 -13
  106. package/src/managers/liveConfigManager.ts +2 -2
  107. package/src/managers/mcpManager.ts +23 -2
  108. package/src/managers/messageManager.ts +0 -6
  109. package/src/managers/permissionManager.ts +154 -18
  110. package/src/managers/slashCommandManager.ts +12 -0
  111. package/src/managers/subagentManager.ts +15 -19
  112. package/src/managers/toolManager.ts +37 -4
  113. package/src/services/configurationService.ts +8 -7
  114. package/src/services/hook.ts +5 -11
  115. package/src/services/initializationService.ts +3 -3
  116. package/src/services/jsonlHandler.ts +4 -0
  117. package/src/services/reversionService.ts +9 -4
  118. package/src/services/session.ts +19 -12
  119. package/src/tools/agentTool.ts +1 -1
  120. package/src/tools/bashTool.ts +43 -14
  121. package/src/tools/cronCreateTool.ts +73 -0
  122. package/src/tools/cronDeleteTool.ts +47 -0
  123. package/src/tools/cronListTool.ts +38 -0
  124. package/src/tools/readTool.ts +11 -33
  125. package/src/tools/skillTool.ts +6 -4
  126. package/src/tools/taskOutputTool.ts +14 -8
  127. package/src/tools/types.ts +2 -0
  128. package/src/types/agent.ts +10 -0
  129. package/src/types/configuration.ts +1 -1
  130. package/src/types/cron.ts +9 -0
  131. package/src/types/hooks.ts +5 -9
  132. package/src/types/index.ts +1 -0
  133. package/src/types/messaging.ts +1 -1
  134. package/src/utils/containerSetup.ts +50 -16
  135. package/src/utils/mcpUtils.ts +2 -5
  136. package/dist/builtin-skills/settings/HOOKS.md +0 -95
@@ -199,12 +199,19 @@ export async function loadSessionFromJsonl(sessionId, workdir, sessionType = "ma
199
199
  const jsonlHandler = new JsonlHandler();
200
200
  // Generate the session file path directly using known session type
201
201
  const filePath = await generateSessionFilePath(sessionId, workdir, sessionType);
202
- const messages = await jsonlHandler.read(filePath);
203
- if (messages.length === 0) {
204
- return null;
202
+ // Check if file exists
203
+ try {
204
+ await fs.access(filePath);
205
+ }
206
+ catch (error) {
207
+ if (error.code === "ENOENT") {
208
+ return null;
209
+ }
210
+ throw error;
205
211
  }
212
+ const messages = await jsonlHandler.read(filePath);
206
213
  // Extract metadata from messages
207
- const lastMessage = messages[messages.length - 1];
214
+ const lastMessage = messages.length > 0 ? messages[messages.length - 1] : null;
208
215
  // Try to get rootSessionId and parentSessionId from index
209
216
  let rootSessionId;
210
217
  let parentSessionId;
@@ -232,8 +239,10 @@ export async function loadSessionFromJsonl(sessionId, workdir, sessionType = "ma
232
239
  }),
233
240
  metadata: {
234
241
  workdir,
235
- lastActiveAt: lastMessage.timestamp,
236
- latestTotalTokens: lastMessage.usage
242
+ lastActiveAt: lastMessage
243
+ ? lastMessage.timestamp
244
+ : new Date().toISOString(),
245
+ latestTotalTokens: lastMessage?.usage
237
246
  ? extractLatestTotalTokens([lastMessage])
238
247
  : 0,
239
248
  },
@@ -743,16 +752,14 @@ export async function handleSessionRestoration(restoreSessionId, continueLastSes
743
752
  // Use only JSONL format - no legacy support
744
753
  sessionToRestore = await loadSessionFromJsonl(restoreSessionId, workdir);
745
754
  if (!sessionToRestore) {
746
- console.error(`Session not found: ${restoreSessionId}`);
747
- process.exit(1);
755
+ throw new Error(`Session not found: ${restoreSessionId}`);
748
756
  }
749
757
  }
750
758
  else if (continueLastSession) {
751
759
  // Use only JSONL format - no legacy support
752
760
  sessionToRestore = await getLatestSessionFromJsonl(workdir);
753
761
  if (!sessionToRestore) {
754
- console.error(`No previous session found for workdir: ${workdir}`);
755
- process.exit(1);
762
+ throw new Error(`No previous session found for workdir: ${workdir}`);
756
763
  }
757
764
  }
758
765
  if (sessionToRestore) {
@@ -764,7 +771,7 @@ export async function handleSessionRestoration(restoreSessionId, continueLastSes
764
771
  }
765
772
  catch (error) {
766
773
  console.error("Failed to restore session:", error);
767
- process.exit(1);
774
+ throw error;
768
775
  }
769
776
  }
770
777
  /**
@@ -57,7 +57,7 @@ The Agent tool launches specialized agents (subprocesses) that autonomously hand
57
57
  Available agent types and the tools they have access to:
58
58
  ${subagentList || "No agents configured"}
59
59
 
60
- When using the Agent tool, you must specify a subagent_type parameter to select which agent type to use.
60
+ When using the Agent tool, you must specify a subagent_type parameter to select which agent type to use from the list above. Choose the agent whose description best matches the task you want to delegate.
61
61
 
62
62
  - When doing file search, prefer to use the ${AGENT_TOOL_NAME} tool in order to reduce context usage.
63
63
  - You should proactively use the ${AGENT_TOOL_NAME} tool with specialized agents when the task at hand matches the agent's description.
@@ -1 +1 @@
1
- {"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AActE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UA4XtB,CAAC"}
1
+ {"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAyCtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UA2XtB,CAAC"}
@@ -1,9 +1,33 @@
1
1
  import { spawn } from "child_process";
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
+ import * as os from "os";
2
5
  import { logger } from "../utils/globalLogger.js";
3
6
  import { stripAnsiColors } from "../utils/stringUtils.js";
4
7
  import { BASH_TOOL_NAME, TASK_OUTPUT_TOOL_NAME, GLOB_TOOL_NAME, GREP_TOOL_NAME, READ_TOOL_NAME, EDIT_TOOL_NAME, WRITE_TOOL_NAME, } from "../constants/tools.js";
5
8
  const MAX_OUTPUT_LENGTH = 30000;
6
9
  const BASH_DEFAULT_TIMEOUT_MS = 120000;
10
+ /**
11
+ * Helper function to handle large output by truncation and persistence to a temporary file.
12
+ */
13
+ function processOutput(output) {
14
+ if (output.length <= MAX_OUTPUT_LENGTH) {
15
+ return output;
16
+ }
17
+ try {
18
+ const tempDir = os.tmpdir();
19
+ const fileName = `bash_output_${Date.now()}_${Math.random().toString(36).substring(2, 11)}.txt`;
20
+ const filePath = path.join(tempDir, fileName);
21
+ fs.writeFileSync(filePath, output, "utf8");
22
+ return (output.substring(0, MAX_OUTPUT_LENGTH) +
23
+ `\n\n... (output truncated)\nFull output persisted to: ${filePath}`);
24
+ }
25
+ catch (error) {
26
+ logger.error("Failed to persist large bash output:", error);
27
+ return (output.substring(0, MAX_OUTPUT_LENGTH) +
28
+ "\n\n... (output truncated, failed to persist full output)");
29
+ }
30
+ }
7
31
  /**
8
32
  * Bash command execution tool - supports both foreground and background execution
9
33
  */
@@ -63,7 +87,7 @@ Usage notes:
63
87
  - The command argument is required.
64
88
  - You can specify an optional timeout in milliseconds (up to ${BASH_DEFAULT_TIMEOUT_MS}ms / ${BASH_DEFAULT_TIMEOUT_MS / 60000} minutes). If not specified, commands will timeout after ${BASH_DEFAULT_TIMEOUT_MS}ms (${BASH_DEFAULT_TIMEOUT_MS / 60000} minutes).
65
89
  - It is very helpful if you write a clear, concise description of what this command does in 5-10 words.
66
- - If the output exceeds ${MAX_OUTPUT_LENGTH} characters, output will be truncated before being returned to you.
90
+ - If the output exceeds ${MAX_OUTPUT_LENGTH} characters, output will be truncated and the full output will be persisted to a temporary file.
67
91
  - You can use the \`run_in_background\` parameter to run the command in the background, which allows you to continue working while the command runs. You can monitor the output using the ${BASH_TOOL_NAME} tool as it becomes available. You do not need to use '&' at the end of the command when using this parameter.
68
92
  - Avoid using ${BASH_TOOL_NAME} with the \`find\`, \`sed\`, \`awk\`, or \`echo\` commands, unless explicitly instructed or when these commands are truly necessary for the task. Instead, always prefer using the dedicated tools for these commands:
69
93
  - File search: Use ${GLOB_TOOL_NAME} (NOT find or ls)
@@ -248,7 +272,7 @@ Usage notes:
248
272
  }
249
273
  resolve({
250
274
  success: false,
251
- content: outputBuffer + (errorBuffer ? "\n" + errorBuffer : ""),
275
+ content: processOutput(outputBuffer + (errorBuffer ? "\n" + errorBuffer : "")),
252
276
  error: reason,
253
277
  });
254
278
  }
@@ -286,17 +310,14 @@ Usage notes:
286
310
  }
287
311
  const exitCode = code ?? 0;
288
312
  const combinedOutput = outputBuffer + (errorBuffer ? "\n" + errorBuffer : "");
289
- // Handle large output by truncation if needed
313
+ // Handle large output by truncation and persistence if needed
290
314
  const finalOutput = combinedOutput || `Command executed with exit code: ${exitCode}`;
291
- const content = finalOutput.length > MAX_OUTPUT_LENGTH
292
- ? finalOutput.substring(0, MAX_OUTPUT_LENGTH) +
293
- "\n\n... (output truncated)"
294
- : finalOutput;
295
- const shortResult = combinedOutput
296
- .trim()
297
- .split("\n")
298
- .slice(-3)
299
- .join("\n");
315
+ const content = processOutput(finalOutput);
316
+ const lines = combinedOutput.trim().split("\n");
317
+ const shortResult = lines.length <= 3
318
+ ? lines.join("\n")
319
+ : lines.slice(0, 3).join("\n") +
320
+ `\n... +${lines.length - 3} lines`;
300
321
  resolve({
301
322
  success: exitCode === 0,
302
323
  content,
@@ -0,0 +1,3 @@
1
+ import { ToolPlugin } from "./types.js";
2
+ export declare const cronCreateTool: ToolPlugin;
3
+ //# sourceMappingURL=cronCreateTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cronCreateTool.d.ts","sourceRoot":"","sources":["../../src/tools/cronCreateTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGjE,eAAO,MAAM,cAAc,EAAE,UAqE5B,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { CRON_CREATE_TOOL_NAME } from "../constants/tools.js";
2
+ export const cronCreateTool = {
3
+ name: CRON_CREATE_TOOL_NAME,
4
+ config: {
5
+ type: "function",
6
+ function: {
7
+ name: CRON_CREATE_TOOL_NAME,
8
+ description: "Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.",
9
+ parameters: {
10
+ type: "object",
11
+ properties: {
12
+ cron: {
13
+ type: "string",
14
+ description: 'Standard 5-field cron expression in local time: "M H DoM Mon DoW"',
15
+ },
16
+ prompt: {
17
+ type: "string",
18
+ description: "The prompt to enqueue at each fire time",
19
+ },
20
+ recurring: {
21
+ type: "boolean",
22
+ description: "Default: true. true = fire on every cron match until deleted or auto-expired after 7 days. false = fire once at the next match, then auto-delete",
23
+ default: true,
24
+ },
25
+ },
26
+ required: ["cron", "prompt"],
27
+ },
28
+ },
29
+ },
30
+ execute: async (args, context) => {
31
+ const { cron, prompt, recurring = true, } = args;
32
+ if (!context.cronManager) {
33
+ return {
34
+ success: false,
35
+ content: "",
36
+ error: "CronManager not available",
37
+ };
38
+ }
39
+ try {
40
+ const job = context.cronManager.createJob({
41
+ cron,
42
+ prompt,
43
+ recurring,
44
+ });
45
+ return {
46
+ success: true,
47
+ content: JSON.stringify({ id: job.id }, null, 2),
48
+ shortResult: `Scheduled job ${job.id}`,
49
+ };
50
+ }
51
+ catch (error) {
52
+ return {
53
+ success: false,
54
+ content: "",
55
+ error: error instanceof Error ? error.message : String(error),
56
+ };
57
+ }
58
+ },
59
+ };
@@ -0,0 +1,3 @@
1
+ import { ToolPlugin } from "./types.js";
2
+ export declare const cronDeleteTool: ToolPlugin;
3
+ //# sourceMappingURL=cronDeleteTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cronDeleteTool.d.ts","sourceRoot":"","sources":["../../src/tools/cronDeleteTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGjE,eAAO,MAAM,cAAc,EAAE,UA2C5B,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { CRON_DELETE_TOOL_NAME } from "../constants/tools.js";
2
+ export const cronDeleteTool = {
3
+ name: CRON_DELETE_TOOL_NAME,
4
+ config: {
5
+ type: "function",
6
+ function: {
7
+ name: CRON_DELETE_TOOL_NAME,
8
+ description: "Cancel a cron job previously scheduled with CronCreate. Removes it from the in-memory session store.",
9
+ parameters: {
10
+ type: "object",
11
+ properties: {
12
+ id: {
13
+ type: "string",
14
+ description: "Job ID returned by CronCreate",
15
+ },
16
+ },
17
+ required: ["id"],
18
+ },
19
+ },
20
+ },
21
+ execute: async (args, context) => {
22
+ const { id } = args;
23
+ if (!context.cronManager) {
24
+ return {
25
+ success: false,
26
+ content: "",
27
+ error: "CronManager not available",
28
+ };
29
+ }
30
+ const success = context.cronManager.deleteJob(id);
31
+ return {
32
+ success,
33
+ content: JSON.stringify({ success }, null, 2),
34
+ shortResult: success ? `Deleted job ${id}` : `Job ${id} not found`,
35
+ error: success ? undefined : `Job ${id} not found`,
36
+ };
37
+ },
38
+ };
@@ -0,0 +1,3 @@
1
+ import { ToolPlugin } from "./types.js";
2
+ export declare const cronListTool: ToolPlugin;
3
+ //# sourceMappingURL=cronListTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cronListTool.d.ts","sourceRoot":"","sources":["../../src/tools/cronListTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGjE,eAAO,MAAM,YAAY,EAAE,UAkC1B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { CRON_LIST_TOOL_NAME } from "../constants/tools.js";
2
+ export const cronListTool = {
3
+ name: CRON_LIST_TOOL_NAME,
4
+ config: {
5
+ type: "function",
6
+ function: {
7
+ name: CRON_LIST_TOOL_NAME,
8
+ description: "List all cron jobs scheduled via CronCreate in this session.",
9
+ parameters: {
10
+ type: "object",
11
+ properties: {},
12
+ },
13
+ },
14
+ },
15
+ execute: async (_args, context) => {
16
+ if (!context.cronManager) {
17
+ return {
18
+ success: false,
19
+ content: "",
20
+ error: "CronManager not available",
21
+ };
22
+ }
23
+ const jobs = context.cronManager.listJobs();
24
+ return {
25
+ success: true,
26
+ content: JSON.stringify({ jobs }, null, 2),
27
+ shortResult: `Found ${jobs.length} jobs`,
28
+ };
29
+ },
30
+ };
@@ -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;AA8HtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAiOtB,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,UA2MtB,CAAC"}
@@ -204,26 +204,14 @@ Usage:
204
204
  shortResult: "Empty file",
205
205
  };
206
206
  }
207
- // Check content size limit (100KB)
208
- const MAX_CONTENT_SIZE = 100 * 1024; // 100KB
209
- let contentToProcess = fileContent;
210
- let contentTruncated = false;
211
- if (fileContent.length > MAX_CONTENT_SIZE) {
212
- contentToProcess = fileContent.substring(0, MAX_CONTENT_SIZE);
213
- contentTruncated = true;
214
- }
215
- const lines = contentToProcess.split("\n");
216
- const totalLines = lines.length;
217
- const originalTotalLines = fileContent.split("\n").length;
207
+ const allLines = fileContent.split("\n");
208
+ const totalLines = allLines.length;
218
209
  // Handle offset and limit
219
210
  let startLine = 1;
220
- let endLine = Math.min(totalLines, 2000); // Default maximum read 2000 lines
221
211
  if (typeof offset === "number") {
222
212
  startLine = Math.max(1, offset);
223
213
  }
224
- if (typeof limit === "number") {
225
- endLine = Math.min(totalLines, startLine + limit - 1);
226
- }
214
+ let endLine = Math.min(totalLines, startLine + (typeof limit === "number" ? limit : 2000) - 1);
227
215
  // If no offset and limit specified, read entire file (maximum 2000 lines)
228
216
  if (typeof offset !== "number" && typeof limit !== "number") {
229
217
  startLine = 1;
@@ -238,7 +226,7 @@ Usage:
238
226
  };
239
227
  }
240
228
  // Extract specified line range
241
- const selectedLines = lines.slice(startLine - 1, endLine);
229
+ const selectedLines = allLines.slice(startLine - 1, endLine);
242
230
  // Format output (cat -n format, with line numbers)
243
231
  const formattedContent = selectedLines
244
232
  .map((line, index) => {
@@ -250,11 +238,7 @@ Usage:
250
238
  .join("\n");
251
239
  // Add file information header
252
240
  let content = `File: ${filePath}\n`;
253
- if (contentTruncated) {
254
- content += `Content truncated at ${MAX_CONTENT_SIZE} bytes\n`;
255
- content += `Lines ${startLine}-${endLine} of ${totalLines} (original file: ${originalTotalLines} lines)\n`;
256
- }
257
- else if (startLine > 1 || endLine < totalLines) {
241
+ if (startLine > 1 || endLine < totalLines) {
258
242
  content += `Lines ${startLine}-${endLine} of ${totalLines}\n`;
259
243
  }
260
244
  else {
@@ -263,22 +247,14 @@ Usage:
263
247
  content += "─".repeat(50) + "\n";
264
248
  content += formattedContent;
265
249
  // If only showing partial content, add prompt
266
- if (endLine < totalLines || contentTruncated) {
250
+ if (endLine < totalLines) {
267
251
  content += `\n${"─".repeat(50)}\n`;
268
- if (contentTruncated) {
269
- content += `... content truncated due to size limit (${MAX_CONTENT_SIZE} bytes)`;
270
- if (endLine < totalLines) {
271
- content += ` and ${totalLines - endLine} more lines not shown`;
272
- }
273
- }
274
- else {
275
- content += `... ${totalLines - endLine} more lines not shown`;
276
- }
252
+ content += `... ${totalLines - endLine} more lines not shown`;
277
253
  }
278
254
  return {
279
255
  success: true,
280
256
  content,
281
- shortResult: `Read ${selectedLines.length} lines${totalLines > 2000 || contentTruncated ? " (truncated)" : ""}`,
257
+ shortResult: `Read ${selectedLines.length} lines${totalLines > 2000 ? " (truncated)" : ""}`,
282
258
  };
283
259
  }
284
260
  catch (error) {
@@ -1,6 +1,3 @@
1
1
  import type { ToolPlugin } from "./types.js";
2
- /**
3
- * Skill tool plugin for invoking Wave skills
4
- */
5
2
  export declare const skillTool: ToolPlugin;
6
3
  //# 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,EAA2B,MAAM,YAAY,CAAC;AAUtE;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,UA0MvB,CAAC"}
1
+ {"version":3,"file":"skillTool.d.ts","sourceRoot":"","sources":["../../src/tools/skillTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAgBtE,eAAO,MAAM,SAAS,EAAE,UAyMvB,CAAC"}
@@ -5,13 +5,14 @@ import { countToolBlocks, formatToolTokenSummary, } from "../utils/messageOperat
5
5
  /**
6
6
  * Skill tool plugin for invoking Wave skills
7
7
  */
8
+ const SKILL_TOOL_DESCRIPTION = "Execute a skill within the main conversation. When users ask you to perform tasks, check if any of the available skills match. Skills provide specialized capabilities and domain knowledge.";
8
9
  export const skillTool = {
9
10
  name: SKILL_TOOL_NAME,
10
11
  config: {
11
12
  type: "function",
12
13
  function: {
13
14
  name: SKILL_TOOL_NAME,
14
- description: "Invoke a Wave skill by name. Skills are user-defined automation templates that can be personal or project-specific.",
15
+ description: SKILL_TOOL_DESCRIPTION,
15
16
  parameters: {
16
17
  type: "object",
17
18
  properties: {
@@ -31,12 +32,12 @@ export const skillTool = {
31
32
  prompt: (args) => {
32
33
  const availableSkills = args?.availableSkills?.filter((skill) => !skill.disableModelInvocation);
33
34
  if (!availableSkills || availableSkills.length === 0) {
34
- 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.";
35
+ return `${SKILL_TOOL_DESCRIPTION} No skills are currently available.`;
35
36
  }
36
37
  const skillList = availableSkills
37
38
  .map((skill) => `• **${skill.name}** (${skill.type}): ${skill.description}`)
38
39
  .join("\n");
39
- 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}`;
40
+ return `${SKILL_TOOL_DESCRIPTION} Do not invoke the same skill repeatedly if it has already been called with the same arguments.\n\nAvailable skills:\n${skillList}`;
40
41
  },
41
42
  execute: async (args, context) => {
42
43
  try {
@@ -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,UAiN5B,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,UAuN5B,CAAC"}
@@ -28,7 +28,7 @@ export const taskOutputTool = {
28
28
  description: "Max wait time in ms",
29
29
  },
30
30
  },
31
- required: ["task_id"],
31
+ required: ["task_id", "block", "timeout"],
32
32
  },
33
33
  },
34
34
  },
@@ -75,8 +75,8 @@ export const taskOutputTool = {
75
75
  let isTruncated = false;
76
76
  if (finalContent.length > MAX_OUTPUT_LENGTH) {
77
77
  processedContent =
78
- finalContent.substring(0, MAX_OUTPUT_LENGTH) +
79
- "\n\n... (output truncated)";
78
+ "\n\n... (output truncated)\n" +
79
+ finalContent.substring(finalContent.length - MAX_OUTPUT_LENGTH);
80
80
  isTruncated = true;
81
81
  }
82
82
  if (isTruncated && output.outputPath) {
@@ -135,11 +135,18 @@ export const taskOutputTool = {
135
135
  if (context.abortSignal) {
136
136
  context.abortSignal.removeEventListener("abort", onAbort);
137
137
  }
138
- resolve({
139
- success: true,
140
- content: "Retrieval timed out",
141
- shortResult: `${taskId}: timeout`,
142
- });
138
+ const result = getResult();
139
+ if (result) {
140
+ result.shortResult = `${taskId}: timeout`;
141
+ resolve(result);
142
+ }
143
+ else {
144
+ resolve({
145
+ success: true,
146
+ content: "Retrieval timed out",
147
+ shortResult: `${taskId}: timeout`,
148
+ });
149
+ }
143
150
  return;
144
151
  }
145
152
  const task = backgroundTaskManager.getTask(taskId);
@@ -59,6 +59,8 @@ export interface ToolContext {
59
59
  subagentManager?: import("../managers/subagentManager.js").SubagentManager;
60
60
  /** Skill manager instance for skill invocation */
61
61
  skillManager?: import("../managers/skillManager.js").SkillManager;
62
+ /** Cron manager instance for scheduling tasks */
63
+ cronManager?: import("../managers/cronManager.js").CronManager;
62
64
  /** Current session ID */
63
65
  sessionId?: string;
64
66
  /** The ID of the current tool call */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,16 @@ export interface AgentOptions {
55
55
  isNewWorktree?: boolean;
56
56
  /**Whether to watch for skill changes - defaults to true */
57
57
  watchSkills?: boolean;
58
+ /**
59
+ * Optional list of tool names to always allow.
60
+ * These rules follow the standard permission rule syntax: `ToolName` or `ToolName(pattern)`.
61
+ */
62
+ allowedTools?: string[];
63
+ /**
64
+ * Optional list of tool names to always disallow.
65
+ * These rules follow the standard permission rule syntax: `ToolName` or `ToolName(pattern)`.
66
+ */
67
+ disallowedTools?: string[];
58
68
  }
59
69
  export interface AgentCallbacks extends MessageManagerCallbacks, BackgroundTaskManagerCallbacks, McpManagerCallbacks, SubagentManagerCallbacks {
60
70
  onBackgroundTasksChange?: (tasks: BackgroundTask[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gCAAgC;IAChC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,oCAAoC;IACpC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cACf,SAAQ,uBAAuB,EAC7B,8BAA8B,EAC9B,mBAAmB,EACnB,wBAAwB;IAC1B,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC7D,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,iCAAiC,CAAC,EAAE,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gCAAgC;IAChC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qFAAqF;IACrF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,oCAAoC;IACpC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cACf,SAAQ,uBAAuB,EAC7B,8BAA8B,EAC9B,mBAAmB,EACnB,wBAAwB;IAC1B,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC7D,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,iCAAiC,CAAC,EAAE,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,KACX,IAAI,CAAC;IACV,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC"}
@@ -18,7 +18,7 @@ export interface WaveConfiguration {
18
18
  permissions?: {
19
19
  allow?: string[];
20
20
  deny?: string[];
21
- defaultMode?: PermissionMode;
21
+ permissionMode?: PermissionMode;
22
22
  /**
23
23
  * List of directories that are considered part of the Safe Zone.
24
24
  * File operations within these directories can be auto-accepted.
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/types/configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/types/configuration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface CronJob {
2
+ id: string;
3
+ cron: string;
4
+ prompt: string;
5
+ recurring: boolean;
6
+ createdAt: number;
7
+ nextRun: number;
8
+ periodMs: number;
9
+ }
10
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/types/cron.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -5,7 +5,7 @@
5
5
  * enabling automated actions at specific workflow points.
6
6
  */
7
7
  export type { WaveConfiguration, HookConfiguration, PartialHookConfiguration, HookConfigurationRecord, } from "./configuration.js";
8
- export type HookEvent = "PreToolUse" | "PostToolUse" | "UserPromptSubmit" | "Stop" | "SubagentStop" | "Notification" | "WorktreeCreate";
8
+ export type HookEvent = "PreToolUse" | "PostToolUse" | "UserPromptSubmit" | "Stop" | "SubagentStop" | "PermissionRequest" | "WorktreeCreate";
9
9
  export interface HookCommand {
10
10
  type: "command";
11
11
  command: string;
@@ -63,8 +63,6 @@ export interface HookJsonInput {
63
63
  tool_response?: unknown;
64
64
  user_prompt?: string;
65
65
  subagent_type?: string;
66
- message?: string;
67
- notification_type?: string;
68
66
  name?: string;
69
67
  }
70
68
  export interface ExtendedHookExecutionContext extends HookExecutionContext {
@@ -76,8 +74,6 @@ export interface ExtendedHookExecutionContext extends HookExecutionContext {
76
74
  env?: Record<string, string>;
77
75
  userPrompt?: string;
78
76
  subagentType?: string;
79
- message?: string;
80
- notificationType?: string;
81
77
  worktreeName?: string;
82
78
  }
83
79
  export interface HookEnvironment {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}