wave-agent-sdk 0.0.5 → 0.0.7

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 (145) hide show
  1. package/dist/agent.d.ts +3 -6
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +24 -21
  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 +4 -2
  8. package/dist/managers/aiManager.d.ts.map +1 -1
  9. package/dist/managers/aiManager.js +91 -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} +27 -16
  13. package/dist/managers/hookManager.d.ts.map +1 -0
  14. package/dist/{hooks/manager.js → managers/hookManager.js} +112 -17
  15. package/dist/managers/mcpManager.d.ts +1 -1
  16. package/dist/managers/mcpManager.d.ts.map +1 -1
  17. package/dist/managers/messageManager.d.ts +20 -15
  18. package/dist/managers/messageManager.d.ts.map +1 -1
  19. package/dist/managers/messageManager.js +19 -25
  20. package/dist/managers/skillManager.d.ts +1 -1
  21. package/dist/managers/skillManager.d.ts.map +1 -1
  22. package/dist/managers/slashCommandManager.d.ts +1 -1
  23. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  24. package/dist/managers/slashCommandManager.js +5 -2
  25. package/dist/managers/subagentManager.d.ts +7 -12
  26. package/dist/managers/subagentManager.d.ts.map +1 -1
  27. package/dist/managers/subagentManager.js +40 -46
  28. package/dist/managers/toolManager.d.ts +1 -1
  29. package/dist/managers/toolManager.d.ts.map +1 -1
  30. package/dist/services/aiService.d.ts +1 -1
  31. package/dist/services/aiService.d.ts.map +1 -1
  32. package/dist/services/aiService.js +8 -1
  33. package/dist/services/hook.d.ts +56 -0
  34. package/dist/services/hook.d.ts.map +1 -0
  35. package/dist/services/hook.js +276 -0
  36. package/dist/services/session.d.ts +1 -1
  37. package/dist/services/session.d.ts.map +1 -1
  38. package/dist/services/session.js +5 -4
  39. package/dist/tools/taskTool.d.ts.map +1 -1
  40. package/dist/tools/taskTool.js +7 -3
  41. package/dist/tools/todoWriteTool.d.ts.map +1 -1
  42. package/dist/tools/todoWriteTool.js +3 -10
  43. package/dist/types/commands.d.ts +24 -0
  44. package/dist/types/commands.d.ts.map +1 -0
  45. package/dist/types/commands.js +5 -0
  46. package/dist/types/config.d.ts +13 -0
  47. package/dist/types/config.d.ts.map +1 -0
  48. package/dist/types/config.js +5 -0
  49. package/dist/types/core.d.ts +38 -0
  50. package/dist/types/core.d.ts.map +1 -0
  51. package/dist/{types.js → types/core.js} +4 -13
  52. package/dist/{hooks/types.d.ts → types/hooks.d.ts} +2 -1
  53. package/dist/types/hooks.d.ts.map +1 -0
  54. package/dist/types/index.d.ts +20 -0
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/index.js +21 -0
  57. package/dist/types/mcp.d.ts +28 -0
  58. package/dist/types/mcp.d.ts.map +1 -0
  59. package/dist/types/mcp.js +5 -0
  60. package/dist/types/messaging.d.ts +80 -0
  61. package/dist/types/messaging.d.ts.map +1 -0
  62. package/dist/types/messaging.js +9 -0
  63. package/dist/types/processes.d.ts +17 -0
  64. package/dist/types/processes.d.ts.map +1 -0
  65. package/dist/types/processes.js +5 -0
  66. package/dist/types/skills.d.ts +78 -0
  67. package/dist/types/skills.d.ts.map +1 -0
  68. package/dist/types/skills.js +17 -0
  69. package/dist/utils/configResolver.d.ts +1 -1
  70. package/dist/utils/configResolver.d.ts.map +1 -1
  71. package/dist/utils/configResolver.js +1 -1
  72. package/dist/utils/configValidator.d.ts +1 -1
  73. package/dist/utils/configValidator.d.ts.map +1 -1
  74. package/dist/utils/configValidator.js +1 -1
  75. package/dist/utils/convertMessagesForAPI.d.ts +1 -1
  76. package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
  77. package/dist/utils/convertMessagesForAPI.js +1 -8
  78. package/dist/utils/customCommands.d.ts +1 -1
  79. package/dist/utils/customCommands.d.ts.map +1 -1
  80. package/dist/{hooks/matcher.d.ts → utils/hookMatcher.d.ts} +2 -7
  81. package/dist/utils/hookMatcher.d.ts.map +1 -0
  82. package/dist/utils/markdownParser.d.ts +1 -1
  83. package/dist/utils/markdownParser.d.ts.map +1 -1
  84. package/dist/utils/mcpUtils.d.ts +1 -1
  85. package/dist/utils/mcpUtils.d.ts.map +1 -1
  86. package/dist/utils/messageOperations.d.ts +14 -21
  87. package/dist/utils/messageOperations.d.ts.map +1 -1
  88. package/dist/utils/messageOperations.js +37 -20
  89. package/dist/utils/skillParser.d.ts +1 -1
  90. package/dist/utils/skillParser.d.ts.map +1 -1
  91. package/package.json +1 -1
  92. package/src/agent.ts +49 -43
  93. package/src/index.ts +3 -4
  94. package/src/managers/aiManager.ts +241 -160
  95. package/src/managers/backgroundBashManager.ts +1 -1
  96. package/src/{hooks/manager.ts → managers/hookManager.ts} +168 -56
  97. package/src/managers/mcpManager.ts +1 -1
  98. package/src/managers/messageManager.ts +44 -44
  99. package/src/managers/skillManager.ts +1 -1
  100. package/src/managers/slashCommandManager.ts +10 -7
  101. package/src/managers/subagentManager.ts +47 -54
  102. package/src/managers/toolManager.ts +1 -1
  103. package/src/services/aiService.ts +9 -2
  104. package/src/services/hook.ts +360 -0
  105. package/src/services/session.ts +6 -7
  106. package/src/tools/taskTool.ts +13 -5
  107. package/src/tools/todoWriteTool.ts +3 -11
  108. package/src/types/commands.ts +26 -0
  109. package/src/types/config.ts +14 -0
  110. package/src/types/core.ts +49 -0
  111. package/src/{hooks/types.ts → types/hooks.ts} +1 -0
  112. package/src/types/index.ts +23 -0
  113. package/src/types/mcp.ts +31 -0
  114. package/src/types/messaging.ts +102 -0
  115. package/src/types/processes.ts +18 -0
  116. package/src/types/skills.ts +91 -0
  117. package/src/utils/configResolver.ts +1 -1
  118. package/src/utils/configValidator.ts +5 -1
  119. package/src/utils/convertMessagesForAPI.ts +2 -10
  120. package/src/utils/customCommands.ts +1 -1
  121. package/src/{hooks/matcher.ts → utils/hookMatcher.ts} +1 -12
  122. package/src/utils/markdownParser.ts +1 -1
  123. package/src/utils/mcpUtils.ts +1 -1
  124. package/src/utils/messageOperations.ts +56 -42
  125. package/src/utils/skillParser.ts +1 -1
  126. package/dist/hooks/executor.d.ts +0 -56
  127. package/dist/hooks/executor.d.ts.map +0 -1
  128. package/dist/hooks/executor.js +0 -312
  129. package/dist/hooks/index.d.ts +0 -17
  130. package/dist/hooks/index.d.ts.map +0 -1
  131. package/dist/hooks/index.js +0 -14
  132. package/dist/hooks/manager.d.ts.map +0 -1
  133. package/dist/hooks/matcher.d.ts.map +0 -1
  134. package/dist/hooks/settings.d.ts +0 -46
  135. package/dist/hooks/settings.d.ts.map +0 -1
  136. package/dist/hooks/settings.js +0 -100
  137. package/dist/hooks/types.d.ts.map +0 -1
  138. package/dist/types.d.ts +0 -288
  139. package/dist/types.d.ts.map +0 -1
  140. package/src/hooks/executor.ts +0 -440
  141. package/src/hooks/index.ts +0 -52
  142. package/src/hooks/settings.ts +0 -129
  143. package/src/types.ts +0 -357
  144. /package/dist/{hooks/types.js → types/hooks.js} +0 -0
  145. /package/dist/{hooks/matcher.js → utils/hookMatcher.js} +0 -0
