sema-core 1.0.11 → 1.0.13

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 (325) hide show
  1. package/README.md +6 -11
  2. package/dist/core/Conversation.d.ts +6 -1
  3. package/dist/core/Conversation.d.ts.map +1 -1
  4. package/dist/core/Conversation.js +72 -28
  5. package/dist/core/Conversation.js.map +1 -1
  6. package/dist/core/RunTools.d.ts.map +1 -1
  7. package/dist/core/RunTools.js +1 -1
  8. package/dist/core/RunTools.js.map +1 -1
  9. package/dist/core/SemaCore.d.ts +16 -0
  10. package/dist/core/SemaCore.d.ts.map +1 -1
  11. package/dist/core/SemaCore.js +30 -3
  12. package/dist/core/SemaCore.js.map +1 -1
  13. package/dist/core/SemaEngine.d.ts +2 -18
  14. package/dist/core/SemaEngine.d.ts.map +1 -1
  15. package/dist/core/SemaEngine.js +101 -131
  16. package/dist/core/SemaEngine.js.map +1 -1
  17. package/dist/events/EventSystem.d.ts.map +1 -1
  18. package/dist/events/EventSystem.js +6 -2
  19. package/dist/events/EventSystem.js.map +1 -1
  20. package/dist/events/types.d.ts +60 -13
  21. package/dist/events/types.d.ts.map +1 -1
  22. package/dist/events/types.js +0 -1
  23. package/dist/events/types.js.map +1 -1
  24. package/dist/manager/ConfManager.d.ts.map +1 -1
  25. package/dist/manager/ConfManager.js +3 -1
  26. package/dist/manager/ConfManager.js.map +1 -1
  27. package/dist/manager/CronManager.d.ts +52 -0
  28. package/dist/manager/CronManager.d.ts.map +1 -0
  29. package/dist/manager/CronManager.js +426 -0
  30. package/dist/manager/CronManager.js.map +1 -0
  31. package/dist/manager/PermissionManager.d.ts +1 -1
  32. package/dist/manager/PermissionManager.d.ts.map +1 -1
  33. package/dist/manager/PermissionManager.js +63 -12
  34. package/dist/manager/PermissionManager.js.map +1 -1
  35. package/dist/manager/StateManager.d.ts +79 -11
  36. package/dist/manager/StateManager.d.ts.map +1 -1
  37. package/dist/manager/StateManager.js +287 -4
  38. package/dist/manager/StateManager.js.map +1 -1
  39. package/dist/manager/TaskManager.d.ts +106 -0
  40. package/dist/manager/TaskManager.d.ts.map +1 -0
  41. package/dist/manager/TaskManager.js +664 -0
  42. package/dist/manager/TaskManager.js.map +1 -0
  43. package/dist/services/agents/defaultBuiltInAgentsConfs.js +3 -3
  44. package/dist/services/agents/defaultBuiltInAgentsConfs.js.map +1 -1
  45. package/dist/services/agents/systemReminder.d.ts.map +1 -1
  46. package/dist/services/agents/systemReminder.js +8 -118
  47. package/dist/services/agents/systemReminder.js.map +1 -1
  48. package/dist/services/api/adapt/anthropic.js +2 -2
  49. package/dist/services/api/adapt/anthropic.js.map +1 -1
  50. package/dist/services/api/adapt/openai.js +2 -2
  51. package/dist/services/api/adapt/openai.js.map +1 -1
  52. package/dist/services/api/adapt/util.d.ts +1 -1
  53. package/dist/services/api/adapt/util.d.ts.map +1 -1
  54. package/dist/services/api/adapt/util.js +2 -2
  55. package/dist/services/api/adapt/util.js.map +1 -1
  56. package/dist/services/api/cache.d.ts.map +1 -1
  57. package/dist/services/api/cache.js +1 -3
  58. package/dist/services/api/cache.js.map +1 -1
  59. package/dist/services/api/queryLLM.d.ts.map +1 -1
  60. package/dist/services/api/queryLLM.js +5 -0
  61. package/dist/services/api/queryLLM.js.map +1 -1
  62. package/dist/services/commands/runCommand.d.ts.map +1 -1
  63. package/dist/services/commands/runCommand.js +12 -0
  64. package/dist/services/commands/runCommand.js.map +1 -1
  65. package/dist/services/mcp/MCPManager.d.ts.map +1 -1
  66. package/dist/services/mcp/MCPManager.js +6 -1
  67. package/dist/services/mcp/MCPManager.js.map +1 -1
  68. package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
  69. package/dist/services/plugins/pluginsManager.js +8 -1
  70. package/dist/services/plugins/pluginsManager.js.map +1 -1
  71. package/dist/services/rules/rulesManager.d.ts +51 -0
  72. package/dist/services/rules/rulesManager.d.ts.map +1 -0
  73. package/dist/services/rules/rulesManager.js +192 -0
  74. package/dist/services/rules/rulesManager.js.map +1 -0
  75. package/dist/tools/Agent/Agent.d.ts +19 -11
  76. package/dist/tools/Agent/Agent.d.ts.map +1 -1
  77. package/dist/tools/Agent/Agent.js +249 -72
  78. package/dist/tools/Agent/Agent.js.map +1 -1
  79. package/dist/tools/Agent/prompt.d.ts.map +1 -1
  80. package/dist/tools/Agent/prompt.js +7 -9
  81. package/dist/tools/Agent/prompt.js.map +1 -1
  82. package/dist/tools/Bash/Bash.d.ts +21 -11
  83. package/dist/tools/Bash/Bash.d.ts.map +1 -1
  84. package/dist/tools/Bash/Bash.js +74 -17
  85. package/dist/tools/Bash/Bash.js.map +1 -1
  86. package/dist/tools/Bash/prompt.d.ts.map +1 -1
  87. package/dist/tools/Bash/prompt.js +53 -70
  88. package/dist/tools/Bash/prompt.js.map +1 -1
  89. package/dist/tools/Bash/utils.d.ts +5 -1
  90. package/dist/tools/Bash/utils.d.ts.map +1 -1
  91. package/dist/tools/Bash/utils.js +24 -4
  92. package/dist/tools/Bash/utils.js.map +1 -1
  93. package/dist/tools/CronCreate/CronCreate.d.ts +68 -0
  94. package/dist/tools/CronCreate/CronCreate.d.ts.map +1 -0
  95. package/dist/tools/CronCreate/CronCreate.js +75 -0
  96. package/dist/tools/CronCreate/CronCreate.js.map +1 -0
  97. package/dist/tools/CronCreate/prompt.d.ts +3 -0
  98. package/dist/tools/CronCreate/prompt.d.ts.map +1 -0
  99. package/dist/tools/CronCreate/prompt.js +41 -0
  100. package/dist/tools/CronCreate/prompt.js.map +1 -0
  101. package/dist/tools/CronDelete/CronDelete.d.ts +45 -0
  102. package/dist/tools/CronDelete/CronDelete.d.ts.map +1 -0
  103. package/dist/tools/CronDelete/CronDelete.js +51 -0
  104. package/dist/tools/CronDelete/CronDelete.js.map +1 -0
  105. package/dist/tools/CronDelete/prompt.d.ts +3 -0
  106. package/dist/tools/CronDelete/prompt.d.ts.map +1 -0
  107. package/dist/tools/CronDelete/prompt.js +6 -0
  108. package/dist/tools/CronDelete/prompt.js.map +1 -0
  109. package/dist/tools/CronList/CronList.d.ts +33 -0
  110. package/dist/tools/CronList/CronList.d.ts.map +1 -0
  111. package/dist/tools/CronList/CronList.js +55 -0
  112. package/dist/tools/CronList/CronList.js.map +1 -0
  113. package/dist/tools/CronList/prompt.d.ts +3 -0
  114. package/dist/tools/CronList/prompt.d.ts.map +1 -0
  115. package/dist/tools/CronList/prompt.js +6 -0
  116. package/dist/tools/CronList/prompt.js.map +1 -0
  117. package/dist/tools/Edit/Edit.d.ts.map +1 -1
  118. package/dist/tools/Edit/Edit.js +7 -3
  119. package/dist/tools/Edit/Edit.js.map +1 -1
  120. package/dist/tools/Edit/utils.d.ts.map +1 -1
  121. package/dist/tools/Edit/utils.js +14 -5
  122. package/dist/tools/Edit/utils.js.map +1 -1
  123. package/dist/tools/Grep/Grep.d.ts +4 -4
  124. package/dist/tools/NotebookEdit/NotebookEdit.js +1 -1
  125. package/dist/tools/NotebookEdit/NotebookEdit.js.map +1 -1
  126. package/dist/tools/Read/Read.d.ts +74 -3
  127. package/dist/tools/Read/Read.d.ts.map +1 -1
  128. package/dist/tools/Read/Read.js +188 -18
  129. package/dist/tools/Read/Read.js.map +1 -1
  130. package/dist/tools/Read/prompt.d.ts +1 -1
  131. package/dist/tools/Read/prompt.d.ts.map +1 -1
  132. package/dist/tools/Read/prompt.js +2 -1
  133. package/dist/tools/Read/prompt.js.map +1 -1
  134. package/dist/tools/Skill/Skill.d.ts +2 -1
  135. package/dist/tools/Skill/Skill.d.ts.map +1 -1
  136. package/dist/tools/Skill/Skill.js +3 -2
  137. package/dist/tools/Skill/Skill.js.map +1 -1
  138. package/dist/tools/TaskCreate/TaskCreate.d.ts +54 -0
  139. package/dist/tools/TaskCreate/TaskCreate.d.ts.map +1 -0
  140. package/dist/tools/TaskCreate/TaskCreate.js +51 -0
  141. package/dist/tools/TaskCreate/TaskCreate.js.map +1 -0
  142. package/dist/tools/TaskCreate/prompt.d.ts +3 -0
  143. package/dist/tools/TaskCreate/prompt.d.ts.map +1 -0
  144. package/dist/tools/TaskCreate/prompt.js +45 -0
  145. package/dist/tools/TaskCreate/prompt.js.map +1 -0
  146. package/dist/tools/TaskGet/TaskGet.d.ts +34 -0
  147. package/dist/tools/TaskGet/TaskGet.d.ts.map +1 -0
  148. package/dist/tools/TaskGet/TaskGet.js +57 -0
  149. package/dist/tools/TaskGet/TaskGet.js.map +1 -0
  150. package/dist/tools/TaskGet/prompt.d.ts +3 -0
  151. package/dist/tools/TaskGet/prompt.d.ts.map +1 -0
  152. package/dist/tools/TaskGet/prompt.js +26 -0
  153. package/dist/tools/TaskGet/prompt.js.map +1 -0
  154. package/dist/tools/TaskList/TaskList.d.ts +27 -0
  155. package/dist/tools/TaskList/TaskList.d.ts.map +1 -0
  156. package/dist/tools/TaskList/TaskList.js +56 -0
  157. package/dist/tools/TaskList/TaskList.js.map +1 -0
  158. package/dist/tools/TaskList/prompt.d.ts +3 -0
  159. package/dist/tools/TaskList/prompt.d.ts.map +1 -0
  160. package/dist/tools/TaskList/prompt.js +25 -0
  161. package/dist/tools/TaskList/prompt.js.map +1 -0
  162. package/dist/tools/TaskOutput/TaskOutput.d.ts +58 -0
  163. package/dist/tools/TaskOutput/TaskOutput.d.ts.map +1 -0
  164. package/dist/tools/TaskOutput/TaskOutput.js +95 -0
  165. package/dist/tools/TaskOutput/TaskOutput.js.map +1 -0
  166. package/dist/tools/TaskStop/TaskStop.d.ts +50 -0
  167. package/dist/tools/TaskStop/TaskStop.d.ts.map +1 -0
  168. package/dist/tools/TaskStop/TaskStop.js +69 -0
  169. package/dist/tools/TaskStop/TaskStop.js.map +1 -0
  170. package/dist/tools/TaskUpdate/TaskUpdate.d.ts +88 -0
  171. package/dist/tools/TaskUpdate/TaskUpdate.d.ts.map +1 -0
  172. package/dist/tools/TaskUpdate/TaskUpdate.js +115 -0
  173. package/dist/tools/TaskUpdate/TaskUpdate.js.map +1 -0
  174. package/dist/tools/TaskUpdate/prompt.d.ts +3 -0
  175. package/dist/tools/TaskUpdate/prompt.d.ts.map +1 -0
  176. package/dist/tools/TaskUpdate/prompt.js +80 -0
  177. package/dist/tools/TaskUpdate/prompt.js.map +1 -0
  178. package/dist/tools/WebFetch/WebFetch.d.ts +62 -0
  179. package/dist/tools/WebFetch/WebFetch.d.ts.map +1 -0
  180. package/dist/tools/WebFetch/WebFetch.js +143 -0
  181. package/dist/tools/WebFetch/WebFetch.js.map +1 -0
  182. package/dist/tools/WebFetch/prompt.d.ts +4 -0
  183. package/dist/tools/WebFetch/prompt.d.ts.map +1 -0
  184. package/dist/tools/WebFetch/prompt.js +38 -0
  185. package/dist/tools/WebFetch/prompt.js.map +1 -0
  186. package/dist/tools/WebFetch/utils.d.ts +20 -0
  187. package/dist/tools/WebFetch/utils.d.ts.map +1 -0
  188. package/dist/tools/WebFetch/utils.js +223 -0
  189. package/dist/tools/WebFetch/utils.js.map +1 -0
  190. package/dist/tools/Write/Write.js +1 -1
  191. package/dist/tools/Write/Write.js.map +1 -1
  192. package/dist/tools/base/Tool.d.ts +1 -0
  193. package/dist/tools/base/Tool.d.ts.map +1 -1
  194. package/dist/tools/base/tools.d.ts +4 -2
  195. package/dist/tools/base/tools.d.ts.map +1 -1
  196. package/dist/tools/base/tools.js +61 -14
  197. package/dist/tools/base/tools.js.map +1 -1
  198. package/dist/types/cron.d.ts +21 -0
  199. package/dist/types/cron.d.ts.map +1 -0
  200. package/dist/types/cron.js +6 -0
  201. package/dist/types/cron.js.map +1 -0
  202. package/dist/types/index.d.ts +9 -1
  203. package/dist/types/index.d.ts.map +1 -1
  204. package/dist/types/index.js +4 -2
  205. package/dist/types/index.js.map +1 -1
  206. package/dist/types/rule.d.ts +8 -0
  207. package/dist/types/rule.d.ts.map +1 -0
  208. package/dist/types/rule.js +3 -0
  209. package/dist/types/rule.js.map +1 -0
  210. package/dist/types/task.d.ts +93 -0
  211. package/dist/types/task.d.ts.map +1 -0
  212. package/dist/types/task.js +3 -0
  213. package/dist/types/task.js.map +1 -0
  214. package/dist/types/todoTask.d.ts +29 -0
  215. package/dist/types/todoTask.d.ts.map +1 -0
  216. package/dist/types/todoTask.js +6 -0
  217. package/dist/types/todoTask.js.map +1 -0
  218. package/dist/util/assembleTools.d.ts +6 -0
  219. package/dist/util/assembleTools.d.ts.map +1 -0
  220. package/dist/util/assembleTools.js +17 -0
  221. package/dist/util/assembleTools.js.map +1 -0
  222. package/dist/util/btw.d.ts +6 -0
  223. package/dist/util/btw.d.ts.map +1 -0
  224. package/dist/util/btw.js +80 -0
  225. package/dist/util/btw.js.map +1 -0
  226. package/dist/util/compact.d.ts +16 -4
  227. package/dist/util/compact.d.ts.map +1 -1
  228. package/dist/util/compact.js +12 -18
  229. package/dist/util/compact.js.map +1 -1
  230. package/dist/util/cron.d.ts +17 -0
  231. package/dist/util/cron.d.ts.map +1 -0
  232. package/dist/util/cron.js +82 -0
  233. package/dist/util/cron.js.map +1 -0
  234. package/dist/util/file.d.ts +16 -0
  235. package/dist/util/file.d.ts.map +1 -1
  236. package/dist/util/file.js +55 -0
  237. package/dist/util/file.js.map +1 -1
  238. package/dist/util/fileReference.d.ts.map +1 -1
  239. package/dist/util/fileReference.js +10 -1
  240. package/dist/util/fileReference.js.map +1 -1
  241. package/dist/util/format.d.ts +6 -0
  242. package/dist/util/format.d.ts.map +1 -1
  243. package/dist/util/format.js +17 -0
  244. package/dist/util/format.js.map +1 -1
  245. package/dist/util/history.d.ts +4 -1
  246. package/dist/util/history.d.ts.map +1 -1
  247. package/dist/util/history.js +9 -5
  248. package/dist/util/history.js.map +1 -1
  249. package/dist/util/inputQueue.d.ts +19 -0
  250. package/dist/util/inputQueue.d.ts.map +1 -0
  251. package/dist/util/inputQueue.js +30 -0
  252. package/dist/util/inputQueue.js.map +1 -0
  253. package/dist/util/message.d.ts +4 -0
  254. package/dist/util/message.d.ts.map +1 -1
  255. package/dist/util/message.js +27 -0
  256. package/dist/util/message.js.map +1 -1
  257. package/dist/util/pdf.d.ts +83 -0
  258. package/dist/util/pdf.d.ts.map +1 -0
  259. package/dist/util/pdf.js +472 -0
  260. package/dist/util/pdf.js.map +1 -0
  261. package/dist/util/process.d.ts +10 -0
  262. package/dist/util/process.d.ts.map +1 -0
  263. package/dist/util/process.js +88 -0
  264. package/dist/util/process.js.map +1 -0
  265. package/dist/util/savePath.d.ts +0 -11
  266. package/dist/util/savePath.d.ts.map +1 -1
  267. package/dist/util/savePath.js +0 -17
  268. package/dist/util/savePath.js.map +1 -1
  269. package/dist/util/shell.d.ts +10 -1
  270. package/dist/util/shell.d.ts.map +1 -1
  271. package/dist/util/shell.js +89 -34
  272. package/dist/util/shell.js.map +1 -1
  273. package/dist/util/topic.d.ts +7 -0
  274. package/dist/util/topic.d.ts.map +1 -1
  275. package/dist/util/topic.js +40 -0
  276. package/dist/util/topic.js.map +1 -1
  277. package/package.json +2 -1
  278. package/dist/services/command/customCommands.d.ts +0 -1
  279. package/dist/services/command/customCommands.d.ts.map +0 -1
  280. package/dist/services/command/customCommands.js +0 -197
  281. package/dist/services/command/customCommands.js.map +0 -1
  282. package/dist/services/command/runCommand.d.ts +0 -18
  283. package/dist/services/command/runCommand.d.ts.map +0 -1
  284. package/dist/services/command/runCommand.js +0 -147
  285. package/dist/services/command/runCommand.js.map +0 -1
  286. package/dist/services/plugins/customCommands.d.ts +0 -29
  287. package/dist/services/plugins/customCommands.d.ts.map +0 -1
  288. package/dist/services/plugins/customCommands.js +0 -227
  289. package/dist/services/plugins/customCommands.js.map +0 -1
  290. package/dist/services/skill/skillLoader.d.ts +0 -17
  291. package/dist/services/skill/skillLoader.d.ts.map +0 -1
  292. package/dist/services/skill/skillLoader.js +0 -122
  293. package/dist/services/skill/skillLoader.js.map +0 -1
  294. package/dist/services/skill/skillParser.d.ts +0 -15
  295. package/dist/services/skill/skillParser.d.ts.map +0 -1
  296. package/dist/services/skill/skillParser.js +0 -66
  297. package/dist/services/skill/skillParser.js.map +0 -1
  298. package/dist/services/skill/skillRegistry.d.ts +0 -34
  299. package/dist/services/skill/skillRegistry.d.ts.map +0 -1
  300. package/dist/services/skill/skillRegistry.js +0 -98
  301. package/dist/services/skill/skillRegistry.js.map +0 -1
  302. package/dist/services/skill/skillsManager.d.ts +0 -79
  303. package/dist/services/skill/skillsManager.d.ts.map +0 -1
  304. package/dist/services/skill/skillsManager.js +0 -289
  305. package/dist/services/skill/skillsManager.js.map +0 -1
  306. package/dist/tools/Task/Task.d.ts +0 -59
  307. package/dist/tools/Task/Task.d.ts.map +0 -1
  308. package/dist/tools/Task/Task.js +0 -212
  309. package/dist/tools/Task/Task.js.map +0 -1
  310. package/dist/tools/Task/prompt.d.ts +0 -6
  311. package/dist/tools/Task/prompt.d.ts.map +0 -1
  312. package/dist/tools/Task/prompt.js +0 -75
  313. package/dist/tools/Task/prompt.js.map +0 -1
  314. package/dist/util/frontmatter.d.ts +0 -35
  315. package/dist/util/frontmatter.d.ts.map +0 -1
  316. package/dist/util/frontmatter.js +0 -119
  317. package/dist/util/frontmatter.js.map +0 -1
  318. package/dist/util/rules.d.ts +0 -6
  319. package/dist/util/rules.d.ts.map +0 -1
  320. package/dist/util/rules.js +0 -162
  321. package/dist/util/rules.js.map +0 -1
  322. package/dist/util/systemReminder.d.ts +0 -10
  323. package/dist/util/systemReminder.d.ts.map +0 -1
  324. package/dist/util/systemReminder.js +0 -177
  325. package/dist/util/systemReminder.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ export declare const inputSchema: z.ZodObject<{
3
+ task_id: z.ZodString;
4
+ }, "strict", z.ZodTypeAny, {
5
+ task_id: string;
6
+ }, {
7
+ task_id: string;
8
+ }>;
9
+ type Out = {
10
+ taskId: string;
11
+ message: string;
12
+ taskType: string;
13
+ command: string;
14
+ stopped: boolean;
15
+ };
16
+ export declare const TaskStopTool: {
17
+ name: string;
18
+ description(): string;
19
+ isReadOnly(): false;
20
+ inputSchema: z.ZodObject<{
21
+ task_id: z.ZodString;
22
+ }, "strict", z.ZodTypeAny, {
23
+ task_id: string;
24
+ }, {
25
+ task_id: string;
26
+ }>;
27
+ validateInput(): Promise<{
28
+ result: true;
29
+ }>;
30
+ genToolPermission(input: any): {
31
+ title: string;
32
+ content: string;
33
+ };
34
+ genToolResultMessage(output: Out): {
35
+ title: string;
36
+ summary: string;
37
+ content: string;
38
+ };
39
+ getDisplayTitle(input: any): string;
40
+ genResultForAssistant(data: Out): string;
41
+ call({ task_id }: {
42
+ task_id: string;
43
+ }, _agentContext: any): AsyncGenerator<{
44
+ type: "result";
45
+ data: Out;
46
+ resultForAssistant: string | (import("@anthropic-ai/sdk/resources").TextBlockParam | import("@anthropic-ai/sdk/resources").ImageBlockParam)[] | undefined;
47
+ }, void, unknown>;
48
+ };
49
+ export {};
50
+ //# sourceMappingURL=TaskStop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStop.d.ts","sourceRoot":"","sources":["../../../src/tools/TaskStop/TaskStop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;EAEtB,CAAA;AAGF,KAAK,GAAG,GAAG;IACT,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;6BAYE,GAAG;;;;iCAMC,GAAG;;;;;2BAOT,GAAG;gCAGE,GAAG,GAAG,MAAM;sBAMf;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,iBAAiB,GAAG;;;;;CA4BzC,CAAA"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskStopTool = exports.inputSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const TaskManager_1 = require("../../manager/TaskManager");
6
+ exports.inputSchema = zod_1.z.strictObject({
7
+ task_id: zod_1.z.string().describe('The background task ID to stop'),
8
+ });
9
+ exports.TaskStopTool = {
10
+ name: 'TaskStop',
11
+ description() {
12
+ return 'Stop a running background task started by the Bash tool with run_in_background=true.';
13
+ },
14
+ isReadOnly() {
15
+ return false;
16
+ },
17
+ inputSchema: exports.inputSchema,
18
+ async validateInput() {
19
+ return { result: true };
20
+ },
21
+ genToolPermission(input) {
22
+ return {
23
+ title: `TaskStop: ${input?.task_id}`,
24
+ content: `Stop background task ${input?.task_id}`,
25
+ };
26
+ },
27
+ genToolResultMessage(output) {
28
+ return {
29
+ title: output.taskId,
30
+ summary: '',
31
+ content: output.stopped ? `${output.command} · stopped` : output.message,
32
+ };
33
+ },
34
+ getDisplayTitle(input) {
35
+ return `TaskStop: ${input?.task_id}`;
36
+ },
37
+ genResultForAssistant(data) {
38
+ return `<message>${data.message}</message>
39
+ <task_id>${data.taskId}</task_id>
40
+ <task_type>${data.taskType}</task_type>
41
+ <command>${data.command}</command>`;
42
+ },
43
+ async *call({ task_id }, _agentContext) {
44
+ const manager = (0, TaskManager_1.getTaskManager)();
45
+ const record = manager.getTask(task_id);
46
+ if (!record) {
47
+ const data = { taskId: task_id, message: `Task ${task_id} not found.`, taskType: '', command: '', stopped: false };
48
+ yield { type: 'result', data, resultForAssistant: this.genResultForAssistant(data) };
49
+ return;
50
+ }
51
+ if (record.status !== 'running') {
52
+ const data = { taskId: task_id, message: `Task is not running (status: ${record.status}).`, taskType: record.type, command: record.command, stopped: false };
53
+ yield { type: 'result', data, resultForAssistant: this.genResultForAssistant(data) };
54
+ return;
55
+ }
56
+ const stopped = manager.stopTask(task_id);
57
+ const data = {
58
+ taskId: task_id,
59
+ message: stopped
60
+ ? `Successfully stopped task: ${task_id} (${record.command})`
61
+ : `Failed to stop task: ${task_id} (${record.command}), process may have already exited.`,
62
+ taskType: record.type,
63
+ command: record.command,
64
+ stopped,
65
+ };
66
+ yield { type: 'result', data, resultForAssistant: this.genResultForAssistant(data) };
67
+ },
68
+ };
69
+ //# sourceMappingURL=TaskStop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStop.js","sourceRoot":"","sources":["../../../src/tools/TaskStop/TaskStop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { z } from 'zod';
2
+ declare const inputSchema: z.ZodObject<{
3
+ taskId: z.ZodString;
4
+ subject: z.ZodOptional<z.ZodString>;
5
+ description: z.ZodOptional<z.ZodString>;
6
+ activeForm: z.ZodOptional<z.ZodString>;
7
+ status: z.ZodOptional<z.ZodEnum<["pending", "in_progress", "completed", "deleted"]>>;
8
+ addBlocks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ addBlockedBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ owner: z.ZodOptional<z.ZodString>;
11
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12
+ }, "strict", z.ZodTypeAny, {
13
+ taskId: string;
14
+ status?: "pending" | "in_progress" | "completed" | "deleted" | undefined;
15
+ subject?: string | undefined;
16
+ description?: string | undefined;
17
+ activeForm?: string | undefined;
18
+ metadata?: Record<string, unknown> | undefined;
19
+ addBlocks?: string[] | undefined;
20
+ addBlockedBy?: string[] | undefined;
21
+ owner?: string | undefined;
22
+ }, {
23
+ taskId: string;
24
+ status?: "pending" | "in_progress" | "completed" | "deleted" | undefined;
25
+ subject?: string | undefined;
26
+ description?: string | undefined;
27
+ activeForm?: string | undefined;
28
+ metadata?: Record<string, unknown> | undefined;
29
+ addBlocks?: string[] | undefined;
30
+ addBlockedBy?: string[] | undefined;
31
+ owner?: string | undefined;
32
+ }>;
33
+ type Out = {
34
+ success: boolean;
35
+ taskId: string;
36
+ updatedFields: string[];
37
+ statusChange?: {
38
+ from: string;
39
+ to: string;
40
+ };
41
+ error?: string;
42
+ };
43
+ export declare const TaskUpdateTool: {
44
+ name: string;
45
+ description(): string;
46
+ inputSchema: z.ZodObject<{
47
+ taskId: z.ZodString;
48
+ subject: z.ZodOptional<z.ZodString>;
49
+ description: z.ZodOptional<z.ZodString>;
50
+ activeForm: z.ZodOptional<z.ZodString>;
51
+ status: z.ZodOptional<z.ZodEnum<["pending", "in_progress", "completed", "deleted"]>>;
52
+ addBlocks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
53
+ addBlockedBy: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
54
+ owner: z.ZodOptional<z.ZodString>;
55
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ }, "strict", z.ZodTypeAny, {
57
+ taskId: string;
58
+ status?: "pending" | "in_progress" | "completed" | "deleted" | undefined;
59
+ subject?: string | undefined;
60
+ description?: string | undefined;
61
+ activeForm?: string | undefined;
62
+ metadata?: Record<string, unknown> | undefined;
63
+ addBlocks?: string[] | undefined;
64
+ addBlockedBy?: string[] | undefined;
65
+ owner?: string | undefined;
66
+ }, {
67
+ taskId: string;
68
+ status?: "pending" | "in_progress" | "completed" | "deleted" | undefined;
69
+ subject?: string | undefined;
70
+ description?: string | undefined;
71
+ activeForm?: string | undefined;
72
+ metadata?: Record<string, unknown> | undefined;
73
+ addBlocks?: string[] | undefined;
74
+ addBlockedBy?: string[] | undefined;
75
+ owner?: string | undefined;
76
+ }>;
77
+ isReadOnly(): false;
78
+ canRunConcurrently(): true;
79
+ genResultForAssistant(data: Out): string;
80
+ getDisplayTitle(input: any): string;
81
+ call({ taskId, subject, description, activeForm, status, addBlocks, addBlockedBy, metadata }: z.infer<typeof inputSchema>, agentContext: any): AsyncGenerator<{
82
+ type: "result";
83
+ data: Out;
84
+ resultForAssistant: string;
85
+ }, void, unknown>;
86
+ };
87
+ export {};
88
+ //# sourceMappingURL=TaskUpdate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskUpdate.d.ts","sourceRoot":"","sources":["../../../src/tools/TaskUpdate/TaskUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUf,CAAA;AAEF,KAAK,GAAG,GAAG;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAOD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAYG,GAAG;2BAGR,GAAG;kGAIiE,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,gBACtG,GAAG;;;;;CAgFoB,CAAA"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskUpdateTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const prompt_1 = require("./prompt");
6
+ const StateManager_1 = require("../../manager/StateManager");
7
+ const TaskStatusEnum = zod_1.z.enum(['pending', 'in_progress', 'completed', 'deleted']);
8
+ const inputSchema = zod_1.z.strictObject({
9
+ taskId: zod_1.z.string().describe('The ID of the task to update'),
10
+ subject: zod_1.z.string().optional().describe('New subject for the task'),
11
+ description: zod_1.z.string().optional().describe('New description for the task'),
12
+ activeForm: zod_1.z.string().optional().describe("Present continuous form shown in spinner when in_progress (e.g., \"Running tests\")"),
13
+ status: TaskStatusEnum.optional().describe('New status for the task'),
14
+ addBlocks: zod_1.z.array(zod_1.z.string()).optional().describe('Task IDs that this task blocks'),
15
+ addBlockedBy: zod_1.z.array(zod_1.z.string()).optional().describe('Task IDs that block this task'),
16
+ owner: zod_1.z.string().optional().describe('New owner for the task'),
17
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe('Metadata keys to merge into the task. Set a key to null to delete it.'),
18
+ });
19
+ function formatResult(data) {
20
+ if (!data.success)
21
+ return data.error || `Task #${data.taskId} not found`;
22
+ return `Updated task #${data.taskId} ${data.updatedFields.join(', ')}`;
23
+ }
24
+ exports.TaskUpdateTool = {
25
+ name: prompt_1.TOOL_NAME_FOR_PROMPT,
26
+ description() {
27
+ return prompt_1.DESCRIPTION;
28
+ },
29
+ inputSchema,
30
+ isReadOnly() {
31
+ return false;
32
+ },
33
+ canRunConcurrently() {
34
+ return true;
35
+ },
36
+ genResultForAssistant(data) {
37
+ return formatResult(data);
38
+ },
39
+ getDisplayTitle(input) {
40
+ return `TaskUpdate: ${input?.taskId ?? ''}`;
41
+ },
42
+ async *call({ taskId, subject, description, activeForm, status, addBlocks, addBlockedBy, metadata }, agentContext) {
43
+ const stateManager = (0, StateManager_1.getStateManager)();
44
+ const agentState = stateManager.forAgent(agentContext.agentId);
45
+ // 查找任务
46
+ const existing = agentState.getTodoTask(taskId);
47
+ if (!existing) {
48
+ const data = { success: false, taskId, updatedFields: [], error: 'Task not found' };
49
+ yield { type: 'result', data, resultForAssistant: formatResult(data) };
50
+ return;
51
+ }
52
+ // 删除
53
+ if (status === 'deleted') {
54
+ const deleted = agentState.deleteTodoTask(taskId);
55
+ const data = {
56
+ success: deleted,
57
+ taskId,
58
+ updatedFields: deleted ? ['deleted'] : [],
59
+ statusChange: deleted ? { from: existing.status, to: 'deleted' } : undefined,
60
+ error: deleted ? undefined : 'Failed to delete task',
61
+ };
62
+ yield { type: 'result', data, resultForAssistant: formatResult(data) };
63
+ return;
64
+ }
65
+ // 收集变更
66
+ const updates = {};
67
+ const updatedFields = [];
68
+ if (subject !== undefined && subject !== existing.subject) {
69
+ updates.subject = subject;
70
+ updatedFields.push('subject');
71
+ }
72
+ if (description !== undefined && description !== existing.description) {
73
+ updates.description = description;
74
+ updatedFields.push('description');
75
+ }
76
+ if (activeForm !== undefined && activeForm !== existing.activeForm) {
77
+ updates.activeForm = activeForm;
78
+ updatedFields.push('activeForm');
79
+ }
80
+ if (status !== undefined && status !== existing.status) {
81
+ updates.status = status;
82
+ updatedFields.push('status');
83
+ }
84
+ if (metadata !== undefined) {
85
+ updates.metadata = metadata;
86
+ updatedFields.push('metadata');
87
+ }
88
+ if (Object.keys(updates).length > 0) {
89
+ agentState.updateTodoTask(taskId, updates);
90
+ }
91
+ // 建立阻塞关系(双向写入)
92
+ if (addBlocks && addBlocks.length > 0) {
93
+ for (const blockId of addBlocks) {
94
+ agentState.blockTask(taskId, blockId);
95
+ }
96
+ updatedFields.push('addBlocks');
97
+ }
98
+ if (addBlockedBy && addBlockedBy.length > 0) {
99
+ for (const blockerId of addBlockedBy) {
100
+ agentState.blockTask(blockerId, taskId);
101
+ }
102
+ updatedFields.push('addBlockedBy');
103
+ }
104
+ const data = {
105
+ success: true,
106
+ taskId,
107
+ updatedFields,
108
+ statusChange: updates.status !== undefined
109
+ ? { from: existing.status, to: updates.status }
110
+ : undefined,
111
+ };
112
+ yield { type: 'result', data, resultForAssistant: formatResult(data) };
113
+ },
114
+ };
115
+ //# sourceMappingURL=TaskUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskUpdate.js","sourceRoot":"","sources":["../../../src/tools/TaskUpdate/TaskUpdate.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAEvB,qCAA4D;AAC5D,6DAA4D;AAE5D,MAAM,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;AAEjF,MAAM,WAAW,GAAG,OAAC,CAAC,YAAY,CAAC;IACjC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3D,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACnE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3E,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;IACjI,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACrE,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACpF,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC/D,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;CACzI,CAAC,CAAA;AAUF,SAAS,YAAY,CAAC,IAAS;IAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,YAAY,CAAA;IACxE,OAAO,iBAAiB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACxE,CAAC;AAEY,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,6BAAoB;IAC1B,WAAW;QACT,OAAO,oBAAW,CAAA;IACpB,CAAC;IACD,WAAW;IACX,UAAU;QACR,OAAO,KAAK,CAAA;IACd,CAAC;IACD,kBAAkB;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,qBAAqB,CAAC,IAAS;QAC7B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IACD,eAAe,CAAC,KAAU;QACxB,OAAO,eAAe,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,CAAA;IAC7C,CAAC;IACD,KAAK,CAAC,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAA+B,EACpH,YAAiB;QAEjB,MAAM,YAAY,GAAG,IAAA,8BAAe,GAAE,CAAA;QACtC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAE9D,OAAO;QACP,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,GAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;YACxF,MAAM,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/E,OAAM;QACR,CAAC;QAED,KAAK;QACL,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;YACjD,MAAM,IAAI,GAAQ;gBAChB,OAAO,EAAE,OAAO;gBAChB,MAAM;gBACN,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC5E,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB;aACrD,CAAA;YACD,MAAM,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/E,OAAM;QACR,CAAC;QAED,OAAO;QACP,MAAM,OAAO,GAAwB,EAAE,CAAA;QACvC,MAAM,aAAa,GAAa,EAAE,CAAA;QAElC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,OAAO,GAAG,OAAO,CAAA;YACzB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YACtE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA;YACjC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA;YAC/B,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;YACvB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAC3B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC;QAED,eAAe;QACf,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAChC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACvC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACjC,CAAC;QACD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;gBACrC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACzC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACpC,CAAC;QAED,MAAM,IAAI,GAAQ;YAChB,OAAO,EAAE,IAAI;YACb,MAAM;YACN,aAAa;YACb,YAAY,EAAE,OAAO,CAAC,MAAM,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC/C,CAAC,CAAC,SAAS;SACd,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAA;IACjF,CAAC;CACsC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const TOOL_NAME_FOR_PROMPT = "TaskUpdate";
2
+ export declare const DESCRIPTION = "Use this tool to update a task in the task list.\n\n## When to Use This Tool\n\n**Mark tasks as resolved:**\n- When you have completed the work described in a task\n- When a task is no longer needed or has been superseded\n- IMPORTANT: Always mark your assigned tasks as resolved when you finish them\n- After resolving, call TaskList to find your next task\n\n- ONLY mark a task as completed when you have FULLY accomplished it\n- If you encounter errors, blockers, or cannot finish, keep the task as in_progress\n- When blocked, create a new task describing what needs to be resolved\n- Never mark a task as completed if:\n - Tests are failing\n - Implementation is partial\n - You encountered unresolved errors\n - You couldn't find necessary files or dependencies\n\n**Delete tasks:**\n- When a task is no longer relevant or was created in error\n- Setting status to `deleted` permanently removes the task\n\n**Update task details:**\n- When requirements change or become clearer\n- When establishing dependencies between tasks\n\n## Fields You Can Update\n\n- **status**: The task status (see Status Workflow below)\n- **subject**: Change the task title (imperative form, e.g., \"Run tests\")\n- **description**: Change the task description\n- **activeForm**: Present continuous form shown in spinner when in_progress (e.g., \"Running tests\")\n- **owner**: Change the task owner (agent name)\n- **metadata**: Merge metadata keys into the task (set a key to null to delete it)\n- **addBlocks**: Mark tasks that cannot start until this one completes\n- **addBlockedBy**: Mark tasks that must complete before this one can start\n\n## Status Workflow\n\nStatus progresses: `pending` \u2192 `in_progress` \u2192 `completed`\n\nUse `deleted` to permanently remove a task.\n\n## Staleness\n\nMake sure to read a task's latest state using `TaskGet` before updating it.\n\n## Examples\n\nMark task as in progress when starting work:\n```json\n{\"taskId\": \"1\", \"status\": \"in_progress\"}\n```\n\nMark task as completed after finishing work:\n```json\n{\"taskId\": \"1\", \"status\": \"completed\"}\n```\n\nDelete a task:\n```json\n{\"taskId\": \"1\", \"status\": \"deleted\"}\n```\n\nClaim a task by setting owner:\n```json\n{\"taskId\": \"1\", \"owner\": \"my-name\"}\n```\n\nSet up task dependencies:\n```json\n{\"taskId\": \"2\", \"addBlockedBy\": [\"1\"]}\n```\n";
3
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/tools/TaskUpdate/prompt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAA;AAEhD,eAAO,MAAM,WAAW,w0EA0EvB,CAAA"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DESCRIPTION = exports.TOOL_NAME_FOR_PROMPT = void 0;
4
+ exports.TOOL_NAME_FOR_PROMPT = 'TaskUpdate';
5
+ exports.DESCRIPTION = `Use this tool to update a task in the task list.
6
+
7
+ ## When to Use This Tool
8
+
9
+ **Mark tasks as resolved:**
10
+ - When you have completed the work described in a task
11
+ - When a task is no longer needed or has been superseded
12
+ - IMPORTANT: Always mark your assigned tasks as resolved when you finish them
13
+ - After resolving, call TaskList to find your next task
14
+
15
+ - ONLY mark a task as completed when you have FULLY accomplished it
16
+ - If you encounter errors, blockers, or cannot finish, keep the task as in_progress
17
+ - When blocked, create a new task describing what needs to be resolved
18
+ - Never mark a task as completed if:
19
+ - Tests are failing
20
+ - Implementation is partial
21
+ - You encountered unresolved errors
22
+ - You couldn't find necessary files or dependencies
23
+
24
+ **Delete tasks:**
25
+ - When a task is no longer relevant or was created in error
26
+ - Setting status to \`deleted\` permanently removes the task
27
+
28
+ **Update task details:**
29
+ - When requirements change or become clearer
30
+ - When establishing dependencies between tasks
31
+
32
+ ## Fields You Can Update
33
+
34
+ - **status**: The task status (see Status Workflow below)
35
+ - **subject**: Change the task title (imperative form, e.g., "Run tests")
36
+ - **description**: Change the task description
37
+ - **activeForm**: Present continuous form shown in spinner when in_progress (e.g., "Running tests")
38
+ - **owner**: Change the task owner (agent name)
39
+ - **metadata**: Merge metadata keys into the task (set a key to null to delete it)
40
+ - **addBlocks**: Mark tasks that cannot start until this one completes
41
+ - **addBlockedBy**: Mark tasks that must complete before this one can start
42
+
43
+ ## Status Workflow
44
+
45
+ Status progresses: \`pending\` → \`in_progress\` → \`completed\`
46
+
47
+ Use \`deleted\` to permanently remove a task.
48
+
49
+ ## Staleness
50
+
51
+ Make sure to read a task's latest state using \`TaskGet\` before updating it.
52
+
53
+ ## Examples
54
+
55
+ Mark task as in progress when starting work:
56
+ \`\`\`json
57
+ {"taskId": "1", "status": "in_progress"}
58
+ \`\`\`
59
+
60
+ Mark task as completed after finishing work:
61
+ \`\`\`json
62
+ {"taskId": "1", "status": "completed"}
63
+ \`\`\`
64
+
65
+ Delete a task:
66
+ \`\`\`json
67
+ {"taskId": "1", "status": "deleted"}
68
+ \`\`\`
69
+
70
+ Claim a task by setting owner:
71
+ \`\`\`json
72
+ {"taskId": "1", "owner": "my-name"}
73
+ \`\`\`
74
+
75
+ Set up task dependencies:
76
+ \`\`\`json
77
+ {"taskId": "2", "addBlockedBy": ["1"]}
78
+ \`\`\`
79
+ `;
80
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/tools/TaskUpdate/prompt.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,YAAY,CAAA;AAEnC,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0E1B,CAAA"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ type Output = {
3
+ bytes: number;
4
+ code: number;
5
+ codeText: string;
6
+ result: string;
7
+ durationMs: number;
8
+ url: string;
9
+ };
10
+ export declare const WebFetchTool: {
11
+ name: string;
12
+ description(): string;
13
+ inputSchema: z.ZodObject<{
14
+ url: z.ZodString;
15
+ prompt: z.ZodString;
16
+ }, "strict", z.ZodTypeAny, {
17
+ url: string;
18
+ prompt: string;
19
+ }, {
20
+ url: string;
21
+ prompt: string;
22
+ }>;
23
+ isReadOnly(): false;
24
+ validateInput({ url }: {
25
+ url: string;
26
+ prompt: string;
27
+ }): Promise<{
28
+ result: false;
29
+ message: string;
30
+ errorCode: number;
31
+ } | {
32
+ result: true;
33
+ message?: undefined;
34
+ errorCode?: undefined;
35
+ }>;
36
+ genToolResultMessage(data: Output): {
37
+ title: string;
38
+ summary: string;
39
+ content: string;
40
+ };
41
+ genToolPermission(input: {
42
+ url: string;
43
+ prompt: string;
44
+ }): {
45
+ title: string;
46
+ content: string;
47
+ };
48
+ getDisplayTitle(input?: {
49
+ url?: string;
50
+ }): string;
51
+ call({ url, prompt }: {
52
+ url: string;
53
+ prompt: string;
54
+ }, agentContext: any): AsyncGenerator<{
55
+ type: "result";
56
+ data: Output;
57
+ resultForAssistant: string | (import("@anthropic-ai/sdk/resources").TextBlockParam | import("@anthropic-ai/sdk/resources").ImageBlockParam)[] | undefined;
58
+ }, void, unknown>;
59
+ genResultForAssistant(output: Output): string;
60
+ };
61
+ export {};
62
+ //# sourceMappingURL=WebFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebFetch.d.ts","sourceRoot":"","sources":["../../../src/tools/WebFetch/WebFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAkBvB,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;+BAqBI,MAAM;;;;;6BASR;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;;;4BAMhC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;0BAQX;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,gBAAgB,GAAG;;;;;kCA0FjD,MAAM;CAGM,CAAA"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebFetchTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const prompt_1 = require("./prompt");
6
+ const utils_1 = require("./utils");
7
+ const EventSystem_1 = require("../../events/EventSystem");
8
+ const StateManager_1 = require("../../manager/StateManager");
9
+ const inputSchema = zod_1.z.strictObject({
10
+ url: zod_1.z.string().url().describe('The URL to fetch content from'),
11
+ prompt: zod_1.z.string().describe('The prompt to run on the fetched content'),
12
+ });
13
+ exports.WebFetchTool = {
14
+ name: prompt_1.TOOL_NAME_FOR_PROMPT,
15
+ description() {
16
+ return prompt_1.DESCRIPTION;
17
+ },
18
+ inputSchema,
19
+ isReadOnly() {
20
+ return false;
21
+ },
22
+ async validateInput({ url }) {
23
+ try {
24
+ new URL(url);
25
+ }
26
+ catch {
27
+ return {
28
+ result: false,
29
+ message: `Error: Invalid URL "${url}". The URL provided could not be parsed.`,
30
+ errorCode: 1,
31
+ };
32
+ }
33
+ return { result: true };
34
+ },
35
+ genToolResultMessage(data) {
36
+ const sizeKB = (data.bytes / 1024).toFixed(1);
37
+ const maxContentLength = 5000;
38
+ return {
39
+ title: data.url,
40
+ summary: '',
41
+ content: data.result.slice(0, maxContentLength) + (data.result.length > maxContentLength ? '...' : ''),
42
+ };
43
+ },
44
+ genToolPermission(input) {
45
+ return {
46
+ title: '',
47
+ content: input.url,
48
+ };
49
+ },
50
+ getDisplayTitle(input) {
51
+ if (!input?.url)
52
+ return 'WebFetch';
53
+ try {
54
+ return new URL(input.url).hostname;
55
+ }
56
+ catch {
57
+ return 'WebFetch';
58
+ }
59
+ },
60
+ async *call({ url, prompt }, agentContext) {
61
+ const start = Date.now();
62
+ const { abortController } = agentContext;
63
+ const isMainAgent = agentContext.agentId === StateManager_1.MAIN_AGENT_ID;
64
+ const timeTag = () => {
65
+ const now = new Date();
66
+ const h = String(now.getHours()).padStart(2, '0');
67
+ const m = String(now.getMinutes()).padStart(2, '0');
68
+ const s = String(now.getSeconds()).padStart(2, '0');
69
+ return `[${h}:${m}:${s}]`;
70
+ };
71
+ const emitChunk = isMainAgent ? (content) => {
72
+ const chunkData = {
73
+ agentId: agentContext.agentId,
74
+ toolId: agentContext.currentToolUseID || '',
75
+ toolName: prompt_1.TOOL_NAME_FOR_PROMPT,
76
+ title: url,
77
+ summary: '',
78
+ content,
79
+ };
80
+ (0, EventSystem_1.getEventBus)().emit('tool:execution:chunk', chunkData);
81
+ } : undefined;
82
+ emitChunk?.(`${timeTag()}Fetching content...\n`);
83
+ const response = await (0, utils_1.getURLMarkdownContent)(url, abortController);
84
+ // 跨域重定向:通知 LLM 重新请求
85
+ if ('type' in response && response.type === 'redirect') {
86
+ const statusText = response.statusCode === 301 ? 'Moved Permanently'
87
+ : response.statusCode === 308 ? 'Permanent Redirect'
88
+ : response.statusCode === 307 ? 'Temporary Redirect'
89
+ : 'Found';
90
+ const message = `REDIRECT DETECTED: The URL redirects to a different host.
91
+
92
+ Original URL: ${response.originalUrl}
93
+ Redirect URL: ${response.redirectUrl}
94
+ Status: ${response.statusCode} ${statusText}
95
+
96
+ To complete your request, I need to fetch content from the redirected URL. Please use WebFetch again with these parameters:
97
+ - url: "${response.redirectUrl}"
98
+ - prompt: "${prompt}"`;
99
+ const output = {
100
+ bytes: Buffer.byteLength(message),
101
+ code: response.statusCode,
102
+ codeText: statusText,
103
+ result: message,
104
+ durationMs: Date.now() - start,
105
+ url,
106
+ };
107
+ yield {
108
+ type: 'result',
109
+ data: output,
110
+ resultForAssistant: this.genResultForAssistant(output),
111
+ };
112
+ return;
113
+ }
114
+ const { content, bytes, code, codeText, contentType } = response;
115
+ const sizeKB = (bytes / 1024).toFixed(1);
116
+ emitChunk?.(`${timeTag()}Fetched ${sizeKB}KB (HTTP ${code}), processing with LLM...\n`);
117
+ let result;
118
+ // 对于小型 markdown 内容直接返回,无需 LLM 处理
119
+ if (contentType.includes('text/markdown') && content.length < utils_1.MAX_MARKDOWN_LENGTH) {
120
+ result = content;
121
+ }
122
+ else {
123
+ result = await (0, utils_1.applyPromptToMarkdown)(prompt, content, abortController.signal);
124
+ }
125
+ const output = {
126
+ bytes,
127
+ code,
128
+ codeText,
129
+ result,
130
+ durationMs: Date.now() - start,
131
+ url,
132
+ };
133
+ yield {
134
+ type: 'result',
135
+ data: output,
136
+ resultForAssistant: this.genResultForAssistant(output),
137
+ };
138
+ },
139
+ genResultForAssistant(output) {
140
+ return output.result;
141
+ },
142
+ };
143
+ //# sourceMappingURL=WebFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebFetch.js","sourceRoot":"","sources":["../../../src/tools/WebFetch/WebFetch.ts"],"names":[],"mappings":"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"}