automatey 0.1.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 (165) hide show
  1. package/.env.defaults +100 -0
  2. package/.env.secret.example +42 -0
  3. package/LICENSE +21 -0
  4. package/README.md +258 -0
  5. package/dist/adapters/index.d.ts +3 -0
  6. package/dist/adapters/index.d.ts.map +1 -0
  7. package/dist/adapters/index.js +3 -0
  8. package/dist/adapters/index.js.map +1 -0
  9. package/dist/adapters/judge-client.d.ts +59 -0
  10. package/dist/adapters/judge-client.d.ts.map +1 -0
  11. package/dist/adapters/judge-client.js +123 -0
  12. package/dist/adapters/judge-client.js.map +1 -0
  13. package/dist/adapters/llm-client.d.ts +54 -0
  14. package/dist/adapters/llm-client.d.ts.map +1 -0
  15. package/dist/adapters/llm-client.js +327 -0
  16. package/dist/adapters/llm-client.js.map +1 -0
  17. package/dist/commands/checkpoint-command.d.ts +3 -0
  18. package/dist/commands/checkpoint-command.d.ts.map +1 -0
  19. package/dist/commands/checkpoint-command.js +105 -0
  20. package/dist/commands/checkpoint-command.js.map +1 -0
  21. package/dist/commands/clear-command.d.ts +3 -0
  22. package/dist/commands/clear-command.d.ts.map +1 -0
  23. package/dist/commands/clear-command.js +11 -0
  24. package/dist/commands/clear-command.js.map +1 -0
  25. package/dist/commands/compact-command.d.ts +3 -0
  26. package/dist/commands/compact-command.d.ts.map +1 -0
  27. package/dist/commands/compact-command.js +20 -0
  28. package/dist/commands/compact-command.js.map +1 -0
  29. package/dist/commands/config-command.d.ts +3 -0
  30. package/dist/commands/config-command.d.ts.map +1 -0
  31. package/dist/commands/config-command.js +28 -0
  32. package/dist/commands/config-command.js.map +1 -0
  33. package/dist/commands/cost-command.d.ts +3 -0
  34. package/dist/commands/cost-command.d.ts.map +1 -0
  35. package/dist/commands/cost-command.js +42 -0
  36. package/dist/commands/cost-command.js.map +1 -0
  37. package/dist/commands/eval-command.d.ts +16 -0
  38. package/dist/commands/eval-command.d.ts.map +1 -0
  39. package/dist/commands/eval-command.js +132 -0
  40. package/dist/commands/eval-command.js.map +1 -0
  41. package/dist/commands/help-command.d.ts +3 -0
  42. package/dist/commands/help-command.d.ts.map +1 -0
  43. package/dist/commands/help-command.js +37 -0
  44. package/dist/commands/help-command.js.map +1 -0
  45. package/dist/commands/index.d.ts +8 -0
  46. package/dist/commands/index.d.ts.map +1 -0
  47. package/dist/commands/index.js +42 -0
  48. package/dist/commands/index.js.map +1 -0
  49. package/dist/commands/load-command.d.ts +3 -0
  50. package/dist/commands/load-command.d.ts.map +1 -0
  51. package/dist/commands/load-command.js +42 -0
  52. package/dist/commands/load-command.js.map +1 -0
  53. package/dist/commands/model-command.d.ts +3 -0
  54. package/dist/commands/model-command.d.ts.map +1 -0
  55. package/dist/commands/model-command.js +42 -0
  56. package/dist/commands/model-command.js.map +1 -0
  57. package/dist/commands/save-command.d.ts +3 -0
  58. package/dist/commands/save-command.d.ts.map +1 -0
  59. package/dist/commands/save-command.js +17 -0
  60. package/dist/commands/save-command.js.map +1 -0
  61. package/dist/commands/servers-command.d.ts +3 -0
  62. package/dist/commands/servers-command.d.ts.map +1 -0
  63. package/dist/commands/servers-command.js +99 -0
  64. package/dist/commands/servers-command.js.map +1 -0
  65. package/dist/commands/think-command.d.ts +3 -0
  66. package/dist/commands/think-command.d.ts.map +1 -0
  67. package/dist/commands/think-command.js +37 -0
  68. package/dist/commands/think-command.js.map +1 -0
  69. package/dist/core/chat-engine.d.ts +54 -0
  70. package/dist/core/chat-engine.d.ts.map +1 -0
  71. package/dist/core/chat-engine.js +528 -0
  72. package/dist/core/chat-engine.js.map +1 -0
  73. package/dist/core/checkpoint-manager.d.ts +50 -0
  74. package/dist/core/checkpoint-manager.d.ts.map +1 -0
  75. package/dist/core/checkpoint-manager.js +173 -0
  76. package/dist/core/checkpoint-manager.js.map +1 -0
  77. package/dist/core/command-parser.d.ts +6 -0
  78. package/dist/core/command-parser.d.ts.map +1 -0
  79. package/dist/core/command-parser.js +14 -0
  80. package/dist/core/command-parser.js.map +1 -0
  81. package/dist/core/compact.d.ts +23 -0
  82. package/dist/core/compact.d.ts.map +1 -0
  83. package/dist/core/compact.js +56 -0
  84. package/dist/core/compact.js.map +1 -0
  85. package/dist/core/config-manager.d.ts +13 -0
  86. package/dist/core/config-manager.d.ts.map +1 -0
  87. package/dist/core/config-manager.js +86 -0
  88. package/dist/core/config-manager.js.map +1 -0
  89. package/dist/core/context-manager.d.ts +17 -0
  90. package/dist/core/context-manager.d.ts.map +1 -0
  91. package/dist/core/context-manager.js +51 -0
  92. package/dist/core/context-manager.js.map +1 -0
  93. package/dist/core/eval-runner.d.ts +110 -0
  94. package/dist/core/eval-runner.d.ts.map +1 -0
  95. package/dist/core/eval-runner.js +177 -0
  96. package/dist/core/eval-runner.js.map +1 -0
  97. package/dist/core/index.d.ts +12 -0
  98. package/dist/core/index.d.ts.map +1 -0
  99. package/dist/core/index.js +11 -0
  100. package/dist/core/index.js.map +1 -0
  101. package/dist/core/interfaces.d.ts +179 -0
  102. package/dist/core/interfaces.d.ts.map +1 -0
  103. package/dist/core/interfaces.js +6 -0
  104. package/dist/core/interfaces.js.map +1 -0
  105. package/dist/core/mcp-client-manager.d.ts +32 -0
  106. package/dist/core/mcp-client-manager.d.ts.map +1 -0
  107. package/dist/core/mcp-client-manager.js +118 -0
  108. package/dist/core/mcp-client-manager.js.map +1 -0
  109. package/dist/core/mcp-config-manager.d.ts +40 -0
  110. package/dist/core/mcp-config-manager.d.ts.map +1 -0
  111. package/dist/core/mcp-config-manager.js +120 -0
  112. package/dist/core/mcp-config-manager.js.map +1 -0
  113. package/dist/core/session-manager.d.ts +16 -0
  114. package/dist/core/session-manager.d.ts.map +1 -0
  115. package/dist/core/session-manager.js +87 -0
  116. package/dist/core/session-manager.js.map +1 -0
  117. package/dist/core/skills-manager.d.ts +49 -0
  118. package/dist/core/skills-manager.d.ts.map +1 -0
  119. package/dist/core/skills-manager.js +175 -0
  120. package/dist/core/skills-manager.js.map +1 -0
  121. package/dist/core/sub-agent.d.ts +23 -0
  122. package/dist/core/sub-agent.d.ts.map +1 -0
  123. package/dist/core/sub-agent.js +98 -0
  124. package/dist/core/sub-agent.js.map +1 -0
  125. package/dist/index.d.ts +11 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +230 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/tui/index.d.ts +2 -0
  130. package/dist/tui/index.d.ts.map +1 -0
  131. package/dist/tui/index.js +3 -0
  132. package/dist/tui/index.js.map +1 -0
  133. package/dist/tui/renderer.d.ts +32 -0
  134. package/dist/tui/renderer.d.ts.map +1 -0
  135. package/dist/tui/renderer.js +225 -0
  136. package/dist/tui/renderer.js.map +1 -0
  137. package/dist/utils/index.d.ts +5 -0
  138. package/dist/utils/index.d.ts.map +1 -0
  139. package/dist/utils/index.js +6 -0
  140. package/dist/utils/index.js.map +1 -0
  141. package/dist/utils/logger.d.ts +19 -0
  142. package/dist/utils/logger.d.ts.map +1 -0
  143. package/dist/utils/logger.js +37 -0
  144. package/dist/utils/logger.js.map +1 -0
  145. package/dist/utils/logo.d.ts +24 -0
  146. package/dist/utils/logo.d.ts.map +1 -0
  147. package/dist/utils/logo.js +119 -0
  148. package/dist/utils/logo.js.map +1 -0
  149. package/dist/utils/message-formatter.d.ts +19 -0
  150. package/dist/utils/message-formatter.d.ts.map +1 -0
  151. package/dist/utils/message-formatter.js +79 -0
  152. package/dist/utils/message-formatter.js.map +1 -0
  153. package/dist/utils/syntax-highlighter.d.ts +6 -0
  154. package/dist/utils/syntax-highlighter.d.ts.map +1 -0
  155. package/dist/utils/syntax-highlighter.js +34 -0
  156. package/dist/utils/syntax-highlighter.js.map +1 -0
  157. package/mcp/coder/dist/server.d.ts +15 -0
  158. package/mcp/coder/dist/server.d.ts.map +1 -0
  159. package/mcp/coder/dist/server.js +421 -0
  160. package/mcp/coder/dist/server.js.map +1 -0
  161. package/mcp/planner/dist/server.d.ts +23 -0
  162. package/mcp/planner/dist/server.d.ts.map +1 -0
  163. package/mcp/planner/dist/server.js +373 -0
  164. package/mcp/planner/dist/server.js.map +1 -0
  165. package/package.json +95 -0