@@ -1,4 +1,4 @@
1
- import type { ParsedSkillFile, SkillParseOptions, SkillMetadata } from "../types.js";
1
+ import type { ParsedSkillFile, SkillParseOptions, SkillMetadata } from "../types/index.js";
2
2
  /**
3
3
  * Parse a SKILL.md file and validate its contents
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skillParser.d.ts","sourceRoot":"","sources":["../../src/utils/skillParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,eAAe,CAiEjB;AAkCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAwCvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAa5E"}
1
+ {"version":3,"file":"skillParser.d.ts","sourceRoot":"","sources":["../../src/utils/skillParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,aAAa,EACd,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,eAAe,CAiEjB;AAkCD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,CAwCvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAa5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wave-agent-sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "SDK for building AI-powered development tools and agents",
5
5
  "keywords": [
6
6
  "ai",
package/src/agent.ts CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  type BackgroundBashManagerCallbacks,
14
14
  } from "./managers/backgroundBashManager.js";
15
15
  import { SlashCommandManager } from "./managers/slashCommandManager.js";
16
- import type { SlashCommand, CustomSlashCommand } from "./types.js";
16
+ import type { SlashCommand, CustomSlashCommand } from "./types/index.js";
17
17
  import type {
18
18
  Message,
19
19
  Logger,
@@ -21,8 +21,8 @@ import type {
21
21
  GatewayConfig,
22
22
  ModelConfig,
23
23
  Usage,
24
- } from "./types.js";
25
- import { HookManager } from "./hooks/index.js";
24
+ } from "./types/index.js";
25
+ import { HookManager } from "./managers/hookManager.js";
26
26
  import { configResolver } from "./utils/configResolver.js";
27
27
  import { configValidator } from "./utils/configValidator.js";
28
28
  import { SkillManager } from "./managers/skillManager.js";
@@ -145,12 +145,7 @@ export class Agent {
145
145
  logger: this.logger,
146
146
  }); // Initialize tool registry, pass MCP manager
147
147
 
148
- this.hookManager = new HookManager(
149
- this.workdir,
150
- undefined,
151
- undefined,
152
- this.logger,
153
- ); // Initialize hooks manager
148
+ this.hookManager = new HookManager(this.workdir, undefined, this.logger); // Initialize hooks manager
154
149
 
155
150
  // Initialize MessageManager
156
151
  this.messageManager = new MessageManager({
@@ -221,6 +216,10 @@ export class Agent {
221
216
  return [...this._usages]; // Return copy to prevent external modification
222
217
  }
223
218
 
219
+ public get sessionFilePath(): string {
220
+ return this.messageManager.getTranscriptPath();
221
+ }
222
+
224
223
  /**
225
224
  * Rebuild usage array from messages containing usage metadata
226
225
  * Called during session restoration to reconstruct usage tracking
@@ -422,10 +421,9 @@ export class Agent {
422
421
 
423
422
  /** Unified interrupt method, interrupts both AI messages and command execution */
