@zhijiewang/openharness 0.11.0 → 0.12.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 (114) hide show
  1. package/README.md +203 -23
  2. package/dist/DeferredTool.d.ts +34 -0
  3. package/dist/DeferredTool.d.ts.map +1 -0
  4. package/dist/DeferredTool.js +62 -0
  5. package/dist/DeferredTool.js.map +1 -0
  6. package/dist/DeferredTool.test.d.ts +2 -0
  7. package/dist/DeferredTool.test.d.ts.map +1 -0
  8. package/dist/DeferredTool.test.js +79 -0
  9. package/dist/DeferredTool.test.js.map +1 -0
  10. package/dist/agents/roles.d.ts.map +1 -1
  11. package/dist/agents/roles.js +20 -6
  12. package/dist/agents/roles.js.map +1 -1
  13. package/dist/agents/roles.test.js +26 -2
  14. package/dist/agents/roles.test.js.map +1 -1
  15. package/dist/harness/config.d.ts +15 -0
  16. package/dist/harness/config.d.ts.map +1 -1
  17. package/dist/harness/config.js +45 -23
  18. package/dist/harness/config.js.map +1 -1
  19. package/dist/harness/memory-consolidation.test.d.ts +2 -0
  20. package/dist/harness/memory-consolidation.test.d.ts.map +1 -0
  21. package/dist/harness/memory-consolidation.test.js +152 -0
  22. package/dist/harness/memory-consolidation.test.js.map +1 -0
  23. package/dist/harness/memory.d.ts +12 -0
  24. package/dist/harness/memory.d.ts.map +1 -1
  25. package/dist/harness/memory.js +53 -2
  26. package/dist/harness/memory.js.map +1 -1
  27. package/dist/harness/memory.test.js +43 -1
  28. package/dist/harness/memory.test.js.map +1 -1
  29. package/dist/harness/session.test.js +36 -0
  30. package/dist/harness/session.test.js.map +1 -1
  31. package/dist/harness/verification.d.ts +41 -0
  32. package/dist/harness/verification.d.ts.map +1 -0
  33. package/dist/harness/verification.js +197 -0
  34. package/dist/harness/verification.js.map +1 -0
  35. package/dist/harness/verification.test.d.ts +2 -0
  36. package/dist/harness/verification.test.d.ts.map +1 -0
  37. package/dist/harness/verification.test.js +181 -0
  38. package/dist/harness/verification.test.js.map +1 -0
  39. package/dist/query/index.d.ts.map +1 -1
  40. package/dist/query/index.js +9 -1
  41. package/dist/query/index.js.map +1 -1
  42. package/dist/query/tools.d.ts.map +1 -1
  43. package/dist/query/tools.js +30 -4
  44. package/dist/query/tools.js.map +1 -1
  45. package/dist/renderer/index.d.ts +2 -0
  46. package/dist/renderer/index.d.ts.map +1 -1
  47. package/dist/renderer/index.js +26 -16
  48. package/dist/renderer/index.js.map +1 -1
  49. package/dist/repl.d.ts.map +1 -1
  50. package/dist/repl.js +90 -15
  51. package/dist/repl.js.map +1 -1
  52. package/dist/services/AgentDispatcher.d.ts +1 -0
  53. package/dist/services/AgentDispatcher.d.ts.map +1 -1
  54. package/dist/services/AgentDispatcher.js +10 -1
  55. package/dist/services/AgentDispatcher.js.map +1 -1
  56. package/dist/services/CronExecutor.d.ts +38 -0
  57. package/dist/services/CronExecutor.d.ts.map +1 -0
  58. package/dist/services/CronExecutor.js +130 -0
  59. package/dist/services/CronExecutor.js.map +1 -0
  60. package/dist/services/CronExecutor.test.d.ts +2 -0
  61. package/dist/services/CronExecutor.test.d.ts.map +1 -0
  62. package/dist/services/CronExecutor.test.js +128 -0
  63. package/dist/services/CronExecutor.test.js.map +1 -0
  64. package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
  65. package/dist/services/StreamingToolExecutor.js +28 -0
  66. package/dist/services/StreamingToolExecutor.js.map +1 -1
  67. package/dist/services/cron.d.ts +4 -0
  68. package/dist/services/cron.d.ts.map +1 -1
  69. package/dist/services/cron.js +27 -0
  70. package/dist/services/cron.js.map +1 -1
  71. package/dist/tools/AgentTool/index.d.ts +3 -0
  72. package/dist/tools/AgentTool/index.d.ts.map +1 -1
  73. package/dist/tools/AgentTool/index.js +17 -4
  74. package/dist/tools/AgentTool/index.js.map +1 -1
  75. package/dist/tools/CronTool/index.d.ts +40 -0
  76. package/dist/tools/CronTool/index.d.ts.map +1 -0
  77. package/dist/tools/CronTool/index.js +59 -0
  78. package/dist/tools/CronTool/index.js.map +1 -0
  79. package/dist/tools/EnterWorktreeTool/index.d.ts +12 -0
  80. package/dist/tools/EnterWorktreeTool/index.d.ts.map +1 -0
  81. package/dist/tools/EnterWorktreeTool/index.js +27 -0
  82. package/dist/tools/EnterWorktreeTool/index.js.map +1 -0
  83. package/dist/tools/ExitWorktreeTool/index.d.ts +15 -0
  84. package/dist/tools/ExitWorktreeTool/index.d.ts.map +1 -0
  85. package/dist/tools/ExitWorktreeTool/index.js +33 -0
  86. package/dist/tools/ExitWorktreeTool/index.js.map +1 -0
  87. package/dist/tools/KillProcessTool/index.d.ts +18 -0
  88. package/dist/tools/KillProcessTool/index.d.ts.map +1 -0
  89. package/dist/tools/KillProcessTool/index.js +43 -0
  90. package/dist/tools/KillProcessTool/index.js.map +1 -0
  91. package/dist/tools/MemoryTool/index.d.ts +30 -0
  92. package/dist/tools/MemoryTool/index.d.ts.map +1 -0
  93. package/dist/tools/MemoryTool/index.js +56 -0
  94. package/dist/tools/MemoryTool/index.js.map +1 -0
  95. package/dist/tools/MultiEditTool/index.d.ts +32 -0
  96. package/dist/tools/MultiEditTool/index.d.ts.map +1 -0
  97. package/dist/tools/MultiEditTool/index.js +53 -0
  98. package/dist/tools/MultiEditTool/index.js.map +1 -0
  99. package/dist/tools/RemoteTriggerTool/index.d.ts +21 -0
  100. package/dist/tools/RemoteTriggerTool/index.d.ts.map +1 -0
  101. package/dist/tools/RemoteTriggerTool/index.js +43 -0
  102. package/dist/tools/RemoteTriggerTool/index.js.map +1 -0
  103. package/dist/tools/SendMessageTool/index.d.ts +18 -0
  104. package/dist/tools/SendMessageTool/index.d.ts.map +1 -0
  105. package/dist/tools/SendMessageTool/index.js +29 -0
  106. package/dist/tools/SendMessageTool/index.js.map +1 -0
  107. package/dist/tools/ToolSearchTool/index.d.ts.map +1 -1
  108. package/dist/tools/ToolSearchTool/index.js +7 -0
  109. package/dist/tools/ToolSearchTool/index.js.map +1 -1
  110. package/dist/tools.d.ts +8 -0
  111. package/dist/tools.d.ts.map +1 -1
  112. package/dist/tools.js +56 -25
  113. package/dist/tools.js.map +1 -1
  114. package/package.json +2 -1
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ import { createCron, deleteCron, listCrons } from "../../services/cron.js";
3
+ const createSchema = z.object({
4
+ action: z.literal("create"),
5
+ name: z.string().describe("Human-readable name for this scheduled task"),
6
+ schedule: z.string().describe("Schedule: 'every 5m', 'every 2h', 'every 1d'"),
7
+ prompt: z.string().describe("The prompt to run on schedule"),
8
+ });
9
+ const deleteSchema = z.object({
10
+ action: z.literal("delete"),
11
+ id: z.string().describe("Cron ID to delete"),
12
+ });
13
+ const listSchema = z.object({
14
+ action: z.literal("list"),
15
+ });
16
+ const inputSchema = z.discriminatedUnion("action", [createSchema, deleteSchema, listSchema]);
17
+ export const CronCreateTool = {
18
+ name: "CronCreate",
19
+ description: "Create a scheduled recurring task that runs a prompt on an interval.",
20
+ inputSchema: createSchema,
21
+ riskLevel: "medium",
22
+ isReadOnly() { return false; },
23
+ isConcurrencySafe() { return true; },
24
+ async call(input) {
25
+ const cron = createCron(input.name, input.schedule, input.prompt);
26
+ return { output: `Created cron '${cron.name}' (${cron.id}) — schedule: ${cron.schedule}`, isError: false };
27
+ },
28
+ prompt() { return "CronCreate: Schedule a recurring task. Schedules: 'every 5m', 'every 2h', 'every 1d'."; },
29
+ };
30
+ export const CronDeleteTool = {
31
+ name: "CronDelete",
32
+ description: "Delete a scheduled recurring task.",
33
+ inputSchema: deleteSchema,
34
+ riskLevel: "medium",
35
+ isReadOnly() { return false; },
36
+ isConcurrencySafe() { return true; },
37
+ async call(input) {
38
+ const ok = deleteCron(input.id);
39
+ return { output: ok ? `Deleted cron ${input.id}` : `Cron ${input.id} not found`, isError: !ok };
40
+ },
41
+ prompt() { return "CronDelete: Remove a scheduled task by ID."; },
42
+ };
43
+ export const CronListTool = {
44
+ name: "CronList",
45
+ description: "List all scheduled recurring tasks.",
46
+ inputSchema: listSchema,
47
+ riskLevel: "low",
48
+ isReadOnly() { return true; },
49
+ isConcurrencySafe() { return true; },
50
+ async call() {
51
+ const crons = listCrons();
52
+ if (crons.length === 0)
53
+ return { output: "No scheduled tasks.", isError: false };
54
+ const lines = crons.map(c => `${c.id} ${c.name.padEnd(20)} ${c.schedule.padEnd(12)} ${c.enabled ? '✓' : '✗'} runs: ${c.runCount}`);
55
+ return { output: `Scheduled tasks:\n${lines.join('\n')}`, isError: false };
56
+ },
57
+ prompt() { return "CronList: Show all scheduled recurring tasks."; },
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/CronTool/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ branch: z.ZodOptional<z.ZodString>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ branch?: string | undefined;
7
+ }, {
8
+ branch?: string | undefined;
9
+ }>;
10
+ export declare const EnterWorktreeTool: Tool<typeof inputSchema>;
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/EnterWorktreeTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,eAAe,CAAC;AAGnE,QAAA,MAAM,WAAW;;;;;;EAEf,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,OAAO,WAAW,CAsBtD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ import { createWorktree, isGitRepo } from "../../git/index.js";
3
+ const inputSchema = z.object({
4
+ branch: z.string().optional().describe("Branch name for the worktree (auto-generated if omitted)"),
5
+ });
6
+ export const EnterWorktreeTool = {
7
+ name: "EnterWorktree",
8
+ description: "Create an isolated git worktree for safe experimentation. Changes won't affect the main working directory.",
9
+ inputSchema,
10
+ riskLevel: "medium",
11
+ isReadOnly() { return false; },
12
+ isConcurrencySafe() { return false; },
13
+ async call(input, context) {
14
+ if (!isGitRepo(context.workingDir)) {
15
+ return { output: "Not a git repository — worktrees require git.", isError: true };
16
+ }
17
+ const path = createWorktree(context.workingDir);
18
+ if (!path) {
19
+ return { output: "Failed to create worktree.", isError: true };
20
+ }
21
+ return { output: `Worktree created at: ${path}\nUse ExitWorktree to clean up when done.`, isError: false };
22
+ },
23
+ prompt() {
24
+ return "EnterWorktree: Create an isolated git worktree for safe code changes.";
25
+ },
26
+ };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/EnterWorktreeTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;CACnG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,4GAA4G;IACzH,WAAW;IACX,SAAS,EAAE,QAAQ;IACnB,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,iBAAiB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAErC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAoB;QACpC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,MAAM,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,wBAAwB,IAAI,2CAA2C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7G,CAAC;IAED,MAAM;QACJ,OAAO,uEAAuE,CAAC;IACjF,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ path: z.ZodString;
5
+ force: z.ZodOptional<z.ZodBoolean>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ path: string;
8
+ force?: boolean | undefined;
9
+ }, {
10
+ path: string;
11
+ force?: boolean | undefined;
12
+ }>;
13
+ export declare const ExitWorktreeTool: Tool<typeof inputSchema>;
14
+ export {};
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ExitWorktreeTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,eAAe,CAAC;AAGnE,QAAA,MAAM,WAAW;;;;;;;;;EAGf,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,OAAO,WAAW,CA0BrD,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { removeWorktree, hasWorktreeChanges } from "../../git/index.js";
3
+ const inputSchema = z.object({
4
+ path: z.string().describe("Path to the worktree to remove"),
5
+ force: z.boolean().optional().describe("Force removal even with uncommitted changes"),
6
+ });
7
+ export const ExitWorktreeTool = {
8
+ name: "ExitWorktree",
9
+ description: "Remove a git worktree. Warns if there are uncommitted changes unless force is true.",
10
+ inputSchema,
11
+ riskLevel: "medium",
12
+ isReadOnly() { return false; },
13
+ isConcurrencySafe() { return false; },
14
+ async call(input) {
15
+ if (!input.force && hasWorktreeChanges(input.path)) {
16
+ return {
17
+ output: `Worktree at ${input.path} has uncommitted changes. Use force: true to remove anyway.`,
18
+ isError: true,
19
+ };
20
+ }
21
+ try {
22
+ removeWorktree(input.path);
23
+ return { output: `Worktree removed: ${input.path}`, isError: false };
24
+ }
25
+ catch (err) {
26
+ return { output: `Failed to remove worktree: ${err instanceof Error ? err.message : String(err)}`, isError: true };
27
+ }
28
+ },
29
+ prompt() {
30
+ return "ExitWorktree: Remove a git worktree created by EnterWorktree.";
31
+ },
32
+ };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ExitWorktreeTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC3D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CACtF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qFAAqF;IAClG,WAAW;IACX,SAAS,EAAE,QAAQ;IACnB,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,iBAAiB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAErC,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,MAAM,EAAE,eAAe,KAAK,CAAC,IAAI,6DAA6D;gBAC9F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,EAAE,MAAM,EAAE,qBAAqB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,+DAA+D,CAAC;IACzE,CAAC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ pid: z.ZodOptional<z.ZodNumber>;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ signal: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ name?: string | undefined;
9
+ pid?: number | undefined;
10
+ signal?: string | undefined;
11
+ }, {
12
+ name?: string | undefined;
13
+ pid?: number | undefined;
14
+ signal?: string | undefined;
15
+ }>;
16
+ export declare const KillProcessTool: Tool<typeof inputSchema>;
17
+ export {};
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/KillProcessTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAEtD,QAAA,MAAM,WAAW;;;;;;;;;;;;EAIf,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,OAAO,WAAW,CAuCpD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ pid: z.number().optional().describe("Process ID to kill"),
4
+ name: z.string().optional().describe("Process name to kill (uses pkill/taskkill)"),
5
+ signal: z.string().optional().describe("Signal to send (default: SIGTERM)"),
6
+ });
7
+ export const KillProcessTool = {
8
+ name: "KillProcess",
9
+ description: "Kill a running process by PID or name. Use for stopping background tasks or stuck processes.",
10
+ inputSchema,
11
+ riskLevel: "high",
12
+ isReadOnly() { return false; },
13
+ isConcurrencySafe() { return true; },
14
+ async call(input) {
15
+ if (!input.pid && !input.name) {
16
+ return { output: "Provide either pid or name.", isError: true };
17
+ }
18
+ try {
19
+ if (input.pid) {
20
+ const signal = input.signal ?? 'SIGTERM';
21
+ process.kill(input.pid, signal);
22
+ return { output: `Sent ${signal} to PID ${input.pid}`, isError: false };
23
+ }
24
+ if (input.name) {
25
+ const { execSync } = await import('node:child_process');
26
+ const isWin = process.platform === 'win32';
27
+ const cmd = isWin
28
+ ? `taskkill /IM "${input.name}" /F`
29
+ : `pkill ${input.signal ? `-${input.signal}` : ''} "${input.name}"`;
30
+ const result = execSync(cmd, { encoding: 'utf-8', timeout: 5000 });
31
+ return { output: result || `Killed process: ${input.name}`, isError: false };
32
+ }
33
+ }
34
+ catch (err) {
35
+ return { output: `Failed: ${err instanceof Error ? err.message : String(err)}`, isError: true };
36
+ }
37
+ return { output: "No process specified.", isError: true };
38
+ },
39
+ prompt() {
40
+ return "KillProcess: Stop a running process by PID or name.";
41
+ },
42
+ };
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/KillProcessTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IAClF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,8FAA8F;IAC3G,WAAW;IACX,SAAS,EAAE,MAAM;IACjB,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,iBAAiB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,MAAM,EAAE,6BAA6B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAwB,CAAC,CAAC;gBAClD,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,WAAW,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1E,CAAC;YAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;gBAC3C,MAAM,GAAG,GAAG,KAAK;oBACf,CAAC,CAAC,iBAAiB,KAAK,CAAC,IAAI,MAAM;oBACnC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;gBACtE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,mBAAmB,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAClG,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,qDAAqD,CAAC;IAC/D,CAAC;CACF,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ action: z.ZodEnum<["save", "list", "search"]>;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ type: z.ZodOptional<z.ZodEnum<["convention", "preference", "project", "debugging"]>>;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ content: z.ZodOptional<z.ZodString>;
9
+ query: z.ZodOptional<z.ZodString>;
10
+ global: z.ZodOptional<z.ZodBoolean>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ action: "search" | "save" | "list";
13
+ content?: string | undefined;
14
+ type?: "convention" | "preference" | "project" | "debugging" | undefined;
15
+ global?: boolean | undefined;
16
+ name?: string | undefined;
17
+ description?: string | undefined;
18
+ query?: string | undefined;
19
+ }, {
20
+ action: "search" | "save" | "list";
21
+ content?: string | undefined;
22
+ type?: "convention" | "preference" | "project" | "debugging" | undefined;
23
+ global?: boolean | undefined;
24
+ name?: string | undefined;
25
+ description?: string | undefined;
26
+ query?: string | undefined;
27
+ }>;
28
+ export declare const MemoryTool: Tool<typeof inputSchema>;
29
+ export {};
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/MemoryTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAGtD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAQf,CAAC;AAEH,eAAO,MAAM,UAAU,EAAE,IAAI,CAAC,OAAO,WAAW,CAsD/C,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from "zod";
2
+ import { saveMemory, loadActiveMemories, touchMemory } from "../../harness/memory.js";
3
+ const inputSchema = z.object({
4
+ action: z.enum(["save", "list", "search"]),
5
+ name: z.string().optional().describe("Memory name (for save)"),
6
+ type: z.enum(["convention", "preference", "project", "debugging"]).optional(),
7
+ description: z.string().optional(),
8
+ content: z.string().optional().describe("Memory content (for save)"),
9
+ query: z.string().optional().describe("Search query (for search)"),
10
+ global: z.boolean().optional().describe("Save to global memory instead of project"),
11
+ });
12
+ export const MemoryTool = {
13
+ name: "Memory",
14
+ description: "Save, list, or search persistent memories that survive across sessions.",
15
+ inputSchema,
16
+ riskLevel: "low",
17
+ isReadOnly(input) { return input.action !== 'save'; },
18
+ isConcurrencySafe() { return true; },
19
+ async call(input) {
20
+ if (input.action === 'save') {
21
+ if (!input.name || !input.content) {
22
+ return { output: "name and content required for save.", isError: true };
23
+ }
24
+ const path = saveMemory(input.name, input.type ?? 'convention', input.description ?? input.name, input.content, input.global);
25
+ return { output: `Memory saved: ${path}`, isError: false };
26
+ }
27
+ if (input.action === 'list') {
28
+ const memories = loadActiveMemories();
29
+ if (memories.length === 0)
30
+ return { output: "No memories saved.", isError: false };
31
+ const lines = memories.map(m => `[${m.type}] ${m.name} (relevance: ${(m.relevance ?? 0.5).toFixed(1)}) — ${m.description}`);
32
+ return { output: lines.join('\n'), isError: false };
33
+ }
34
+ if (input.action === 'search') {
35
+ if (!input.query)
36
+ return { output: "query required for search.", isError: true };
37
+ const memories = loadActiveMemories();
38
+ const q = input.query.toLowerCase();
39
+ const matches = memories.filter(m => m.name.toLowerCase().includes(q) ||
40
+ m.content.toLowerCase().includes(q) ||
41
+ m.description.toLowerCase().includes(q));
42
+ if (matches.length === 0)
43
+ return { output: `No memories matching "${input.query}".`, isError: false };
44
+ // Touch accessed memories to boost relevance
45
+ for (const m of matches)
46
+ touchMemory(m);
47
+ const lines = matches.map(m => `[${m.type}] ${m.name}: ${m.content.slice(0, 200)}`);
48
+ return { output: lines.join('\n\n'), isError: false };
49
+ }
50
+ return { output: "Unknown action.", isError: true };
51
+ },
52
+ prompt() {
53
+ return "Memory: Save/list/search persistent memories across sessions. Actions: save, list, search.";
54
+ },
55
+ };
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/MemoryTool/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ edits: z.ZodArray<z.ZodObject<{
5
+ file_path: z.ZodString;
6
+ old_string: z.ZodString;
7
+ new_string: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ file_path: string;
10
+ old_string: string;
11
+ new_string: string;
12
+ }, {
13
+ file_path: string;
14
+ old_string: string;
15
+ new_string: string;
16
+ }>, "many">;
17
+ }, "strip", z.ZodTypeAny, {
18
+ edits: {
19
+ file_path: string;
20
+ old_string: string;
21
+ new_string: string;
22
+ }[];
23
+ }, {
24
+ edits: {
25
+ file_path: string;
26
+ old_string: string;
27
+ new_string: string;
28
+ }[];
29
+ }>;
30
+ export declare const MultiEditTool: Tool<typeof inputSchema>;
31
+ export {};
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/MultiEditTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAStD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;EAEf,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,IAAI,CAAC,OAAO,WAAW,CA8ClD,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
3
+ const editSchema = z.object({
4
+ file_path: z.string(),
5
+ old_string: z.string(),
6
+ new_string: z.string(),
7
+ });
8
+ const inputSchema = z.object({
9
+ edits: z.array(editSchema).describe("Array of edits to apply atomically"),
10
+ });
11
+ export const MultiEditTool = {
12
+ name: "MultiEdit",
13
+ description: "Apply multiple file edits atomically. All edits succeed or none do. Useful for coordinated changes across files.",
14
+ inputSchema,
15
+ riskLevel: "medium",
16
+ isReadOnly() { return false; },
17
+ isConcurrencySafe() { return false; },
18
+ async call(input) {
19
+ // Phase 1: Validate all edits can be applied
20
+ const originals = new Map();
21
+ const modified = new Map();
22
+ for (const edit of input.edits) {
23
+ if (!existsSync(edit.file_path)) {
24
+ return { output: `File not found: ${edit.file_path}`, isError: true };
25
+ }
26
+ if (!originals.has(edit.file_path)) {
27
+ originals.set(edit.file_path, readFileSync(edit.file_path, 'utf-8'));
28
+ }
29
+ const current = modified.get(edit.file_path) ?? originals.get(edit.file_path);
30
+ if (!current.includes(edit.old_string)) {
31
+ return {
32
+ output: `old_string not found in ${edit.file_path}: "${edit.old_string.slice(0, 80)}"`,
33
+ isError: true,
34
+ };
35
+ }
36
+ modified.set(edit.file_path, current.replace(edit.old_string, edit.new_string));
37
+ }
38
+ // Phase 2: Apply all edits
39
+ const results = [];
40
+ for (const [path, content] of modified) {
41
+ writeFileSync(path, content);
42
+ results.push(path);
43
+ }
44
+ return {
45
+ output: `Applied ${input.edits.length} edit(s) across ${results.length} file(s): ${results.join(', ')}`,
46
+ isError: false,
47
+ };
48
+ },
49
+ prompt() {
50
+ return "MultiEdit: Apply multiple file edits atomically. All succeed or none do.";
51
+ },
52
+ };
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/MultiEditTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,kHAAkH;IAC/H,WAAW;IACX,SAAS,EAAE,QAAQ;IACnB,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,iBAAiB,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAErC,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,6CAA6C;QAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,MAAM,EAAE,mBAAmB,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,OAAO;oBACL,MAAM,EAAE,2BAA2B,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;oBACtF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACvC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW,KAAK,CAAC,KAAK,CAAC,MAAM,mBAAmB,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvG,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,0EAA0E,CAAC;IACpF,CAAC;CACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ url: z.ZodString;
5
+ method: z.ZodOptional<z.ZodEnum<["GET", "POST", "PUT", "DELETE"]>>;
6
+ body: z.ZodOptional<z.ZodString>;
7
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ url: string;
10
+ method?: "POST" | "GET" | "PUT" | "DELETE" | undefined;
11
+ body?: string | undefined;
12
+ headers?: Record<string, string> | undefined;
13
+ }, {
14
+ url: string;
15
+ method?: "POST" | "GET" | "PUT" | "DELETE" | undefined;
16
+ body?: string | undefined;
17
+ headers?: Record<string, string> | undefined;
18
+ }>;
19
+ export declare const RemoteTriggerTool: Tool<typeof inputSchema>;
20
+ export {};
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/RemoteTriggerTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAEtD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;EAKf,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,OAAO,WAAW,CAqCtD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ url: z.string().describe("Webhook URL to trigger"),
4
+ method: z.enum(["GET", "POST", "PUT", "DELETE"]).optional(),
5
+ body: z.string().optional().describe("JSON body for POST/PUT requests"),
6
+ headers: z.record(z.string()).optional().describe("Custom headers"),
7
+ });
8
+ export const RemoteTriggerTool = {
9
+ name: "RemoteTrigger",
10
+ description: "Trigger a remote webhook or API endpoint. Useful for CI/CD, deployments, and external integrations.",
11
+ inputSchema,
12
+ riskLevel: "high",
13
+ isReadOnly() { return false; },
14
+ isConcurrencySafe() { return true; },
15
+ async call(input) {
16
+ try {
17
+ const method = input.method ?? (input.body ? "POST" : "GET");
18
+ const headers = {
19
+ 'Content-Type': 'application/json',
20
+ ...input.headers,
21
+ };
22
+ const res = await fetch(input.url, {
23
+ method,
24
+ headers,
25
+ body: input.body,
26
+ signal: AbortSignal.timeout(30_000),
27
+ });
28
+ const text = await res.text();
29
+ const truncated = text.length > 5000 ? text.slice(0, 5000) + '\n[truncated]' : text;
30
+ return {
31
+ output: `${res.status} ${res.statusText}\n${truncated}`,
32
+ isError: res.status >= 400,
33
+ };
34
+ }
35
+ catch (err) {
36
+ return { output: `Request failed: ${err instanceof Error ? err.message : String(err)}`, isError: true };
37
+ }
38
+ },
39
+ prompt() {
40
+ return "RemoteTrigger: Send HTTP requests to webhooks, APIs, or CI/CD triggers.";
41
+ },
42
+ };
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/RemoteTriggerTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,qGAAqG;IAClH,WAAW;IACX,SAAS,EAAE,MAAM;IACjB,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,iBAAiB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC7D,MAAM,OAAO,GAA2B;gBACtC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,KAAK,CAAC,OAAO;aACjB,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBACjC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;aACpC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;YACpF,OAAO;gBACL,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;gBACvD,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;aAC3B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,yEAAyE,CAAC;IACnF,CAAC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import type { Tool } from "../../Tool.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ to: z.ZodString;
5
+ content: z.ZodString;
6
+ type: z.ZodOptional<z.ZodEnum<["request", "response", "status", "error"]>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ content: string;
9
+ to: string;
10
+ type?: "error" | "status" | "request" | "response" | undefined;
11
+ }, {
12
+ content: string;
13
+ to: string;
14
+ type?: "error" | "status" | "request" | "response" | undefined;
15
+ }>;
16
+ export declare const SendMessageTool: Tool<typeof inputSchema>;
17
+ export {};
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/SendMessageTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,eAAe,CAAC;AAGtD,QAAA,MAAM,WAAW;;;;;;;;;;;;EAIf,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,OAAO,WAAW,CAuBpD,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { getMessageBus } from "../../services/agent-messaging.js";
3
+ const inputSchema = z.object({
4
+ to: z.string().describe("Target agent ID, or '*' for broadcast"),
5
+ content: z.string().describe("Message content"),
6
+ type: z.enum(["request", "response", "status", "error"]).optional(),
7
+ });
8
+ export const SendMessageTool = {
9
+ name: "SendMessage",
10
+ description: "Send a message to another agent. Use for coordination in multi-agent workflows.",
11
+ inputSchema,
12
+ riskLevel: "low",
13
+ isReadOnly() { return true; },
14
+ isConcurrencySafe() { return true; },
15
+ async call(input) {
16
+ const bus = getMessageBus();
17
+ bus.send({
18
+ from: 'lead',
19
+ to: input.to,
20
+ type: input.type ?? 'request',
21
+ content: input.content,
22
+ });
23
+ return { output: `Message sent to ${input.to}`, isError: false };
24
+ },
25
+ prompt() {
26
+ return "SendMessage: Send messages to other agents for coordination. Use to: '*' for broadcast.";
27
+ },
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/SendMessageTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;CACpE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,iFAAiF;IAC9F,WAAW;IACX,SAAS,EAAE,KAAK;IAEhB,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7B,iBAAiB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAC,IAAI,CAAC,KAAK;QACd,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;YAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,mBAAmB,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACnE,CAAC;IAED,MAAM;QACJ,OAAO,yFAAyF,CAAC;IACnG,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolSearchTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,eAAe,CAAC;AAGnE,QAAA,MAAM,WAAW;;;;;;;;;EAGf,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,OAAO,WAAW,CAiDnD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ToolSearchTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,eAAe,CAAC;AAInE,QAAA,MAAM,WAAW;;;;;;;;;EAGf,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,OAAO,WAAW,CAsDnD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { DeferredMcpTool } from "../../mcp/DeferredMcpTool.js";
3
+ import { DeferredTool } from "../../DeferredTool.js";
3
4
  const inputSchema = z.object({
4
5
  query: z.string().describe("Tool name or keyword to search for"),
5
6
  maxResults: z.number().optional().default(5).describe("Maximum results to return"),
@@ -35,6 +36,12 @@ export const ToolSearchTool = {
35
36
  results.push(`${tool.name}: ${tool.description} (schema unavailable)`);
36
37
  }
37
38
  }
39
+ else if (tool instanceof DeferredTool) {
40
+ // Activate deferred built-in tool and return full prompt
41
+ tool.activate();
42
+ const inner = tool.getInner();
43
+ results.push(`${inner.name}: ${inner.prompt()}`);
44
+ }
38
45
  else {
39
46
  results.push(`${tool.name}: ${tool.prompt().slice(0, 200)}`);
40
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ToolSearchTool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,oFAAoF;IACjG,WAAW;IACX,SAAS,EAAE,KAAK;IAEhB,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7B,iBAAiB,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAEpC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAoB;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QAElC,gCAAgC;QAChC,MAAM,OAAO,GAAG,QAAQ;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,CACV,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5C;aACA,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,4BAA4B,KAAK,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACjF,CAAC;QAED,mDAAmD;QACnD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,YAAY,eAAe,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,uBAAuB,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM;QACJ,OAAO;;8DAEmD,CAAC;IAC7D,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ToolSearchTool/index.ts"],"names":[],"mappings":"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"}