wave-agent-sdk 1.1.5 → 1.3.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 (210) hide show
  1. package/dist/agent.d.ts +128 -28
  2. package/dist/agent.js +201 -49
  3. package/dist/builtin/index.js +2 -0
  4. package/dist/builtin/plugins.js +11 -20
  5. package/dist/builtin/skills/settings.js +7 -20
  6. package/dist/builtin/skills/wave-daemon.d.ts +1 -0
  7. package/dist/builtin/skills/wave-daemon.js +194 -0
  8. package/dist/constants/images.d.ts +26 -0
  9. package/dist/constants/images.js +26 -0
  10. package/dist/constants/index.d.ts +16 -0
  11. package/dist/constants/index.js +16 -0
  12. package/dist/constants/memory.d.ts +26 -0
  13. package/dist/constants/memory.js +34 -0
  14. package/dist/constants/messages.d.ts +11 -0
  15. package/dist/constants/messages.js +11 -0
  16. package/dist/constants/plugins.d.ts +8 -0
  17. package/dist/constants/plugins.js +8 -0
  18. package/dist/constants/tools.d.ts +1 -0
  19. package/dist/constants/tools.js +1 -0
  20. package/dist/core/plugin.d.ts +54 -10
  21. package/dist/core/plugin.js +137 -23
  22. package/dist/core/session.d.ts +1 -1
  23. package/dist/core/session.js +1 -1
  24. package/dist/exec/catalog.d.ts +140 -0
  25. package/dist/exec/catalog.js +470 -0
  26. package/dist/exec/catalogAnnouncement.d.ts +89 -0
  27. package/dist/exec/catalogAnnouncement.js +293 -0
  28. package/dist/exec/constants.d.ts +51 -0
  29. package/dist/exec/constants.js +51 -0
  30. package/dist/exec/execRuntime.d.ts +55 -0
  31. package/dist/exec/execRuntime.js +217 -0
  32. package/dist/exec/workerSource.d.ts +28 -0
  33. package/dist/exec/workerSource.js +299 -0
  34. package/dist/host/index.d.ts +23 -0
  35. package/dist/host/index.js +23 -0
  36. package/dist/index.d.ts +7 -1
  37. package/dist/index.js +8 -1
  38. package/dist/managers/MemoryRuleManager.d.ts +6 -0
  39. package/dist/managers/MemoryRuleManager.js +12 -0
  40. package/dist/managers/aiManager.d.ts +35 -25
  41. package/dist/managers/aiManager.js +204 -202
  42. package/dist/managers/backgroundTaskManager.js +14 -0
  43. package/dist/managers/bashModeManager.d.ts +33 -0
  44. package/dist/managers/bashModeManager.js +110 -0
  45. package/dist/managers/hookManager.d.ts +18 -0
  46. package/dist/managers/hookManager.js +37 -3
  47. package/dist/managers/liveConfigManager.d.ts +33 -0
  48. package/dist/managers/liveConfigManager.js +106 -11
  49. package/dist/managers/lspManager.d.ts +9 -0
  50. package/dist/managers/lspManager.js +47 -18
  51. package/dist/managers/mcpManager.d.ts +68 -10
  52. package/dist/managers/mcpManager.js +265 -15
  53. package/dist/managers/messageManager.d.ts +60 -18
  54. package/dist/managers/messageManager.js +170 -81
  55. package/dist/managers/permissionManager.d.ts +69 -0
  56. package/dist/managers/permissionManager.js +221 -78
  57. package/dist/managers/planManager.d.ts +9 -0
  58. package/dist/managers/planManager.js +19 -1
  59. package/dist/managers/pluginManager.d.ts +46 -2
  60. package/dist/managers/pluginManager.js +117 -11
  61. package/dist/managers/pluginScopeManager.d.ts +15 -2
  62. package/dist/managers/pluginScopeManager.js +20 -1
  63. package/dist/managers/skillManager.d.ts +50 -0
  64. package/dist/managers/skillManager.js +166 -12
  65. package/dist/managers/slashCommandManager.d.ts +10 -0
  66. package/dist/managers/slashCommandManager.js +44 -31
  67. package/dist/managers/subagentManager.d.ts +15 -0
  68. package/dist/managers/subagentManager.js +81 -9
  69. package/dist/managers/toolManager.d.ts +29 -3
  70. package/dist/managers/toolManager.js +87 -13
  71. package/dist/managers/workflowManager.js +6 -0
  72. package/dist/prompts/autoMemory.d.ts +9 -0
  73. package/dist/prompts/autoMemory.js +30 -31
  74. package/dist/prompts/autoMemoryExtraction.d.ts +4 -0
  75. package/dist/prompts/autoMemoryExtraction.js +8 -111
  76. package/dist/prompts/index.d.ts +0 -1
  77. package/dist/prompts/index.js +0 -4
  78. package/dist/prompts/memoryTypes.d.ts +63 -0
  79. package/dist/prompts/memoryTypes.js +191 -0
  80. package/dist/services/GitService.d.ts +7 -0
  81. package/dist/services/GitService.js +23 -0
  82. package/dist/services/MarketplaceService.d.ts +101 -17
  83. package/dist/services/MarketplaceService.js +323 -102
  84. package/dist/services/artifactContent.d.ts +84 -0
  85. package/dist/services/artifactContent.js +204 -0
  86. package/dist/services/artifactSession.d.ts +6 -0
  87. package/dist/services/artifactSession.js +17 -0
  88. package/dist/services/autoMemoryService.js +5 -13
  89. package/dist/services/configurationService.d.ts +92 -9
  90. package/dist/services/configurationService.js +246 -64
  91. package/dist/services/contentSummarizer.d.ts +15 -0
  92. package/dist/services/contentSummarizer.js +45 -0
  93. package/dist/services/execAvailability.d.ts +9 -0
  94. package/dist/services/execAvailability.js +32 -0
  95. package/dist/services/fileWatcher.js +61 -6
  96. package/dist/services/initializationService.js +21 -17
  97. package/dist/services/interactionService.d.ts +9 -1
  98. package/dist/services/interactionService.js +28 -8
  99. package/dist/services/jsonlHandler.d.ts +98 -0
  100. package/dist/services/jsonlHandler.js +250 -12
  101. package/dist/services/memory.d.ts +17 -1
  102. package/dist/services/memory.js +44 -7
  103. package/dist/services/officialMarketplaceMirror.d.ts +85 -0
  104. package/dist/services/officialMarketplaceMirror.js +290 -0
  105. package/dist/services/pluginLoader.d.ts +12 -4
  106. package/dist/services/pluginLoader.js +38 -7
  107. package/dist/services/remoteSettingsService.js +20 -6
  108. package/dist/services/session.d.ts +74 -0
  109. package/dist/services/session.js +174 -16
  110. package/dist/services/sessionEntries.d.ts +2 -0
  111. package/dist/services/sessionEntries.js +20 -0
  112. package/dist/services/worktreeHooks.js +6 -1
  113. package/dist/stdio/index.d.ts +12 -0
  114. package/dist/stdio/index.js +12 -0
  115. package/dist/stdio/notificationRouter.d.ts +38 -0
  116. package/dist/stdio/notificationRouter.js +97 -0
  117. package/dist/stdio/rpcClient.d.ts +18 -0
  118. package/dist/stdio/rpcClient.js +10 -0
  119. package/dist/stdio/stdioAgent.d.ts +229 -0
  120. package/dist/stdio/stdioAgent.js +360 -0
  121. package/dist/tools/artifactTool.js +406 -273
  122. package/dist/tools/bashTool.js +10 -6
  123. package/dist/tools/editTool.js +6 -3
  124. package/dist/tools/execTool.d.ts +2 -0
  125. package/dist/tools/execTool.js +165 -0
  126. package/dist/tools/exitPlanMode.js +10 -2
  127. package/dist/tools/grepTool.js +7 -1
  128. package/dist/tools/readTool.js +30 -2
  129. package/dist/tools/types.d.ts +34 -8
  130. package/dist/tools/webFetchTool.js +15 -166
  131. package/dist/tools/workflowTool.js +40 -8
  132. package/dist/tools/writeTool.js +6 -3
  133. package/dist/types/agent.d.ts +24 -1
  134. package/dist/types/commands.d.ts +7 -0
  135. package/dist/types/configuration.d.ts +45 -2
  136. package/dist/types/hooks.d.ts +1 -0
  137. package/dist/types/hooks.js +19 -0
  138. package/dist/types/marketplace.d.ts +40 -2
  139. package/dist/types/mcp.d.ts +42 -0
  140. package/dist/types/messaging.d.ts +1 -8
  141. package/dist/types/permissions.d.ts +22 -0
  142. package/dist/types/permissions.js +17 -0
  143. package/dist/types/plugins.d.ts +26 -2
  144. package/dist/types/skills.d.ts +26 -0
  145. package/dist/utils/bashParser.d.ts +17 -0
  146. package/dist/utils/bashParser.js +72 -0
  147. package/dist/utils/bashStructure/bashLexer.d.ts +96 -0
  148. package/dist/utils/bashStructure/bashLexer.js +676 -0
  149. package/dist/utils/bashStructure/bashParser.d.ts +144 -0
  150. package/dist/utils/bashStructure/bashParser.js +606 -0
  151. package/dist/utils/bashStructure/bashSemantics.d.ts +70 -0
  152. package/dist/utils/bashStructure/bashSemantics.js +477 -0
  153. package/dist/utils/bashStructure/index.d.ts +26 -0
  154. package/dist/utils/bashStructure/index.js +27 -0
  155. package/dist/utils/bashStructure/types.d.ts +62 -0
  156. package/dist/utils/bashStructure/types.js +47 -0
  157. package/dist/utils/constants.d.ts +10 -0
  158. package/dist/utils/constants.js +10 -0
  159. package/dist/utils/containerSetup.js +48 -6
  160. package/dist/utils/convertMessagesForAPI.d.ts +7 -1
  161. package/dist/utils/convertMessagesForAPI.js +64 -14
  162. package/dist/utils/fileChangeReminder.d.ts +20 -0
  163. package/dist/utils/fileChangeReminder.js +153 -0
  164. package/dist/utils/fileSearch.js +4 -3
  165. package/dist/utils/fileUtils.d.ts +44 -0
  166. package/dist/utils/fileUtils.js +118 -0
  167. package/dist/utils/frontmatterYaml.d.ts +33 -0
  168. package/dist/utils/frontmatterYaml.js +192 -0
  169. package/dist/utils/imageBudget.d.ts +85 -0
  170. package/dist/utils/imageBudget.js +109 -0
  171. package/dist/utils/imageDimensions.d.ts +83 -0
  172. package/dist/utils/imageDimensions.js +232 -0
  173. package/dist/utils/imageProcessor.d.ts +66 -0
  174. package/dist/utils/imageProcessor.js +84 -0
  175. package/dist/utils/imageRewrite.d.ts +29 -0
  176. package/dist/utils/imageRewrite.js +251 -0
  177. package/dist/utils/markdownParser.d.ts +5 -1
  178. package/dist/utils/markdownParser.js +9 -51
  179. package/dist/utils/mcpInstructions.d.ts +61 -0
  180. package/dist/utils/mcpInstructions.js +126 -0
  181. package/dist/utils/mcpUtils.d.ts +7 -0
  182. package/dist/utils/mcpUtils.js +11 -2
  183. package/dist/utils/memoryAge.d.ts +32 -0
  184. package/dist/utils/memoryAge.js +47 -0
  185. package/dist/utils/memoryEntrypoint.d.ts +20 -0
  186. package/dist/utils/memoryEntrypoint.js +49 -0
  187. package/dist/utils/memoryIndex.d.ts +30 -0
  188. package/dist/utils/memoryIndex.js +76 -0
  189. package/dist/utils/messageOperations.d.ts +6 -20
  190. package/dist/utils/messageOperations.js +40 -91
  191. package/dist/utils/nestedMemory.d.ts +22 -0
  192. package/dist/utils/nestedMemory.js +61 -0
  193. package/dist/utils/npmTarball.d.ts +19 -0
  194. package/dist/utils/npmTarball.js +92 -0
  195. package/dist/utils/pluginSource.d.ts +37 -0
  196. package/dist/utils/pluginSource.js +73 -0
  197. package/dist/utils/ripgrep.d.ts +18 -4
  198. package/dist/utils/ripgrep.js +56 -4
  199. package/dist/utils/runtimeDeps.d.ts +35 -0
  200. package/dist/utils/runtimeDeps.js +426 -0
  201. package/dist/utils/skillParser.js +22 -52
  202. package/dist/utils/subagentParser.js +48 -45
  203. package/dist/utils/tokenCalculation.js +0 -8
  204. package/dist/utils/userSettings.d.ts +90 -0
  205. package/dist/utils/userSettings.js +291 -0
  206. package/dist/utils/worktreeUtils.d.ts +2 -1
  207. package/dist/utils/worktreeUtils.js +64 -34
  208. package/package.json +12 -4
  209. package/dist/managers/bangManager.d.ts +0 -26
  210. package/dist/managers/bangManager.js +0 -78
