@codeany/open-agent-sdk 0.2.1 → 0.2.2

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 (232) hide show
  1. package/.env.example +8 -0
  2. package/examples/01-simple-query.ts +43 -0
  3. package/examples/02-multi-tool.ts +44 -0
  4. package/examples/03-multi-turn.ts +39 -0
  5. package/examples/04-prompt-api.ts +29 -0
  6. package/examples/05-custom-system-prompt.ts +26 -0
  7. package/examples/06-mcp-server.ts +49 -0
  8. package/examples/07-custom-tools.ts +87 -0
  9. package/examples/08-official-api-compat.ts +38 -0
  10. package/examples/09-subagents.ts +48 -0
  11. package/examples/10-permissions.ts +40 -0
  12. package/examples/11-custom-mcp-tools.ts +101 -0
  13. package/examples/12-skills.ts +88 -0
  14. package/examples/13-hooks.ts +88 -0
  15. package/examples/14-openai-compat.ts +71 -0
  16. package/examples/web/index.html +365 -0
  17. package/examples/web/server.ts +157 -0
  18. package/package.json +1 -7
  19. package/src/engine.ts +3 -0
  20. package/tsconfig.json +19 -0
  21. package/dist/agent.d.ts +0 -113
  22. package/dist/agent.d.ts.map +0 -1
  23. package/dist/agent.js +0 -446
  24. package/dist/agent.js.map +0 -1
  25. package/dist/engine.d.ts +0 -62
  26. package/dist/engine.d.ts.map +0 -1
  27. package/dist/engine.js +0 -494
  28. package/dist/engine.js.map +0 -1
  29. package/dist/hooks.d.ts +0 -111
  30. package/dist/hooks.d.ts.map +0 -1
  31. package/dist/hooks.js +0 -179
  32. package/dist/hooks.js.map +0 -1
  33. package/dist/index.d.ts +0 -66
  34. package/dist/index.d.ts.map +0 -1
  35. package/dist/index.js +0 -133
  36. package/dist/index.js.map +0 -1
  37. package/dist/mcp/client.d.ts +0 -19
  38. package/dist/mcp/client.d.ts.map +0 -1
  39. package/dist/mcp/client.js +0 -126
  40. package/dist/mcp/client.js.map +0 -1
  41. package/dist/providers/anthropic.d.ts +0 -17
  42. package/dist/providers/anthropic.d.ts.map +0 -1
  43. package/dist/providers/anthropic.js +0 -47
  44. package/dist/providers/anthropic.js.map +0 -1
  45. package/dist/providers/index.d.ts +0 -20
  46. package/dist/providers/index.d.ts.map +0 -1
  47. package/dist/providers/index.js +0 -26
  48. package/dist/providers/index.js.map +0 -1
  49. package/dist/providers/openai.d.ts +0 -26
  50. package/dist/providers/openai.d.ts.map +0 -1
  51. package/dist/providers/openai.js +0 -212
  52. package/dist/providers/openai.js.map +0 -1
  53. package/dist/providers/types.d.ts +0 -84
  54. package/dist/providers/types.d.ts.map +0 -1
  55. package/dist/providers/types.js +0 -11
  56. package/dist/providers/types.js.map +0 -1
  57. package/dist/sdk-mcp-server.d.ts +0 -52
  58. package/dist/sdk-mcp-server.d.ts.map +0 -1
  59. package/dist/sdk-mcp-server.js +0 -57
  60. package/dist/sdk-mcp-server.js.map +0 -1
  61. package/dist/session.d.ts +0 -73
  62. package/dist/session.d.ts.map +0 -1
  63. package/dist/session.js +0 -159
  64. package/dist/session.js.map +0 -1
  65. package/dist/skills/bundled/commit.d.ts +0 -7
  66. package/dist/skills/bundled/commit.d.ts.map +0 -1
  67. package/dist/skills/bundled/commit.js +0 -35
  68. package/dist/skills/bundled/commit.js.map +0 -1
  69. package/dist/skills/bundled/debug.d.ts +0 -7
  70. package/dist/skills/bundled/debug.d.ts.map +0 -1
  71. package/dist/skills/bundled/debug.js +0 -46
  72. package/dist/skills/bundled/debug.js.map +0 -1
  73. package/dist/skills/bundled/index.d.ts +0 -11
  74. package/dist/skills/bundled/index.d.ts.map +0 -1
  75. package/dist/skills/bundled/index.js +0 -26
  76. package/dist/skills/bundled/index.js.map +0 -1
  77. package/dist/skills/bundled/review.d.ts +0 -7
  78. package/dist/skills/bundled/review.d.ts.map +0 -1
  79. package/dist/skills/bundled/review.js +0 -38
  80. package/dist/skills/bundled/review.js.map +0 -1
  81. package/dist/skills/bundled/simplify.d.ts +0 -8
  82. package/dist/skills/bundled/simplify.d.ts.map +0 -1
  83. package/dist/skills/bundled/simplify.js +0 -48
  84. package/dist/skills/bundled/simplify.js.map +0 -1
  85. package/dist/skills/bundled/test.d.ts +0 -7
  86. package/dist/skills/bundled/test.d.ts.map +0 -1
  87. package/dist/skills/bundled/test.js +0 -40
  88. package/dist/skills/bundled/test.js.map +0 -1
  89. package/dist/skills/index.d.ts +0 -7
  90. package/dist/skills/index.d.ts.map +0 -1
  91. package/dist/skills/index.js +0 -8
  92. package/dist/skills/index.js.map +0 -1
  93. package/dist/skills/registry.d.ts +0 -43
  94. package/dist/skills/registry.d.ts.map +0 -1
  95. package/dist/skills/registry.js +0 -111
  96. package/dist/skills/registry.js.map +0 -1
  97. package/dist/skills/types.d.ts +0 -83
  98. package/dist/skills/types.d.ts.map +0 -1
  99. package/dist/skills/types.js +0 -8
  100. package/dist/skills/types.js.map +0 -1
  101. package/dist/tool-helper.d.ts +0 -73
  102. package/dist/tool-helper.d.ts.map +0 -1
  103. package/dist/tool-helper.js +0 -86
  104. package/dist/tool-helper.js.map +0 -1
  105. package/dist/tools/agent-tool.d.ts +0 -17
  106. package/dist/tools/agent-tool.d.ts.map +0 -1
  107. package/dist/tools/agent-tool.js +0 -146
  108. package/dist/tools/agent-tool.js.map +0 -1
  109. package/dist/tools/ask-user.d.ts +0 -18
  110. package/dist/tools/ask-user.d.ts.map +0 -1
  111. package/dist/tools/ask-user.js +0 -72
  112. package/dist/tools/ask-user.js.map +0 -1
  113. package/dist/tools/bash.d.ts +0 -5
  114. package/dist/tools/bash.d.ts.map +0 -1
  115. package/dist/tools/bash.js +0 -67
  116. package/dist/tools/bash.js.map +0 -1
  117. package/dist/tools/config-tool.d.ts +0 -20
  118. package/dist/tools/config-tool.d.ts.map +0 -1
  119. package/dist/tools/config-tool.js +0 -83
  120. package/dist/tools/config-tool.js.map +0 -1
  121. package/dist/tools/cron-tools.d.ts +0 -33
  122. package/dist/tools/cron-tools.d.ts.map +0 -1
  123. package/dist/tools/cron-tools.js +0 -128
  124. package/dist/tools/cron-tools.js.map +0 -1
  125. package/dist/tools/edit.d.ts +0 -5
  126. package/dist/tools/edit.d.ts.map +0 -1
  127. package/dist/tools/edit.js +0 -70
  128. package/dist/tools/edit.js.map +0 -1
  129. package/dist/tools/glob.d.ts +0 -5
  130. package/dist/tools/glob.d.ts.map +0 -1
  131. package/dist/tools/glob.js +0 -75
  132. package/dist/tools/glob.js.map +0 -1
  133. package/dist/tools/grep.d.ts +0 -5
  134. package/dist/tools/grep.d.ts.map +0 -1
  135. package/dist/tools/grep.js +0 -168
  136. package/dist/tools/grep.js.map +0 -1
  137. package/dist/tools/index.d.ts +0 -45
  138. package/dist/tools/index.d.ts.map +0 -1
  139. package/dist/tools/index.js +0 -162
  140. package/dist/tools/index.js.map +0 -1
  141. package/dist/tools/lsp-tool.d.ts +0 -9
  142. package/dist/tools/lsp-tool.d.ts.map +0 -1
  143. package/dist/tools/lsp-tool.js +0 -137
  144. package/dist/tools/lsp-tool.js.map +0 -1
  145. package/dist/tools/mcp-resource-tools.d.ts +0 -14
  146. package/dist/tools/mcp-resource-tools.d.ts.map +0 -1
  147. package/dist/tools/mcp-resource-tools.js +0 -117
  148. package/dist/tools/mcp-resource-tools.js.map +0 -1
  149. package/dist/tools/notebook-edit.d.ts +0 -5
  150. package/dist/tools/notebook-edit.d.ts.map +0 -1
  151. package/dist/tools/notebook-edit.js +0 -85
  152. package/dist/tools/notebook-edit.js.map +0 -1
  153. package/dist/tools/plan-tools.d.ts +0 -12
  154. package/dist/tools/plan-tools.d.ts.map +0 -1
  155. package/dist/tools/plan-tools.js +0 -77
  156. package/dist/tools/plan-tools.js.map +0 -1
  157. package/dist/tools/read.d.ts +0 -5
  158. package/dist/tools/read.d.ts.map +0 -1
  159. package/dist/tools/read.js +0 -66
  160. package/dist/tools/read.js.map +0 -1
  161. package/dist/tools/send-message.d.ts +0 -31
  162. package/dist/tools/send-message.d.ts.map +0 -1
  163. package/dist/tools/send-message.js +0 -77
  164. package/dist/tools/send-message.js.map +0 -1
  165. package/dist/tools/skill-tool.d.ts +0 -9
  166. package/dist/tools/skill-tool.d.ts.map +0 -1
  167. package/dist/tools/skill-tool.js +0 -115
  168. package/dist/tools/skill-tool.js.map +0 -1
  169. package/dist/tools/task-tools.d.ts +0 -48
  170. package/dist/tools/task-tools.d.ts.map +0 -1
  171. package/dist/tools/task-tools.js +0 -242
  172. package/dist/tools/task-tools.js.map +0 -1
  173. package/dist/tools/team-tools.d.ts +0 -34
  174. package/dist/tools/team-tools.d.ts.map +0 -1
  175. package/dist/tools/team-tools.js +0 -103
  176. package/dist/tools/team-tools.js.map +0 -1
  177. package/dist/tools/todo-tool.d.ts +0 -22
  178. package/dist/tools/todo-tool.d.ts.map +0 -1
  179. package/dist/tools/todo-tool.js +0 -93
  180. package/dist/tools/todo-tool.js.map +0 -1
  181. package/dist/tools/tool-search.d.ts +0 -13
  182. package/dist/tools/tool-search.d.ts.map +0 -1
  183. package/dist/tools/tool-search.js +0 -76
  184. package/dist/tools/tool-search.js.map +0 -1
  185. package/dist/tools/types.d.ts +0 -29
  186. package/dist/tools/types.d.ts.map +0 -1
  187. package/dist/tools/types.js +0 -52
  188. package/dist/tools/types.js.map +0 -1
  189. package/dist/tools/web-fetch.d.ts +0 -5
  190. package/dist/tools/web-fetch.d.ts.map +0 -1
  191. package/dist/tools/web-fetch.js +0 -60
  192. package/dist/tools/web-fetch.js.map +0 -1
  193. package/dist/tools/web-search.d.ts +0 -5
  194. package/dist/tools/web-search.d.ts.map +0 -1
  195. package/dist/tools/web-search.js +0 -77
  196. package/dist/tools/web-search.js.map +0 -1
  197. package/dist/tools/worktree-tools.d.ts +0 -10
  198. package/dist/tools/worktree-tools.d.ts.map +0 -1
  199. package/dist/tools/worktree-tools.js +0 -130
  200. package/dist/tools/worktree-tools.js.map +0 -1
  201. package/dist/tools/write.d.ts +0 -5
  202. package/dist/tools/write.d.ts.map +0 -1
  203. package/dist/tools/write.js +0 -40
  204. package/dist/tools/write.js.map +0 -1
  205. package/dist/types.d.ts +0 -423
  206. package/dist/types.d.ts.map +0 -1
  207. package/dist/types.js +0 -5
  208. package/dist/types.js.map +0 -1
  209. package/dist/utils/compact.d.ts +0 -44
  210. package/dist/utils/compact.d.ts.map +0 -1
  211. package/dist/utils/compact.js +0 -162
  212. package/dist/utils/compact.js.map +0 -1
  213. package/dist/utils/context.d.ts +0 -35
  214. package/dist/utils/context.d.ts.map +0 -1
  215. package/dist/utils/context.js +0 -174
  216. package/dist/utils/context.js.map +0 -1
  217. package/dist/utils/fileCache.d.ts +0 -64
  218. package/dist/utils/fileCache.d.ts.map +0 -1
  219. package/dist/utils/fileCache.js +0 -117
  220. package/dist/utils/fileCache.js.map +0 -1
  221. package/dist/utils/messages.d.ts +0 -57
  222. package/dist/utils/messages.d.ts.map +0 -1
  223. package/dist/utils/messages.js +0 -152
  224. package/dist/utils/messages.js.map +0 -1
  225. package/dist/utils/retry.d.ts +0 -48
  226. package/dist/utils/retry.d.ts.map +0 -1
  227. package/dist/utils/retry.js +0 -111
  228. package/dist/utils/retry.js.map +0 -1
  229. package/dist/utils/tokens.d.ts +0 -57
  230. package/dist/utils/tokens.d.ts.map +0 -1
  231. package/dist/utils/tokens.js +0 -134
  232. package/dist/utils/tokens.js.map +0 -1