424
423
  public abortMessage(): void {
425
- this.abortAIMessage();
424
+ this.abortAIMessage(); // This will abort tools including Task tool (subagents)
426
425
  this.abortBashCommand();
427
426
  this.abortSlashCommand();
428
- this.abortSubagents();
429
427
  }
430
428
 
431
429
  /** Add to input history */
@@ -443,23 +441,12 @@ export class Agent {
443
441
  this.slashCommandManager.abortCurrentCommand();
444
442
  }
445
443
 
446
- /** Interrupt all subagent execution */
447
- public abortSubagents(): void {
448
- this.subagentManager.abortAllInstances();
449
- }
450
-
451
- /** Interrupt specific subagent execution */
452
- public abortSubagent(subagentId: string): boolean {
453
- return this.subagentManager.abortInstance(subagentId);
454
- }
455
-
456
444
  /** Destroy managers, clean up resources */
457
445
  public async destroy(): Promise<void> {
458
446
  await this.messageManager.saveSession();
459
- this.abortAIMessage();
447
+ this.abortAIMessage(); // This will abort tools including Task tool (subagents)
460
448
  this.abortBashCommand();
461
449
  this.abortSlashCommand();
462
- this.abortSubagents();
463
450
  // Cleanup background bash manager
464
451
  this.backgroundBashManager.cleanup();
465
452
  // Cleanup MCP connections
@@ -499,34 +486,53 @@ export class Agent {
499
486
  // Add user message to history
500
487
  this.addToInputHistory(content);
501
488
 
502
- // Execute UserPromptSubmit hooks before processing the prompt
489
+ // Add user message first, will automatically sync to UI
490
+ this.messageManager.addUserMessage({
491
+ content,
492
+ images: images?.map((img) => ({
493
+ path: img.path,
494
+ mimeType: img.mimeType,
495
+ })),
496
+ });
497
+
498
+ // Execute UserPromptSubmit hooks after adding the user message
503
499
  if (this.hookManager) {
504
500
  try {
505
- await this.hookManager.executeHooks("UserPromptSubmit", {
506
- event: "UserPromptSubmit",
507
- projectDir: this.workdir,
508
- timestamp: new Date(),
509
- // UserPromptSubmit doesn't need toolName
510
- sessionId: this.sessionId,
511
- transcriptPath: this.messageManager.getTranscriptPath(),
512
- cwd: this.workdir,
513
- userPrompt: content,
514
- });
501
+ const hookResults = await this.hookManager.executeHooks(
502
+ "UserPromptSubmit",
503
+ {
504
+ event: "UserPromptSubmit",
505
+ projectDir: this.workdir,
506
+ timestamp: new Date(),
507
+ // UserPromptSubmit doesn't need toolName
508
+ sessionId: this.sessionId,
509
+ transcriptPath: this.messageManager.getTranscriptPath(),
510
+ cwd: this.workdir,
511
+ userPrompt: content,
512
+ },
513
+ );
514
+
515
+ // Process hook results and determine if we should continue
516
+ const processResult = this.hookManager.processHookResults(
517
+ "UserPromptSubmit",
518
+ hookResults,
519
+ this.messageManager,
520
+ );
521
+
522
+ // If hook processing indicates we should block (exit code 2), stop here
523
+ if (processResult.shouldBlock) {
524
+ this.logger?.info(
525
+ "UserPromptSubmit hook blocked prompt processing with error:",
526
+ processResult.errorMessage,
527
+ );
528
+ return; // Don't send to AI
529
+ }
515
530
  } catch (error) {
516
531
  this.logger?.warn("UserPromptSubmit hooks execution failed:", error);
517
532
  // Continue processing even if hooks fail
518
533
  }
519
534
  }
520
535
 
521
- // Add user message, will automatically sync to UI
522
- this.messageManager.addUserMessage(
523
- content,
524
- images?.map((img) => ({
525
- path: img.path,
526
- mimeType: img.mimeType,
527
- })),
528
- );
529
-
530
536
  // Send AI message
531
537
  await this.aiManager.sendAIMessage();
532
538
  } catch (error) {
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  export * from "./services/aiService.js";
3
3
  export * from "./services/memory.js";
4
4
  export * from "./services/session.js";
5
+ export * from "./services/hook.js";
5
6
 
6
7
  // Export main agent
7
8
  export * from "./agent.js";
@@ -15,9 +16,7 @@ export * from "./utils/messageOperations.js";
15
16
  export * from "./utils/path.js";
16
17
  export * from "./utils/stringUtils.js";
17
18
  export * from "./utils/customCommands.js";
18
-
19
- // Export hooks system
20
- export * from "./hooks/index.js";
19
+ export * from "./utils/hookMatcher.js";
21
20
 
22
21
  // Export types
23
- export * from "./types.js";
22
+ export * from "./types/index.js";