@@ -1,4 +1,4 @@
1
- import { KnownMarketplace, KnownMarketplacesRegistry, InstalledPlugin, InstalledPluginsRegistry, MarketplaceManifest, MarketplaceSource } from "../types/marketplace.js";
1
+ import { KnownMarketplace, KnownMarketplacesRegistry, InstalledPlugin, InstalledPluginsRegistry, MarketplaceManifest, MarketplaceSource, PluginInstallLocation } from "../types/marketplace.js";
2
2
  import { ConfigurationService } from "./configurationService.js";
3
3
  import type { Scope } from "../types/configuration.js";
4
4
  /**
@@ -11,7 +11,18 @@ import type { Scope } from "../types/configuration.js";
11
11
  * known_marketplaces.json is kept as a cache for installLocation/lastUpdated metadata.
12
12
  */
13
13
  export declare class MarketplaceService {
14
- private static isLockedInProcess;
14
+ /**
15
+ * 已持有市场操作锁的调用链标记(重入判据)。
16
+ *
17
+ * 用 AsyncLocalStorage 而不是进程内布尔值:锁内发起的嵌套调用(如
18
+ * refreshMarketplaces → updateMarketplace → installPlugin)必须跳过再次加锁,
19
+ * 否则会自锁;但**另一条并发调用链**必须老老实实排队。布尔值无法区分这两者
20
+ * ——第二个并发调用会以为「已在锁内」而跳过锁直接执行,于是两个操作并行改同一
21
+ * 个市场检出(并发两次 `git pull` 同一检出必然失败,spec 插件市场 场景 14)。
22
+ */
23
+ private static readonly lockChain;
24
+ /** In-flight [refreshMarketplaces] call (single-flight, spec 插件市场 场景 13). */
25
+ private refreshInFlight;
15
26
  private pluginsDir;
16
27
  private knownMarketplacesPath;
17
28
  private installedPluginsPath;
@@ -49,7 +60,7 @@ export declare class MarketplaceService {
49
60
  private isStaleLock;
50
61
  /**
51
62
  * Acquires a file-based lock (with PID tracking for stale lock detection) and executes the provided function.
52
- * Supports re-entrancy within the same process.
63
+ * Supports re-entrancy within the same call chain (see [lockChain]).
53
64
  */
54
65
  private withLock;
55
66
  /**
@@ -78,6 +89,21 @@ export declare class MarketplaceService {
78
89
  * Saves the installed plugins registry
79
90
  */
80
91
  saveInstalledPlugins(registry: InstalledPluginsRegistry): Promise<void>;
92
+ /**
93
+ * Whether an install record belongs to the given install location.
94
+ *
95
+ * Records written before scopes were tracked carry no `scope`; they stand for
96
+ * "installed once on this machine" and match any scope, so uninstalling them
97
+ * keeps working (they are that plugin's only record). They still match by
98
+ * project path, so records of two different projects stay distinguishable.
99
+ */
100
+ private matchesInstallLocation;
101
+ /**
102
+ * The install location a record is keyed by. Scope-less legacy records are
103
+ * treated as user-scope when they have to be re-created (e.g. by an update).
104
+ */
105
+ private locationOf;
106
+ private describeInstallLocations;
81
107
  /**
82
108
  * Loads a marketplace manifest from a local path
83
109
  */
@@ -94,6 +120,18 @@ export declare class MarketplaceService {
94
120
  * Finds which scope declared a marketplace (user, project, local, or builtin)
95
121
  */
96
122
  getMarketplaceDeclaringSource(name: string): Scope | "builtin" | null;
123
+ /**
124
+ * 已注册的市场(作用域配置 + 缓存注册表合并去重),用于添加前的判重
125
+ */
126
+ private listRegisteredMarketplaces;
127
+ /**
128
+ * 添加市场前判重(spec ecosystem/plugin「设置页插件市场」场景 16):来源重复或
129
+ * 清单声明的名称与已有市场同名时不允许添加。只传 source 时仅判来源(用于克隆
130
+ * 之前,避免为一个已存在的来源白克隆一次)。
131
+ */
132
+ private assertMarketplaceAddable;
133
+ /** 两个市场来源是否指向同一处(同类型比 url/repo/path,忽略 ref) */
134
+ private static isSameMarketplaceSource;
97
135
  /**
98
136
  * Adds a new marketplace (local directory, GitHub repo, or Git URL)
99
137
  */
@@ -114,28 +152,74 @@ export declare class MarketplaceService {
114
152
  private uninstallPluginsByMarketplace;
115
153
  /**
116
154
  * Updates a specific marketplace or all marketplaces
155
+ *
156
+ * `refreshCheckout` (default true) pulls the checkout from its upstream; pass
157
+ * false to upgrade plugins against the current checkout only — the interactive
158
+ * "批量更新插件" path does that, because opening the plugin-marketplace surface
159
+ * already refreshed the checkout (spec 插件市场 A-013).
160
+ *
161
+ * Returns the number of installed plugins whose version actually changed
162
+ * during this run (0 = everything was already up to date) — the GUI hosts
163
+ * use it to tell "已更新 N 个插件" apart from "已是最新" (spec 插件市场 场景 13).
117
164
  */
118
165
  updateMarketplace(name?: string, options?: {
119
166
  updatePlugins?: boolean;
120
- }): Promise<void>;
121
- /**
122
- * Automatically updates all marketplaces that have auto-update enabled
123
- */
124
- autoUpdateAll(): Promise<void>;
125
- /**
126
- * Toggles auto-update for a marketplace
127
- */
128
- toggleAutoUpdate(name: string, enabled: boolean): Promise<void>;
167
+ refreshCheckout?: boolean;
168
+ }): Promise<number>;
169
+ /**
170
+ * 交互界面的「批量更新插件」:按当前清单把该市场内所有已安装且有新版本的插件
171
+ * 升级到最新,**不拉取检出**——清单的新鲜度由打开插件市场界面时的那次刷新保证
172
+ * (spec 插件市场 A-013/场景 14)。检出尚未据此刷新的场景(无界面可依赖的非交互
173
+ * 命令)走 [updateMarketplace] 的默认行为。
174
+ */
175
+ updateMarketplacePlugins(name?: string): Promise<number>;
176
+ /**
177
+ * Refreshes the local checkout of every registered marketplace.
178
+ *
179
+ * Callers are the plugin-marketplace surfaces (GUI settings view / CLI plugin
180
+ * manager), refreshed when the user opens them — the agent-startup path no
181
+ * longer refreshes anything (spec 插件市场 A-013 场景 5).
182
+ *
183
+ * This is a fixed behavior with no opt-in/opt-out: `autoUpdate` no longer
184
+ * exists, so all marketplaces are refreshed alike (A-014). Refreshing only
185
+ * updates the checkout — installed plugins are never reinstalled here, so a
186
+ * newer plugin version surfaces as an explicit "更新" (per plugin) /
187
+ * "批量更新插件" (batch) action instead of being applied behind the user's
188
+ * back.
189
+ *
190
+ * Single-flight: a call landing while a refresh is running reuses it instead
191
+ * of pulling every checkout twice (spec 场景 13).
192
+ */
193
+ refreshMarketplaces(): Promise<void>;
129
194
  /**
130
195
  * Installs a plugin from a marketplace
196
+ *
197
+ * @param location 该次安装记账的位置(spec plugin A-015)。缺省只在内部调用
198
+ * (宿主加载时补装)出现,此时写入一条不带作用域的历史形态记录。
131
199
  */
132
- installPlugin(pluginAtMarketplace: string, projectPath?: string): Promise<InstalledPlugin>;
200
+ installPlugin(pluginAtMarketplace: string, location?: PluginInstallLocation): Promise<InstalledPlugin>;
133
201
  /**
134
202
  * Uninstalls a plugin
135
- */
136
- uninstallPlugin(pluginAtMarketplace: string, projectPath?: string): Promise<void>;
137
- /**
138
- * Updates a plugin (uninstall followed by install)
203
+ *
204
+ * With a [location], only that scope's install record is removed — other
205
+ * scopes (including other projects' project/local records) keep theirs, and
206
+ * the shared cache directory is deleted only once no record references it
207
+ * (spec plugin A-015). Without one, every record of the plugin is removed
208
+ * (used by [updatePlugin] and the marketplace-level cleanup).
209
+ */
210
+ uninstallPlugin(pluginAtMarketplace: string, location?: PluginInstallLocation): Promise<void>;
211
+ /**
212
+ * Moves a plugin's install record to another location(「更换安装作用域」):
213
+ * the record currently at [from] (or the plugin's only record when [from] is
214
+ * omitted or unknown) is rewritten to [to], so that uninstalling the plugin
215
+ * at its new scope still finds it (spec plugin A-015). A duplicate record
216
+ * already at [to] wins and the moved one is dropped.
217
+ */
218
+ relocatePlugin(pluginAtMarketplace: string, from: PluginInstallLocation | undefined, to: PluginInstallLocation): Promise<void>;
219
+ /**
220
+ * Updates a plugin (uninstall followed by install). Every install record of
221
+ * the plugin is re-created at its original location, so the install scopes
222
+ * stay unchanged (spec plugin「设置页插件市场」场景 12 / A-015).
139
223
  */
140
224
  updatePlugin(pluginAtMarketplace: string): Promise<InstalledPlugin>;
141
225
  }