wave-agent-sdk 0.16.13 → 0.17.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 (75) hide show
  1. package/builtin/skills/settings/MCP.md +49 -4
  2. package/builtin/skills/settings/PERMISSIONS.md +31 -0
  3. package/dist/managers/aiManager.d.ts +19 -0
  4. package/dist/managers/aiManager.d.ts.map +1 -1
  5. package/dist/managers/aiManager.js +335 -209
  6. package/dist/managers/hookManager.d.ts +22 -0
  7. package/dist/managers/hookManager.d.ts.map +1 -1
  8. package/dist/managers/hookManager.js +95 -17
  9. package/dist/managers/mcpManager.d.ts.map +1 -1
  10. package/dist/managers/mcpManager.js +49 -39
  11. package/dist/managers/messageManager.d.ts +4 -0
  12. package/dist/managers/messageManager.d.ts.map +1 -1
  13. package/dist/managers/messageManager.js +9 -0
  14. package/dist/managers/permissionManager.d.ts +6 -0
  15. package/dist/managers/permissionManager.d.ts.map +1 -1
  16. package/dist/managers/permissionManager.js +14 -0
  17. package/dist/managers/planManager.d.ts.map +1 -1
  18. package/dist/managers/planManager.js +10 -0
  19. package/dist/managers/pluginManager.d.ts.map +1 -1
  20. package/dist/managers/pluginManager.js +28 -3
  21. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  22. package/dist/managers/slashCommandManager.js +14 -0
  23. package/dist/managers/subagentManager.d.ts.map +1 -1
  24. package/dist/managers/subagentManager.js +4 -0
  25. package/dist/prompts/index.d.ts +0 -4
  26. package/dist/prompts/index.d.ts.map +1 -1
  27. package/dist/prompts/index.js +0 -3
  28. package/dist/prompts/planModeReminders.d.ts +6 -0
  29. package/dist/prompts/planModeReminders.d.ts.map +1 -0
  30. package/dist/prompts/planModeReminders.js +112 -0
  31. package/dist/services/aiService.d.ts +1 -0
  32. package/dist/services/aiService.d.ts.map +1 -1
  33. package/dist/services/aiService.js +3 -1
  34. package/dist/services/configurationService.d.ts.map +1 -1
  35. package/dist/services/configurationService.js +5 -3
  36. package/dist/services/initializationService.d.ts.map +1 -1
  37. package/dist/services/initializationService.js +13 -12
  38. package/dist/tools/bashTool.d.ts.map +1 -1
  39. package/dist/tools/bashTool.js +6 -8
  40. package/dist/tools/editTool.d.ts.map +1 -1
  41. package/dist/tools/editTool.js +21 -8
  42. package/dist/tools/exitPlanMode.d.ts.map +1 -1
  43. package/dist/tools/exitPlanMode.js +2 -0
  44. package/dist/types/agent.d.ts +2 -0
  45. package/dist/types/agent.d.ts.map +1 -1
  46. package/dist/types/hooks.d.ts +5 -1
  47. package/dist/types/hooks.d.ts.map +1 -1
  48. package/dist/types/hooks.js +2 -0
  49. package/dist/types/mcp.d.ts +1 -0
  50. package/dist/types/mcp.d.ts.map +1 -1
  51. package/dist/utils/editUtils.d.ts +3 -2
  52. package/dist/utils/editUtils.d.ts.map +1 -1
  53. package/dist/utils/editUtils.js +5 -3
  54. package/package.json +2 -2
  55. package/src/managers/aiManager.ts +416 -253
  56. package/src/managers/hookManager.ts +122 -18
  57. package/src/managers/mcpManager.ts +60 -47
  58. package/src/managers/messageManager.ts +10 -0
  59. package/src/managers/permissionManager.ts +18 -0
  60. package/src/managers/planManager.ts +11 -0
  61. package/src/managers/pluginManager.ts +52 -6
  62. package/src/managers/slashCommandManager.ts +17 -0
  63. package/src/managers/subagentManager.ts +4 -0
  64. package/src/prompts/index.ts +0 -8
  65. package/src/prompts/planModeReminders.ts +138 -0
  66. package/src/services/aiService.ts +4 -1
  67. package/src/services/configurationService.ts +5 -3
  68. package/src/services/initializationService.ts +16 -15
  69. package/src/tools/bashTool.ts +6 -7
  70. package/src/tools/editTool.ts +25 -8
  71. package/src/tools/exitPlanMode.ts +3 -0
  72. package/src/types/agent.ts +2 -0
  73. package/src/types/hooks.ts +9 -1
  74. package/src/types/mcp.ts +1 -0
  75. package/src/utils/editUtils.ts +6 -3
@@ -32,25 +32,70 @@ The `.mcp.json` file contains a list of MCP server configurations.
32
32
 
33
33
  ### Fields for each server:
34
34
 
35
+ - `type`: (Optional) The transport type: `"stdio"`, `"sse"`, or `"http"`. If omitted, Wave infers the type from other fields (URL → `"http"`, command → `"stdio"`). Set explicitly for clarity and to avoid the default behavior.
35
36
  - `command`: (For stdio) The executable to run (e.g., `npx`, `uvx`, `python`, `node`).
36
37
  - `args`: (For stdio) An array of command-line arguments for the executable.
37
38
  - `env`: (Optional) A record of environment variables for the server process.
38
- - `url`: (For SSE) The endpoint URL of a remote MCP server (e.g., `https://example.com/sse`).
39
+ - `url`: (For `sse`/`http`) The endpoint URL of a remote MCP server.
40
+ - `headers`: (For `sse`/`http`) A record of HTTP headers to send with requests (e.g., `{"Authorization": "Bearer token"}`).
39
41
 