@@ -1,146 +0,0 @@
1
- /**
2
- * AgentTool - Spawn subagents for parallel/delegated work
3
- *
4
- * Supports built-in agents (Explore, Plan) and custom agent definitions.
5
- * Agents run as nested query loops with their own context and tool sets.
6
- */
7
- import { QueryEngine } from '../engine.js';
8
- import { getAllBaseTools, filterTools } from './index.js';
9
- import { createProvider } from '../providers/index.js';
10
- // Store for registered agent definitions
11
- let registeredAgents = {};
12
- /**
13
- * Register agent definitions for the AgentTool to use.
14
- */
15
- export function registerAgents(agents) {
16
- registeredAgents = { ...registeredAgents, ...agents };
17
- }
18
- /**
19
- * Clear registered agents.
20
- */
21
- export function clearAgents() {
22
- registeredAgents = {};
23
- }
24
- /**
25
- * Built-in agent definitions.
26
- */
27
- const BUILTIN_AGENTS = {
28
- Explore: {
29
- description: 'Fast agent for exploring codebases. Use for finding files, searching code, and answering questions about the codebase.',
30
- prompt: 'You are a codebase exploration agent. Search through files and code to answer questions. Be thorough but efficient. Use Glob to find files, Grep to search content, and Read to examine files.',
31
- tools: ['Read', 'Glob', 'Grep', 'Bash'],
32
- },
33
- Plan: {
34
- description: 'Software architect agent for designing implementation plans. Returns step-by-step plans and identifies critical files.',
35
- prompt: 'You are a software architect. Design implementation plans for the given task. Identify critical files, consider trade-offs, and provide step-by-step plans. Use search tools to understand the codebase before planning.',
36
- tools: ['Read', 'Glob', 'Grep', 'Bash'],
37
- },
38
- };
39
- export const AgentTool = {
40
- name: 'Agent',
41
- description: 'Launch a subagent to handle complex, multi-step tasks autonomously. Subagents have their own context and can run specialized tool sets.',
42
- inputSchema: {
43
- type: 'object',
44
- properties: {
45
- prompt: {
46
- type: 'string',
47
- description: 'The task for the agent to perform',
48
- },
49
- description: {
50
- type: 'string',
51
- description: 'A short (3-5 word) description of the task',
52
- },
53
- subagent_type: {
54
- type: 'string',
55
- description: 'The type of agent to use (e.g., "Explore", "Plan", or a custom agent name)',
56
- },
57
- model: {
58
- type: 'string',
59
- description: 'Optional model override for this agent',
60
- },
61
- name: {
62
- type: 'string',
63
- description: 'Name for the spawned agent',
64
- },
65
- run_in_background: {
66
- type: 'boolean',
67
- description: 'Whether to run in background',
68
- },
69
- },
70
- required: ['prompt', 'description'],
71
- },
72
- isReadOnly: () => false,
73
- isConcurrencySafe: () => false,
74
- isEnabled: () => true,
75
- async prompt() {
76
- return 'Launch a subagent to handle complex tasks autonomously.';
77
- },
78
- async call(input, context) {
79
- const agentType = input.subagent_type || 'general-purpose';
80
- // Find agent definition
81
- const agentDef = registeredAgents[agentType] || BUILTIN_AGENTS[agentType];
82
- // Determine tools for subagent
83
- let tools = getAllBaseTools();
84
- if (agentDef?.tools) {
85
- tools = filterTools(tools, agentDef.tools);
86
- }
87
- // Remove AgentTool from subagent to prevent infinite recursion
88
- tools = tools.filter(t => t.name !== 'Agent');
89
- // Build system prompt
90
- const systemPrompt = agentDef?.prompt ||
91
- 'You are a helpful assistant. Complete the given task using the available tools.';
92
- // Inherit provider and model from parent agent context, fall back to env vars
93
- const subModel = input.model || context.model || process.env.CODEANY_MODEL || 'claude-sonnet-4-6';
94
- const provider = context.provider ?? createProvider((context.apiType || process.env.CODEANY_API_TYPE) || 'anthropic-messages', {
95
- apiKey: process.env.CODEANY_API_KEY,
96
- baseURL: process.env.CODEANY_BASE_URL,
97
- });
98
- // Create subagent engine
99
- const engine = new QueryEngine({
100
- cwd: context.cwd,
101
- model: subModel,
102
- provider,
103
- tools,
104
- systemPrompt,
105
- maxTurns: agentDef?.maxTurns || 10,
106
- maxTokens: 16384,
107
- canUseTool: async () => ({ behavior: 'allow' }),
108
- includePartialMessages: false,
109
- });
110
- // Run the subagent
111
- let resultText = '';
112
- let toolCalls = [];
113
- try {
114
- for await (const event of engine.submitMessage(input.prompt)) {
115
- if (event.type === 'assistant') {
116
- for (const block of event.message.content) {
117
- if ('text' in block && block.text) {
118
- resultText = block.text;
119
- }
120
- if ('name' in block) {
121
- toolCalls.push(block.name);
122
- }
123
- }
124
- }
125
- }
126
- }
127
- catch (err) {
128
- return {
129
- type: 'tool_result',
130
- tool_use_id: '',
131
- content: `Subagent error: ${err.message}`,
132
- is_error: true,
133
- };
134
- }
135
- const output = resultText || '(Subagent completed with no text output)';
136
- const toolSummary = toolCalls.length > 0
137
- ? `\n[Tools used: ${toolCalls.join(', ')}]`
138
- : '';
139
- return {
140
- type: 'tool_result',
141
- tool_use_id: '',
142
- content: output + toolSummary,
143
- };
144
- },
145
- };
146
- //# sourceMappingURL=agent-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * AskUserQuestionTool - Interactive user questions
3
- *
4
- * In SDK mode, returns a permission_request event and waits
5
- * for the consumer to provide an answer.
6
- * In non-interactive mode, returns a default or denies.
7
- */
8
- import type { ToolDefinition } from '../types.js';
9
- /**
10
- * Set the question handler for AskUserQuestion.
11
- */
12
- export declare function setQuestionHandler(handler: (question: string, options?: string[]) => Promise<string>): void;
13
- /**
14
- * Clear the question handler.
15
- */
16
- export declare function clearQuestionHandler(): void;
17
- export declare const AskUserQuestionTool: ToolDefinition;
18
- //# sourceMappingURL=ask-user.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GACjE,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,eAAO,MAAM,mBAAmB,EAAE,cAiDjC,CAAA"}
@@ -1,72 +0,0 @@
1
- /**
2
- * AskUserQuestionTool - Interactive user questions
3
- *
4
- * In SDK mode, returns a permission_request event and waits
5
- * for the consumer to provide an answer.
6
- * In non-interactive mode, returns a default or denies.
7
- */
8
- // Callback for handling user questions (set by the agent)
9
- let questionHandler = null;
10
- /**
11
- * Set the question handler for AskUserQuestion.
12
- */
13
- export function setQuestionHandler(handler) {
14
- questionHandler = handler;
15
- }
16
- /**
17
- * Clear the question handler.
18
- */
19
- export function clearQuestionHandler() {
20
- questionHandler = null;
21
- }
22
- export const AskUserQuestionTool = {
23
- name: 'AskUserQuestion',
24
- description: 'Ask the user a question and wait for their response. Use when you need clarification or input from the user.',
25
- inputSchema: {
26
- type: 'object',
27
- properties: {
28
- question: { type: 'string', description: 'The question to ask the user' },
29
- options: {
30
- type: 'array',
31
- items: { type: 'string' },
32
- description: 'Optional list of choices for the user',
33
- },
34
- allow_multiselect: {
35
- type: 'boolean',
36
- description: 'Whether to allow multiple selections (for options)',
37
- },
38
- },
39
- required: ['question'],
40
- },
41
- isReadOnly: () => true,
42
- isConcurrencySafe: () => false,
43
- isEnabled: () => true,
44
- async prompt() { return 'Ask the user a question.'; },
45
- async call(input) {
46
- if (questionHandler) {
47
- try {
48
- const answer = await questionHandler(input.question, input.options);
49
- return {
50
- type: 'tool_result',
51
- tool_use_id: '',
52
- content: answer,
53
- };
54
- }
55
- catch (err) {
56
- return {
57
- type: 'tool_result',
58
- tool_use_id: '',
59
- content: `User declined to answer: ${err.message}`,
60
- is_error: true,
61
- };
62
- }
63
- }
64
- // Non-interactive: return informative message
65
- return {
66
- type: 'tool_result',
67
- tool_use_id: '',
68
- content: `[Non-interactive mode] Question: ${input.question}${input.options ? `\nOptions: ${input.options.join(', ')}` : ''}\n\nNo user available to answer. Proceeding with best judgment.`,
69
- };
70
- },
71
- };
72
- //# sourceMappingURL=ask-user.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,0DAA0D;AAC1D,IAAI,eAAe,GAAuE,IAAI,CAAA;AAE9F;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkE;IAElE,eAAe,GAAG,OAAO,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,eAAe,GAAG,IAAI,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,8GAA8G;IAC3H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACzE,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,uCAAuC;aACrD;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oDAAoD;aAClE;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;IACtB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,KAAK,CAAC,MAAM,KAAK,OAAO,0BAA0B,CAAA,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,KAAU;QACnB,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACnE,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,MAAM;iBAChB,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,4BAA4B,GAAG,CAAC,OAAO,EAAE;oBAClD,QAAQ,EAAE,IAAI;iBACf,CAAA;YACH,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,oCAAoC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iEAAiE;SAC7L,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * BashTool - Execute shell commands
3
- */
4
- export declare const BashTool: import("../types.js").ToolDefinition;
5
- //# sourceMappingURL=bash.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,QAAQ,sCAmEnB,CAAA"}
@@ -1,67 +0,0 @@
1
- /**
2
- * BashTool - Execute shell commands
3
- */
4
- import { spawn } from 'child_process';
5
- import { defineTool } from './types.js';
6
- export const BashTool = defineTool({
7
- name: 'Bash',
8
- description: 'Execute a bash command and return its output. Use for running shell commands, scripts, and system operations.',
9
- inputSchema: {
10
- type: 'object',
11
- properties: {
12
- command: {
13
- type: 'string',
14
- description: 'The bash command to execute',
15
- },
16
- timeout: {
17
- type: 'number',
18
- description: 'Optional timeout in milliseconds (max 600000, default 120000)',
19
- },
20
- },
21
- required: ['command'],
22
- },
23
- isReadOnly: false,
24
- isConcurrencySafe: false,
25
- async call(input, context) {
26
- const { command, timeout: userTimeout } = input;
27
- const timeoutMs = Math.min(userTimeout || 120000, 600000);
28
- return new Promise((resolve) => {
29
- const chunks = [];
30
- const errChunks = [];
31
- const proc = spawn('bash', ['-c', command], {
32
- cwd: context.cwd,
33
- env: { ...process.env },
34
- timeout: timeoutMs,
35
- stdio: ['pipe', 'pipe', 'pipe'],
36
- });
37
- proc.stdout?.on('data', (data) => chunks.push(data));
38
- proc.stderr?.on('data', (data) => errChunks.push(data));
39
- if (context.abortSignal) {
40
- context.abortSignal.addEventListener('abort', () => {
41
- proc.kill('SIGTERM');
42
- }, { once: true });
43
- }
44
- proc.on('close', (code) => {
45
- const stdout = Buffer.concat(chunks).toString('utf-8');
46
- const stderr = Buffer.concat(errChunks).toString('utf-8');
47
- let output = '';
48
- if (stdout)
49
- output += stdout;
50
- if (stderr)
51
- output += (output ? '\n' : '') + stderr;
52
- if (code !== 0 && code !== null) {
53
- output += `\nExit code: ${code}`;
54
- }
55
- // Truncate very large outputs
56
- if (output.length > 100000) {
57
- output = output.slice(0, 50000) + '\n...(truncated)...\n' + output.slice(-50000);
58
- }
59
- resolve(output || '(no output)');
60
- });
61
- proc.on('error', (err) => {
62
- resolve(`Error executing command: ${err.message}`);
63
- });
64
- });
65
- },
66
- });
67
- //# sourceMappingURL=bash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * ConfigTool - Dynamic configuration management
3
- *
4
- * Get/set global configuration and session settings.
5
- */
6
- import type { ToolDefinition } from '../types.js';
7
- /**
8
- * Get a config value.
9
- */
10
- export declare function getConfig(key: string): unknown;
11
- /**
12
- * Set a config value.
13
- */
14
- export declare function setConfig(key: string, value: unknown): void;
15
- /**
16
- * Clear all config.
17
- */
18
- export declare function clearConfig(): void;
19
- export declare const ConfigTool: ToolDefinition;
20
- //# sourceMappingURL=config-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-tool.d.ts","sourceRoot":"","sources":["../../src/tools/config-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,eAAO,MAAM,UAAU,EAAE,cAwDxB,CAAA"}
@@ -1,83 +0,0 @@
1
- /**
2
- * ConfigTool - Dynamic configuration management
3
- *
4
- * Get/set global configuration and session settings.
5
- */
6
- // In-memory config store
7
- const configStore = new Map();
8
- /**
9
- * Get a config value.
10
- */
11
- export function getConfig(key) {
12
- return configStore.get(key);
13
- }
14
- /**
15
- * Set a config value.
16
- */
17
- export function setConfig(key, value) {
18
- configStore.set(key, value);
19
- }
20
- /**
21
- * Clear all config.
22
- */
23
- export function clearConfig() {
24
- configStore.clear();
25
- }
26
- export const ConfigTool = {
27
- name: 'Config',
28
- description: 'Get or set configuration values. Supports session-scoped settings.',
29
- inputSchema: {
30
- type: 'object',
31
- properties: {
32
- action: {
33
- type: 'string',
34
- enum: ['get', 'set', 'list'],
35
- description: 'Operation to perform',
36
- },
37
- key: { type: 'string', description: 'Config key' },
38
- value: { description: 'Config value (for set)' },
39
- },
40
- required: ['action'],
41
- },
42
- isReadOnly: () => false,
43
- isConcurrencySafe: () => true,
44
- isEnabled: () => true,
45
- async prompt() { return 'Manage configuration settings.'; },
46
- async call(input) {
47
- switch (input.action) {
48
- case 'get': {
49
- if (!input.key) {
50
- return { type: 'tool_result', tool_use_id: '', content: 'key required for get', is_error: true };
51
- }
52
- const value = configStore.get(input.key);
53
- return {
54
- type: 'tool_result',
55
- tool_use_id: '',
56
- content: value !== undefined ? JSON.stringify(value) : `Config key "${input.key}" not found`,
57
- };
58
- }
59
- case 'set': {
60
- if (!input.key) {
61
- return { type: 'tool_result', tool_use_id: '', content: 'key required for set', is_error: true };
62
- }
63
- configStore.set(input.key, input.value);
64
- return {
65
- type: 'tool_result',
66
- tool_use_id: '',
67
- content: `Config set: ${input.key} = ${JSON.stringify(input.value)}`,
68
- };
69
- }
70
- case 'list': {
71
- const entries = Array.from(configStore.entries());
72
- if (entries.length === 0) {
73
- return { type: 'tool_result', tool_use_id: '', content: 'No config values set.' };
74
- }
75
- const lines = entries.map(([k, v]) => `${k} = ${JSON.stringify(v)}`);
76
- return { type: 'tool_result', tool_use_id: '', content: lines.join('\n') };
77
- }
78
- default:
79
- return { type: 'tool_result', tool_use_id: '', content: `Unknown action: ${input.action}`, is_error: true };
80
- }
81
- },
82
- };
83
- //# sourceMappingURL=config-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-tool.js","sourceRoot":"","sources":["../../src/tools/config-tool.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Cron/Scheduling Tools
3
- *
4
- * CronCreate, CronDelete, CronList - Schedule recurring tasks.
5
- * RemoteTrigger - Manage remote scheduled agent triggers.
6
- */
7
- import type { ToolDefinition } from '../types.js';
8
- /**
9
- * Cron job definition.
10
- */
11
- export interface CronJob {
12
- id: string;
13
- name: string;
14
- schedule: string;
15
- command: string;
16
- enabled: boolean;
17
- createdAt: string;
18
- lastRunAt?: string;
19
- nextRunAt?: string;
20
- }
21
- /**
22
- * Get all cron jobs.
23
- */
24
- export declare function getAllCronJobs(): CronJob[];
25
- /**
26
- * Clear all cron jobs.
27
- */
28
- export declare function clearCronJobs(): void;
29
- export declare const CronCreateTool: ToolDefinition;
30
- export declare const CronDeleteTool: ToolDefinition;
31
- export declare const CronListTool: ToolDefinition;
32
- export declare const RemoteTriggerTool: ToolDefinition;
33
- //# sourceMappingURL=cron-tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-tools.d.ts","sourceRoot":"","sources":["../../src/tools/cron-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAE7D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,eAAO,MAAM,cAAc,EAAE,cAkC5B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAqB5B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,cAkB1B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,cA+B/B,CAAA"}
@@ -1,128 +0,0 @@
1
- /**
2
- * Cron/Scheduling Tools
3
- *
4
- * CronCreate, CronDelete, CronList - Schedule recurring tasks.
5
- * RemoteTrigger - Manage remote scheduled agent triggers.
6
- */
7
- // In-memory cron store
8
- const cronStore = new Map();
9
- let cronCounter = 0;
10
- /**
11
- * Get all cron jobs.
12
- */
13
- export function getAllCronJobs() {
14
- return Array.from(cronStore.values());
15
- }
16
- /**
17
- * Clear all cron jobs.
18
- */
19
- export function clearCronJobs() {
20
- cronStore.clear();
21
- cronCounter = 0;
22
- }
23
- export const CronCreateTool = {
24
- name: 'CronCreate',
25
- description: 'Create a scheduled recurring task (cron job). Supports cron expressions for scheduling.',
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- name: { type: 'string', description: 'Job name' },
30
- schedule: { type: 'string', description: 'Cron expression (e.g., "*/5 * * * *" for every 5 minutes)' },
31
- command: { type: 'string', description: 'Command or prompt to execute' },
32
- },
33
- required: ['name', 'schedule', 'command'],
34
- },
35
- isReadOnly: () => false,
36
- isConcurrencySafe: () => true,
37
- isEnabled: () => true,
38
- async prompt() { return 'Create a scheduled cron job.'; },
39
- async call(input) {
40
- const id = `cron_${++cronCounter}`;
41
- const job = {
42
- id,
43
- name: input.name,
44
- schedule: input.schedule,
45
- command: input.command,
46
- enabled: true,
47
- createdAt: new Date().toISOString(),
48
- };
49
- cronStore.set(id, job);
50
- return {
51
- type: 'tool_result',
52
- tool_use_id: '',
53
- content: `Cron job created: ${id} "${job.name}" schedule="${job.schedule}"`,
54
- };
55
- },
56
- };
57
- export const CronDeleteTool = {
58
- name: 'CronDelete',
59
- description: 'Delete a scheduled cron job.',
60
- inputSchema: {
61
- type: 'object',
62
- properties: {
63
- id: { type: 'string', description: 'Cron job ID to delete' },
64
- },
65
- required: ['id'],
66
- },
67
- isReadOnly: () => false,
68
- isConcurrencySafe: () => true,
69
- isEnabled: () => true,
70
- async prompt() { return 'Delete a cron job.'; },
71
- async call(input) {
72
- if (!cronStore.has(input.id)) {
73
- return { type: 'tool_result', tool_use_id: '', content: `Cron job not found: ${input.id}`, is_error: true };
74
- }
75
- cronStore.delete(input.id);
76
- return { type: 'tool_result', tool_use_id: '', content: `Cron job deleted: ${input.id}` };
77
- },
78
- };
79
- export const CronListTool = {
80
- name: 'CronList',
81
- description: 'List all scheduled cron jobs.',
82
- inputSchema: { type: 'object', properties: {} },
83
- isReadOnly: () => true,
84
- isConcurrencySafe: () => true,
85
- isEnabled: () => true,
86
- async prompt() { return 'List cron jobs.'; },
87
- async call() {
88
- const jobs = getAllCronJobs();
89
- if (jobs.length === 0) {
90
- return { type: 'tool_result', tool_use_id: '', content: 'No cron jobs scheduled.' };
91
- }
92
- const lines = jobs.map(j => `[${j.id}] ${j.enabled ? '✓' : '✗'} "${j.name}" schedule="${j.schedule}" command="${j.command.slice(0, 50)}"`);
93
- return { type: 'tool_result', tool_use_id: '', content: lines.join('\n') };
94
- },
95
- };
96
- export const RemoteTriggerTool = {
97
- name: 'RemoteTrigger',
98
- description: 'Manage remote scheduled agent triggers. Supports list, get, create, update, and run operations.',
99
- inputSchema: {
100
- type: 'object',
101
- properties: {
102
- action: {
103
- type: 'string',
104
- enum: ['list', 'get', 'create', 'update', 'run'],
105
- description: 'Operation to perform',
106
- },
107
- id: { type: 'string', description: 'Trigger ID (for get/update/run)' },
108
- name: { type: 'string', description: 'Trigger name (for create)' },
109
- schedule: { type: 'string', description: 'Cron schedule (for create/update)' },
110
- prompt: { type: 'string', description: 'Agent prompt (for create/update)' },
111
- },
112
- required: ['action'],
113
- },
114
- isReadOnly: () => false,
115
- isConcurrencySafe: () => true,
116
- isEnabled: () => true,
117
- async prompt() { return 'Manage remote agent triggers.'; },
118
- async call(input) {
119
- // RemoteTrigger operations are typically handled by the remote backend
120
- // In standalone SDK mode, we provide a stub implementation
121
- return {
122
- type: 'tool_result',
123
- tool_use_id: '',
124
- content: `RemoteTrigger ${input.action}: This feature requires a connected remote backend. In standalone SDK mode, use CronCreate/CronList/CronDelete for local scheduling.`,
125
- };
126
- },
127
- };
128
- //# sourceMappingURL=cron-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-tools.js","sourceRoot":"","sources":["../../src/tools/cron-tools.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * FileEditTool - Precise string replacement in files
3
- */
4
- export declare const FileEditTool: import("../types.js").ToolDefinition;
5
- //# sourceMappingURL=edit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,YAAY,sCAiEvB,CAAA"}