@@ -0,0 +1,373 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Planner MCP Server — stdio MCP server providing todo and planning tools.
4
+ *
5
+ * Tools exposed:
6
+ * Plans:
7
+ * plan_create(title, description?) — Create a new plan
8
+ * plan_list() — List all plans
9
+ * plan_get(plan_id) — Get plan details with steps
10
+ * plan_add_step(plan_id, step) — Add a step to a plan
11
+ * plan_complete_step(plan_id, index) — Mark a step as complete
12
+ * plan_delete(plan_id) — Delete a plan
13
+ *
14
+ * Todos:
15
+ * todo_add(text, priority?) — Add todo (priority: high|medium|low)
16
+ * todo_list(filter?) — List todos (filter: all|open|done)
17
+ * todo_complete(id) — Mark todo as complete
18
+ * todo_delete(id) — Delete a todo
19
+ *
20
+ * Storage: JSON files in ~/.automatey/planner/
21
+ */
22
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
23
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
24
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
25
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
26
+ import os from 'os';
27
+ import path from 'path';
28
+ // ── Storage ──────────────────────────────────────────────────────────────
29
+ const DATA_DIR = process.env['PLANNER_DATA_DIR'] ?? path.join(os.homedir(), '.automatey', 'planner');
30
+ const PLANS_FILE = path.join(DATA_DIR, 'plans.json');
31
+ const TODOS_FILE = path.join(DATA_DIR, 'todos.json');
32
+ function ensureDir() {
33
+ if (!existsSync(DATA_DIR))
34
+ mkdirSync(DATA_DIR, { recursive: true });
35
+ }
36
+ // ── CRUD helpers ──────────────────────────────────────────────────────────
37
+ function loadPlans() {
38
+ ensureDir();
39
+ if (!existsSync(PLANS_FILE))
40
+ return [];
41
+ try {
42
+ return JSON.parse(readFileSync(PLANS_FILE, 'utf8'));
43
+ }
44
+ catch {
45
+ return [];
46
+ }
47
+ }
48
+ function savePlans(plans) {
49
+ ensureDir();
50
+ writeFileSync(PLANS_FILE, JSON.stringify(plans, null, 2));
51
+ }
52
+ function loadTodos() {
53
+ ensureDir();
54
+ if (!existsSync(TODOS_FILE))
55
+ return [];
56
+ try {
57
+ return JSON.parse(readFileSync(TODOS_FILE, 'utf8'));
58
+ }
59
+ catch {
60
+ return [];
61
+ }
62
+ }
63
+ function saveTodos(todos) {
64
+ ensureDir();
65
+ writeFileSync(TODOS_FILE, JSON.stringify(todos, null, 2));
66
+ }
67
+ function genId() {
68
+ return Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
69
+ }
70
+ function now() { return new Date().toISOString(); }
71
+ // ── Tool definitions ──────────────────────────────────────────────────────
72
+ const TOOLS = [
73
+ // ── Plans ──
74
+ {
75
+ name: 'plan_create',
76
+ description: 'Create a new plan with an optional description. Returns the new plan ID.',
77
+ inputSchema: {
78
+ type: 'object',
79
+ properties: {
80
+ title: { type: 'string', description: 'Short title for the plan' },
81
+ description: { type: 'string', description: 'Optional longer description' },
82
+ },
83
+ required: ['title'],
84
+ },
85
+ },
86
+ {
87
+ name: 'plan_list',
88
+ description: 'List all plans with step completion summary.',
89
+ inputSchema: { type: 'object', properties: {} },
90
+ },
91
+ {
92
+ name: 'plan_get',
93
+ description: 'Get full details of a plan including all steps.',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ plan_id: { type: 'string', description: 'Plan ID' },
98
+ },
99
+ required: ['plan_id'],
100
+ },
101
+ },
102
+ {
103
+ name: 'plan_add_step',
104
+ description: 'Append a step to an existing plan.',
105
+ inputSchema: {
106
+ type: 'object',
107
+ properties: {
108
+ plan_id: { type: 'string', description: 'Plan ID' },
109
+ step: { type: 'string', description: 'Step description' },
110
+ },
111
+ required: ['plan_id', 'step'],
112
+ },
113
+ },
114
+ {
115
+ name: 'plan_complete_step',
116
+ description: 'Mark a step in a plan as completed.',
117
+ inputSchema: {
118
+ type: 'object',
119
+ properties: {
120
+ plan_id: { type: 'string', description: 'Plan ID' },
121
+ step_index: { type: 'number', description: 'Zero-based step index' },
122
+ },
123
+ required: ['plan_id', 'step_index'],
124
+ },
125
+ },
126
+ {
127
+ name: 'plan_delete',
128
+ description: 'Delete a plan permanently.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ plan_id: { type: 'string', description: 'Plan ID' },
133
+ },
134
+ required: ['plan_id'],
135
+ },
136
+ },
137
+ // ── Todos ──
138
+ {
139
+ name: 'todo_add',
140
+ description: 'Add a new todo item.',
141
+ inputSchema: {
142
+ type: 'object',
143
+ properties: {
144
+ text: { type: 'string', description: 'Todo text' },
145
+ priority: {
146
+ type: 'string',
147
+ enum: ['high', 'medium', 'low'],
148
+ description: 'Priority level (default: medium)',
149
+ },
150
+ },
151
+ required: ['text'],
152
+ },
153
+ },
154
+ {
155
+ name: 'todo_list',
156
+ description: 'List todos. Filter: all (default), open, done.',
157
+ inputSchema: {
158
+ type: 'object',
159
+ properties: {
160
+ filter: {
161
+ type: 'string',
162
+ enum: ['all', 'open', 'done'],
163
+ description: 'Filter todos (default: all)',
164
+ },
165
+ },
166
+ },
167
+ },
168
+ {
169
+ name: 'todo_complete',
170
+ description: 'Mark a todo as complete.',
171
+ inputSchema: {
172
+ type: 'object',
173
+ properties: {
174
+ id: { type: 'string', description: 'Todo ID' },
175
+ },
176
+ required: ['id'],
177
+ },
178
+ },
179
+ {
180
+ name: 'todo_delete',
181
+ description: 'Delete a todo permanently.',
182
+ inputSchema: {
183
+ type: 'object',
184
+ properties: {
185
+ id: { type: 'string', description: 'Todo ID' },
186
+ },
187
+ required: ['id'],
188
+ },
189
+ },
190
+ ];
191
+ // ── Tool handlers ─────────────────────────────────────────────────────────
192
+ function handlePlanCreate(args) {
193
+ const plans = loadPlans();
194
+ const plan = {
195
+ id: genId(),
196
+ title: args.title,
197
+ description: args.description,
198
+ steps: [],
199
+ createdAt: now(),
200
+ updatedAt: now(),
201
+ };
202
+ plans.push(plan);
203
+ savePlans(plans);
204
+ return `Created plan "${plan.title}" (id: ${plan.id})`;
205
+ }
206
+ function handlePlanList() {
207
+ const plans = loadPlans();
208
+ if (plans.length === 0)
209
+ return 'No plans found.';
210
+ return plans.map(p => {
211
+ const done = p.steps.filter(s => s.completed).length;
212
+ const total = p.steps.length;
213
+ const pct = total > 0 ? `${done}/${total}` : 'no steps';
214
+ return `[${p.id}] ${p.title} (${pct}) — ${p.updatedAt.slice(0, 10)}`;
215
+ }).join('\n');
216
+ }
217
+ function handlePlanGet(args) {
218
+ const plans = loadPlans();
219
+ const plan = plans.find(p => p.id === args.plan_id);
220
+ if (!plan)
221
+ return `Plan not found: ${args.plan_id}`;
222
+ const lines = [
223
+ `Plan: ${plan.title} [${plan.id}]`,
224
+ plan.description ? `Description: ${plan.description}` : '',
225
+ `Created: ${plan.createdAt.slice(0, 10)}`,
226
+ `Steps (${plan.steps.length}):`,
227
+ ...plan.steps.map(s => ` ${s.index + 1}. [${s.completed ? 'x' : ' '}] ${s.text}${s.completedAt ? ' ✓' : ''}`),
228
+ ].filter(Boolean);
229
+ return lines.join('\n');
230
+ }
231
+ function handlePlanAddStep(args) {
232
+ const plans = loadPlans();
233
+ const plan = plans.find(p => p.id === args.plan_id);
234
+ if (!plan)
235
+ return `Plan not found: ${args.plan_id}`;
236
+ const step = {
237
+ index: plan.steps.length,
238
+ text: args.step,
239
+ completed: false,
240
+ };
241
+ plan.steps.push(step);
242
+ plan.updatedAt = now();
243
+ savePlans(plans);
244
+ return `Added step ${step.index + 1} to plan "${plan.title}"`;
245
+ }
246
+ function handlePlanCompleteStep(args) {
247
+ const plans = loadPlans();
248
+ const plan = plans.find(p => p.id === args.plan_id);
249
+ if (!plan)
250
+ return `Plan not found: ${args.plan_id}`;
251
+ const step = plan.steps[args.step_index];
252
+ if (!step)
253
+ return `Step ${args.step_index} not found in plan "${plan.title}"`;
254
+ step.completed = true;
255
+ step.completedAt = now();
256
+ plan.updatedAt = now();
257
+ savePlans(plans);
258
+ const done = plan.steps.filter(s => s.completed).length;
259
+ return `Completed step ${args.step_index + 1} — "${step.text}" (${done}/${plan.steps.length} done)`;
260
+ }
261
+ function handlePlanDelete(args) {
262
+ const plans = loadPlans();
263
+ const idx = plans.findIndex(p => p.id === args.plan_id);
264
+ if (idx === -1)
265
+ return `Plan not found: ${args.plan_id}`;
266
+ const [removed] = plans.splice(idx, 1);
267
+ savePlans(plans);
268
+ return `Deleted plan "${removed.title}"`;
269
+ }
270
+ function handleTodoAdd(args) {
271
+ const todos = loadTodos();
272
+ const todo = {
273
+ id: genId(),
274
+ text: args.text,
275
+ priority: args.priority ?? 'medium',
276
+ completed: false,
277
+ createdAt: now(),
278
+ };
279
+ todos.push(todo);
280
+ saveTodos(todos);
281
+ return `Added todo [${todo.id}] (${todo.priority}): ${todo.text}`;
282
+ }
283
+ function handleTodoList(args) {
284
+ const todos = loadTodos();
285
+ const filter = args.filter ?? 'all';
286
+ const filtered = filter === 'open'
287
+ ? todos.filter(t => !t.completed)
288
+ : filter === 'done'
289
+ ? todos.filter(t => t.completed)
290
+ : todos;
291
+ if (filtered.length === 0)
292
+ return `No todos found (filter: ${filter})`;
293
+ return filtered.map(t => {
294
+ const status = t.completed ? '[x]' : '[ ]';
295
+ const pri = { high: '🔴', medium: '🟡', low: '🟢' }[t.priority];
296
+ return `${status} ${pri} [${t.id}] ${t.text}`;
297
+ }).join('\n');
298
+ }
299
+ function handleTodoComplete(args) {
300
+ const todos = loadTodos();
301
+ const todo = todos.find(t => t.id === args.id);
302
+ if (!todo)
303
+ return `Todo not found: ${args.id}`;
304
+ if (todo.completed)
305
+ return `Todo already completed: "${todo.text}"`;
306
+ todo.completed = true;
307
+ todo.completedAt = now();
308
+ saveTodos(todos);
309
+ return `Completed: "${todo.text}"`;
310
+ }
311
+ function handleTodoDelete(args) {
312
+ const todos = loadTodos();
313
+ const idx = todos.findIndex(t => t.id === args.id);
314
+ if (idx === -1)
315
+ return `Todo not found: ${args.id}`;
316
+ const [removed] = todos.splice(idx, 1);
317
+ saveTodos(todos);
318
+ return `Deleted todo: "${removed.text}"`;
319
+ }
320
+ // ── Server setup ──────────────────────────────────────────────────────────
321
+ const server = new Server({ name: 'planner', version: '1.0.0' }, { capabilities: { tools: {} } });
322
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
323
+ tools: TOOLS,
324
+ }));
325
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
326
+ const { name, arguments: args = {} } = request.params;
327
+ try {
328
+ let result;
329
+ switch (name) {
330
+ case 'plan_create':
331
+ result = handlePlanCreate(args);
332
+ break;
333
+ case 'plan_list':
334
+ result = handlePlanList();
335
+ break;
336
+ case 'plan_get':
337
+ result = handlePlanGet(args);
338
+ break;
339
+ case 'plan_add_step':
340
+ result = handlePlanAddStep(args);
341
+ break;
342
+ case 'plan_complete_step':
343
+ result = handlePlanCompleteStep(args);
344
+ break;
345
+ case 'plan_delete':
346
+ result = handlePlanDelete(args);
347
+ break;
348
+ case 'todo_add':
349
+ result = handleTodoAdd(args);
350
+ break;
351
+ case 'todo_list':
352
+ result = handleTodoList(args);
353
+ break;
354
+ case 'todo_complete':
355
+ result = handleTodoComplete(args);
356
+ break;
357
+ case 'todo_delete':
358
+ result = handleTodoDelete(args);
359
+ break;
360
+ default:
361
+ return { content: [{ type: 'text', text: `Unknown tool: ${name}` }], isError: true };
362
+ }
363
+ return { content: [{ type: 'text', text: result }] };
364
+ }
365
+ catch (error) {
366
+ const msg = error instanceof Error ? error.message : String(error);
367
+ return { content: [{ type: 'text', text: `Error: ${msg}` }], isError: true };
368
+ }
369
+ });
370
+ // ── Start ─────────────────────────────────────────────────────────────────
371
+ const transport = new StdioServerTransport();
372
+ await server.connect(transport);
373
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "automatey",
3
+ "version": "0.1.0",
4
+ "description": "Lean & mean MCP-powered CLI agent — Nemotron, OpenAI, Anthropic, Perplexity",
5
+ "keywords": [
6
+ "ai",
7
+ "agent",
8
+ "mcp",
9
+ "cli",
10
+ "llm",
11
+ "openai",
12
+ "anthropic",
13
+ "perplexity",
14
+ "nemotron",
15
+ "automatey"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/automatey-org/automatey.git"
20
+ },
21
+ "homepage": "https://github.com/automatey-org/automatey#readme",
22
+ "files": [
23
+ "dist/",
24
+ "mcp/planner/dist/",
25
+ "mcp/coder/dist/",
26
+ "README.md",
27
+ "LICENSE",
28
+ ".env.defaults",
29
+ ".env.secret.example",
30
+ "mcp.json.example"
31
+ ],
32
+ "type": "module",
33
+ "bin": {
34
+ "automatey": "./dist/index.js"
35
+ },
36
+ "imports": {
37
+ "#core": "./dist/core/index.js",
38
+ "#core/*": "./dist/core/*.js",
39
+ "#commands": "./dist/commands/index.js",
40
+ "#commands/*": "./dist/commands/*.js",
41
+ "#adapters": "./dist/adapters/index.js",
42
+ "#adapters/*": "./dist/adapters/*.js",
43
+ "#utils": "./dist/utils/index.js",
44
+ "#utils/*": "./dist/utils/*.js",
45
+ "#tui": "./dist/tui/index.js",
46
+ "#tui/*": "./dist/tui/*.js"
47
+ },
48
+ "license": "MIT",
49
+ "scripts": {
50
+ "build": "tsc && npm run build:planner && npm run build:coder",
51
+ "build:planner": "npm run build --prefix mcp/planner",
52
+ "build:coder": "npm run build --prefix mcp/coder",
53
+ "dev": "tsx src/index.ts",
54
+ "start": "node dist/index.js",
55
+ "link:cli": "npm link",
56
+ "unlink:cli": "npm unlink -g automatey",
57
+ "type-check": "tsc --noEmit",
58
+ "lint": "eslint src --ext .ts",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest",
61
+ "test:coverage": "vitest run --coverage",
62
+ "test:integration": "vitest run tests/integration",
63
+ "test:tools": "vitest run tests/integration/openai.test.ts -t 'handles tool calls'",
64
+ "test:providers": "vitest run tests/providers/",
65
+ "dist:docker": "bash distro/docker/build.sh",
66
+ "dist:pkg": "bash distro/pkg/build.sh",
67
+ "dist:bun": "bash distro/bun/build.sh",
68
+ "dist:npm:preflight": "bash distro/npm/preflight.sh",
69
+ "dist:npm:publish": "bash distro/npm/publish.sh",
70
+ "release": "bash scripts/release.sh"
71
+ },
72
+ "dependencies": {
73
+ "@ai-sdk/anthropic": "^3.0.38",
74
+ "@ai-sdk/openai": "^3.0.26",
75
+ "@ai-sdk/openai-compatible": "^2.0.36",
76
+ "@ai-sdk/perplexity": "^3.0.24",
77
+ "@modelcontextprotocol/sdk": "^1.25.3",
78
+ "ai": "^6.0.121",
79
+ "chalk": "^5.4.1",
80
+ "commander": "^14.0.2",
81
+ "conf": "^13.1.0",
82
+ "marked": "^15.0.12",
83
+ "marked-terminal": "^7.3.0",
84
+ "undici": "^7.4.0",
85
+ "winston": "^3.19.0"
86
+ },
87
+ "devDependencies": {
88
+ "@types/node": "^22.0.0",
89
+ "@vitest/coverage-v8": "^3.0.0",
90
+ "dotenv": "^16.0.0",
91
+ "tsx": "^4.21.0",
92
+ "typescript": "^5.9.3",
93
+ "vitest": "^3.0.0"
94
+ }
95
+ }