40
- ## Remote MCP Servers (SSE)
42
+ ## Transport Types
41
43
 
42
- Wave also supports connecting to remote MCP servers via SSE (Server-Sent Events).
44
+ Wave supports three MCP transport types. When `type` is not specified, Wave uses the following defaults:
45
+ - If `url` is provided → defaults to `"http"` (Streamable HTTP)
46
+ - If `command` is provided → defaults to `"stdio"`
47
+
48
+ ### stdio
49
+
50
+ The server is launched as a local subprocess. Use for locally installed MCP servers.
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "sqlite": {
56
+ "type": "stdio",
57
+ "command": "uvx",
58
+ "args": ["mcp-server-sqlite", "--db-path", "/path/to/db"]
59
+ }
60
+ }
61
+ }
62
+ ```
63
+
64
+ ### http (Streamable HTTP)
65
+
66
+ The recommended transport for remote servers. Uses the MCP Streamable HTTP protocol.
43
67
 
44
68
  ```json
45
69
  {
46
70
  "mcpServers": {
47
- "remote-server": {
71
+ "remote-api": {
72
+ "type": "http",
73
+ "url": "https://mcp-server.example.com/mcp",
74
+ "headers": {
75
+ "Authorization": "Bearer your-token"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### sse (Server-Sent Events)
83
+
84
+ Legacy transport for remote servers that only support SSE. Use `"http"` for new servers unless the server requires SSE.
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "legacy-server": {
90
+ "type": "sse",
48
91
  "url": "https://mcp-server.example.com/sse"
49
92
  }
50
93
  }
51
94
  }
52
95
  ```
53
96
 
97
+ > **Note**: When `type` is not specified, URL-based servers default to `"http"` with no SSE fallback. If you need SSE, set `type: "sse"` explicitly.
98
+
54
99
  ## Using MCP Tools
55
100
 
56
101
  Once configured, Wave will automatically connect to the MCP servers when it starts. Tools provided by these servers will be available to the agent with a prefix:
@@ -50,6 +50,37 @@ When a tool is called, Wave checks:
50
50
  2. If the operation matches an `allow` rule, it is permitted.
51
51
  3. If no rules match, the behavior depends on the `permissionMode`.
52
52
 
53
+ ### Rule Syntax
54
+
55
+ Rules use the format `ToolName(pattern)`. The wildcard `*` has different semantics depending on the tool type:
56
+
57
+ **Bash rules** — `*` matches everything including `/` (regex-style):
58
+
59
+ ```json
60
+ { "allow": ["Bash(git status*)", "Bash(npm run *)"] }
61
+ ```
62
+
63
+ - `Bash(git status*)` matches `git status`, `git status -s`, `git status --short`
64
+ - `Bash(npm run *)` matches `npm run build`, `npm run test:unit`
65
+ - `*` → `.*` regex conversion, so `Bash(node */scripts/*.mjs*)` matches `node plugins/code2cwspec/scripts/check-manifest.mjs`
66
+
67
+ **File tool rules** (`Read`, `Write`, `Edit`) — `*` does NOT cross `/` (glob-style, use `**` for directories):
68
+
69
+ ```json
70
+ { "allow": ["Read(**/*.env)", "Write(src/**/*.ts)"] }
71
+ ```
72
+
73
+ - `Read(*.env)` matches `local.env` but NOT `config/local.env`
74
+ - `Read(**/*.env)` matches `local.env`, `config/local.env`, `a/b/c.env`
75
+ - Uses `minimatch` glob semantics
76
+
77
+ | Tool | `*` matches `/`? | Semantics | Example |
78
+ | :--- | :--- | :--- | :--- |
79
+ | `Bash(...)` | Yes | Regex `.*` | `Bash(npm *)` → any npm command |
80
+ | `Read(...)` | No | Glob (use `**`) | `Read(**/*.env)` → any depth `.env` |
81
+ | `Write(...)` | No | Glob (use `**`) | `Write(src/**/*.ts)` → any `.ts` in src |
82
+ | `Edit(...)` | No | Glob (use `**`) | `Edit(**/*.json)` → any `.json` |
83
+
53
84
  ## Managing Permissions via CLI
54
85
 
55
86
  You can also manage permissions directly through the Wave interface:
@@ -60,10 +60,29 @@ export declare class AIManager {
60
60
  * Get filtered tool configuration based on tools list
61
61
  */
62
62
  private getFilteredToolsConfig;
63
+ /**
64
+ * Build plan mode system-reminder messages to inject into the API message stream.
65
+ * These are transient messages not stored in the message history.
66
+ * This preserves prompt caching by keeping the system prompt constant.
67
+ */
68
+ private buildPlanModeMessages;
63
69
  setIsLoading(isLoading: boolean): void;
64
70
  abortAIMessage(): void;
65
71
  private generateCompactParams;
66
72
  private handleTokenUsageAndCompaction;
73
+ /**
74
+ * Manually compact the conversation history.
75
+ * Called by /compact slash command or auto-compaction trigger.
76
+ */
77
+ compactConversation(options?: {
78
+ customInstructions?: string;
79
+ abortSignal?: AbortSignal;
80
+ }): Promise<void>;
81
+ /**
82
+ * Build post-compact context restoration content.
83
+ * Restores file reads, working directory, plan mode, skills, and background tasks.
84
+ */
85
+ private buildPostCompactContext;
67
86
  getIsCompacting(): boolean;
68
87
  setIsCompacting(isCompacting: boolean): void;
69
88
  private get subagentManager();
@@ -1 +1 @@
1
- {"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"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"}