@aiyou-dev/cli 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 (179) hide show
  1. package/bin/aiyoucli-mcp.js +7 -0
  2. package/bin/aiyoucli.js +29 -0
  3. package/dist/commands/index.d.ts +9 -0
  4. package/dist/commands/index.d.ts.map +1 -0
  5. package/dist/commands/index.js +968 -0
  6. package/dist/commands/index.js.map +1 -0
  7. package/dist/config.d.ts +6 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +99 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/index.d.ts +18 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +149 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/init/agentsmd-generator.d.ts +13 -0
  16. package/dist/init/agentsmd-generator.d.ts.map +1 -0
  17. package/dist/init/agentsmd-generator.js +138 -0
  18. package/dist/init/agentsmd-generator.js.map +1 -0
  19. package/dist/init/interactive.d.ts +6 -0
  20. package/dist/init/interactive.d.ts.map +1 -0
  21. package/dist/init/interactive.js +288 -0
  22. package/dist/init/interactive.js.map +1 -0
  23. package/dist/init/settings-generator.d.ts +17 -0
  24. package/dist/init/settings-generator.d.ts.map +1 -0
  25. package/dist/init/settings-generator.js +132 -0
  26. package/dist/init/settings-generator.js.map +1 -0
  27. package/dist/mcp/client.d.ts +27 -0
  28. package/dist/mcp/client.d.ts.map +1 -0
  29. package/dist/mcp/client.js +93 -0
  30. package/dist/mcp/client.js.map +1 -0
  31. package/dist/mcp/server.d.ts +8 -0
  32. package/dist/mcp/server.d.ts.map +1 -0
  33. package/dist/mcp/server.js +74 -0
  34. package/dist/mcp/server.js.map +1 -0
  35. package/dist/mcp/tools/agent-tools.d.ts +6 -0
  36. package/dist/mcp/tools/agent-tools.d.ts.map +1 -0
  37. package/dist/mcp/tools/agent-tools.js +196 -0
  38. package/dist/mcp/tools/agent-tools.js.map +1 -0
  39. package/dist/mcp/tools/analyze-tools.d.ts +6 -0
  40. package/dist/mcp/tools/analyze-tools.d.ts.map +1 -0
  41. package/dist/mcp/tools/analyze-tools.js +49 -0
  42. package/dist/mcp/tools/analyze-tools.js.map +1 -0
  43. package/dist/mcp/tools/config-tools.d.ts +6 -0
  44. package/dist/mcp/tools/config-tools.d.ts.map +1 -0
  45. package/dist/mcp/tools/config-tools.js +69 -0
  46. package/dist/mcp/tools/config-tools.js.map +1 -0
  47. package/dist/mcp/tools/coordination-tools.d.ts +6 -0
  48. package/dist/mcp/tools/coordination-tools.d.ts.map +1 -0
  49. package/dist/mcp/tools/coordination-tools.js +44 -0
  50. package/dist/mcp/tools/coordination-tools.js.map +1 -0
  51. package/dist/mcp/tools/distiller-tools.d.ts +7 -0
  52. package/dist/mcp/tools/distiller-tools.d.ts.map +1 -0
  53. package/dist/mcp/tools/distiller-tools.js +50 -0
  54. package/dist/mcp/tools/distiller-tools.js.map +1 -0
  55. package/dist/mcp/tools/gcc-tools.d.ts +6 -0
  56. package/dist/mcp/tools/gcc-tools.d.ts.map +1 -0
  57. package/dist/mcp/tools/gcc-tools.js +37 -0
  58. package/dist/mcp/tools/gcc-tools.js.map +1 -0
  59. package/dist/mcp/tools/hooks-tools.d.ts +7 -0
  60. package/dist/mcp/tools/hooks-tools.d.ts.map +1 -0
  61. package/dist/mcp/tools/hooks-tools.js +125 -0
  62. package/dist/mcp/tools/hooks-tools.js.map +1 -0
  63. package/dist/mcp/tools/index.d.ts +5 -0
  64. package/dist/mcp/tools/index.d.ts.map +1 -0
  65. package/dist/mcp/tools/index.js +43 -0
  66. package/dist/mcp/tools/index.js.map +1 -0
  67. package/dist/mcp/tools/memory-tools.d.ts +7 -0
  68. package/dist/mcp/tools/memory-tools.d.ts.map +1 -0
  69. package/dist/mcp/tools/memory-tools.js +153 -0
  70. package/dist/mcp/tools/memory-tools.js.map +1 -0
  71. package/dist/mcp/tools/metrics-tools.d.ts +6 -0
  72. package/dist/mcp/tools/metrics-tools.d.ts.map +1 -0
  73. package/dist/mcp/tools/metrics-tools.js +126 -0
  74. package/dist/mcp/tools/metrics-tools.js.map +1 -0
  75. package/dist/mcp/tools/neural-tools.d.ts +11 -0
  76. package/dist/mcp/tools/neural-tools.d.ts.map +1 -0
  77. package/dist/mcp/tools/neural-tools.js +68 -0
  78. package/dist/mcp/tools/neural-tools.js.map +1 -0
  79. package/dist/mcp/tools/performance-tools.d.ts +6 -0
  80. package/dist/mcp/tools/performance-tools.d.ts.map +1 -0
  81. package/dist/mcp/tools/performance-tools.js +54 -0
  82. package/dist/mcp/tools/performance-tools.js.map +1 -0
  83. package/dist/mcp/tools/security-tools.d.ts +6 -0
  84. package/dist/mcp/tools/security-tools.d.ts.map +1 -0
  85. package/dist/mcp/tools/security-tools.js +51 -0
  86. package/dist/mcp/tools/security-tools.js.map +1 -0
  87. package/dist/mcp/tools/session-tools.d.ts +6 -0
  88. package/dist/mcp/tools/session-tools.d.ts.map +1 -0
  89. package/dist/mcp/tools/session-tools.js +85 -0
  90. package/dist/mcp/tools/session-tools.js.map +1 -0
  91. package/dist/mcp/tools/skills-tools.d.ts +9 -0
  92. package/dist/mcp/tools/skills-tools.d.ts.map +1 -0
  93. package/dist/mcp/tools/skills-tools.js +167 -0
  94. package/dist/mcp/tools/skills-tools.js.map +1 -0
  95. package/dist/mcp/tools/statusline-tools.d.ts +6 -0
  96. package/dist/mcp/tools/statusline-tools.d.ts.map +1 -0
  97. package/dist/mcp/tools/statusline-tools.js +26 -0
  98. package/dist/mcp/tools/statusline-tools.js.map +1 -0
  99. package/dist/mcp/tools/swarm-tools.d.ts +6 -0
  100. package/dist/mcp/tools/swarm-tools.d.ts.map +1 -0
  101. package/dist/mcp/tools/swarm-tools.js +75 -0
  102. package/dist/mcp/tools/swarm-tools.js.map +1 -0
  103. package/dist/mcp/tools/system-tools.d.ts +6 -0
  104. package/dist/mcp/tools/system-tools.d.ts.map +1 -0
  105. package/dist/mcp/tools/system-tools.js +68 -0
  106. package/dist/mcp/tools/system-tools.js.map +1 -0
  107. package/dist/mcp/tools/task-tools.d.ts +6 -0
  108. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  109. package/dist/mcp/tools/task-tools.js +102 -0
  110. package/dist/mcp/tools/task-tools.js.map +1 -0
  111. package/dist/mcp/types.d.ts +19 -0
  112. package/dist/mcp/types.d.ts.map +1 -0
  113. package/dist/mcp/types.js +5 -0
  114. package/dist/mcp/types.js.map +1 -0
  115. package/dist/metrics/benchmark.d.ts +95 -0
  116. package/dist/metrics/benchmark.d.ts.map +1 -0
  117. package/dist/metrics/benchmark.js +195 -0
  118. package/dist/metrics/benchmark.js.map +1 -0
  119. package/dist/metrics/builtin-benchmarks.d.ts +9 -0
  120. package/dist/metrics/builtin-benchmarks.d.ts.map +1 -0
  121. package/dist/metrics/builtin-benchmarks.js +171 -0
  122. package/dist/metrics/builtin-benchmarks.js.map +1 -0
  123. package/dist/metrics/collector.d.ts +89 -0
  124. package/dist/metrics/collector.d.ts.map +1 -0
  125. package/dist/metrics/collector.js +181 -0
  126. package/dist/metrics/collector.js.map +1 -0
  127. package/dist/napi/index.d.ts +159 -0
  128. package/dist/napi/index.d.ts.map +1 -0
  129. package/dist/napi/index.js +111 -0
  130. package/dist/napi/index.js.map +1 -0
  131. package/dist/output.d.ts +44 -0
  132. package/dist/output.d.ts.map +1 -0
  133. package/dist/output.js +138 -0
  134. package/dist/output.js.map +1 -0
  135. package/dist/parser.d.ts +12 -0
  136. package/dist/parser.d.ts.map +1 -0
  137. package/dist/parser.js +135 -0
  138. package/dist/parser.js.map +1 -0
  139. package/dist/production/circuit-breaker.d.ts +31 -0
  140. package/dist/production/circuit-breaker.d.ts.map +1 -0
  141. package/dist/production/circuit-breaker.js +87 -0
  142. package/dist/production/circuit-breaker.js.map +1 -0
  143. package/dist/production/error-handler.d.ts +13 -0
  144. package/dist/production/error-handler.d.ts.map +1 -0
  145. package/dist/production/error-handler.js +52 -0
  146. package/dist/production/error-handler.js.map +1 -0
  147. package/dist/production/index.d.ts +9 -0
  148. package/dist/production/index.d.ts.map +1 -0
  149. package/dist/production/index.js +5 -0
  150. package/dist/production/index.js.map +1 -0
  151. package/dist/production/rate-limiter.d.ts +22 -0
  152. package/dist/production/rate-limiter.d.ts.map +1 -0
  153. package/dist/production/rate-limiter.js +44 -0
  154. package/dist/production/rate-limiter.js.map +1 -0
  155. package/dist/production/retry.d.ts +9 -0
  156. package/dist/production/retry.d.ts.map +1 -0
  157. package/dist/production/retry.js +32 -0
  158. package/dist/production/retry.js.map +1 -0
  159. package/dist/services/worker-daemon.d.ts +44 -0
  160. package/dist/services/worker-daemon.d.ts.map +1 -0
  161. package/dist/services/worker-daemon.js +99 -0
  162. package/dist/services/worker-daemon.js.map +1 -0
  163. package/dist/services/worker-queue.d.ts +38 -0
  164. package/dist/services/worker-queue.d.ts.map +1 -0
  165. package/dist/services/worker-queue.js +86 -0
  166. package/dist/services/worker-queue.js.map +1 -0
  167. package/dist/statusline/generator.d.ts +12 -0
  168. package/dist/statusline/generator.d.ts.map +1 -0
  169. package/dist/statusline/generator.js +361 -0
  170. package/dist/statusline/generator.js.map +1 -0
  171. package/dist/suggest.d.ts +5 -0
  172. package/dist/suggest.d.ts.map +1 -0
  173. package/dist/suggest.js +40 -0
  174. package/dist/suggest.js.map +1 -0
  175. package/dist/types.d.ts +112 -0
  176. package/dist/types.d.ts.map +1 -0
  177. package/dist/types.js +23 -0
  178. package/dist/types.js.map +1 -0
  179. package/package.json +64 -0
@@ -0,0 +1,74 @@
1
+ /**
2
+ * MCP stdio server — JSON-RPC 2.0 over stdin/stdout.
3
+ *
4
+ * This is the primary API surface that Claude Code and other MCP clients
5
+ * use to communicate with aiyoucli.
6
+ */
7
+ import { createInterface } from "node:readline";
8
+ import { registry } from "./client.js";
9
+ import { registerAllTools } from "./tools/index.js";
10
+ function send(response) {
11
+ process.stdout.write(JSON.stringify(response) + "\n");
12
+ }
13
+ export function startMCPServer() {
14
+ // Register all tool modules on startup
15
+ registerAllTools();
16
+ const rl = createInterface({ input: process.stdin, terminal: false });
17
+ rl.on("line", (line) => {
18
+ const trimmed = line.trim();
19
+ if (!trimmed)
20
+ return;
21
+ let request;
22
+ try {
23
+ request = JSON.parse(trimmed);
24
+ }
25
+ catch {
26
+ send({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } });
27
+ return;
28
+ }
29
+ handleRequest(request);
30
+ });
31
+ rl.on("close", () => process.exit(0));
32
+ }
33
+ async function handleRequest(request) {
34
+ const { method, id, params } = request;
35
+ switch (method) {
36
+ case "initialize":
37
+ send({
38
+ jsonrpc: "2.0",
39
+ id: id ?? null,
40
+ result: {
41
+ protocolVersion: "2024-11-05",
42
+ capabilities: { tools: {} },
43
+ serverInfo: { name: "aiyoucli", version: "0.1.0" },
44
+ },
45
+ });
46
+ break;
47
+ case "notifications/initialized":
48
+ break;
49
+ case "ping":
50
+ send({ jsonrpc: "2.0", id: id ?? null, result: {} });
51
+ break;
52
+ case "tools/list":
53
+ send({
54
+ jsonrpc: "2.0",
55
+ id: id ?? null,
56
+ result: { tools: registry.listForMCP() },
57
+ });
58
+ break;
59
+ case "tools/call": {
60
+ const toolName = params?.name ?? "";
61
+ const toolArgs = params?.arguments ?? {};
62
+ const result = await registry.call(toolName, toolArgs);
63
+ send({ jsonrpc: "2.0", id: id ?? null, result });
64
+ break;
65
+ }
66
+ default:
67
+ send({
68
+ jsonrpc: "2.0",
69
+ id: id ?? null,
70
+ error: { code: -32601, message: `Method not found: ${method}` },
71
+ });
72
+ }
73
+ }
74
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Agent tools — lifecycle management for AI agents with metrics tracking.
3
+ */
4
+ import type { MCPTool } from "../../types.js";
5
+ export declare const agentTools: MCPTool[];
6
+ //# sourceMappingURL=agent-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agent-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AA+D7D,eAAO,MAAM,UAAU,EAAE,OAAO,EAsK/B,CAAC"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Agent tools — lifecycle management for AI agents with metrics tracking.
3
+ */
4
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ const STORE_DIR = join(process.cwd(), ".aiyoucli", "agents");
7
+ const STORE_FILE = join(STORE_DIR, "store.json");
8
+ function emptyMetrics() {
9
+ return {
10
+ tasksCompleted: 0,
11
+ tasksSucceeded: 0,
12
+ tasksFailed: 0,
13
+ totalDurationMs: 0,
14
+ avgDurationMs: 0,
15
+ lastActiveAt: null,
16
+ };
17
+ }
18
+ function loadStore() {
19
+ if (!existsSync(STORE_FILE))
20
+ return [];
21
+ try {
22
+ const agents = JSON.parse(readFileSync(STORE_FILE, "utf-8"));
23
+ // Backfill metrics for agents created before metrics existed
24
+ for (const agent of agents) {
25
+ if (!agent.metrics)
26
+ agent.metrics = emptyMetrics();
27
+ }
28
+ return agents;
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ function saveStore(agents) {
35
+ mkdirSync(STORE_DIR, { recursive: true });
36
+ writeFileSync(STORE_FILE, JSON.stringify(agents, null, 2));
37
+ }
38
+ function text(t) { return { content: [{ type: "text", text: t }] }; }
39
+ function json(d) { return { content: [{ type: "text", text: JSON.stringify(d, null, 2) }] }; }
40
+ const MODEL_DEFAULTS = {
41
+ coder: "sonnet", researcher: "sonnet", tester: "haiku",
42
+ reviewer: "sonnet", architect: "opus", security: "opus",
43
+ debugger: "sonnet", documenter: "haiku",
44
+ };
45
+ export const agentTools = [
46
+ {
47
+ name: "agent_spawn",
48
+ description: "Spawn a new AI agent with a given type and optional name",
49
+ inputSchema: {
50
+ type: "object",
51
+ properties: {
52
+ type: { type: "string", description: "Agent type: coder, researcher, tester, reviewer, architect, security, debugger, documenter" },
53
+ name: { type: "string", description: "Optional agent name" },
54
+ model: { type: "string", description: "Model override: haiku, sonnet, opus" },
55
+ },
56
+ required: ["type"],
57
+ },
58
+ handler: async (input) => {
59
+ const agentType = input.type || "coder";
60
+ const name = input.name || `${agentType}-${Date.now().toString(36)}`;
61
+ const model = input.model || MODEL_DEFAULTS[agentType] || "sonnet";
62
+ const id = `agent-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
63
+ const agent = {
64
+ id, type: agentType, name, status: "idle", model, createdAt: Date.now(),
65
+ metrics: emptyMetrics(),
66
+ };
67
+ const agents = loadStore();
68
+ agents.push(agent);
69
+ saveStore(agents);
70
+ return json({ id, type: agentType, name, model, status: "idle" });
71
+ },
72
+ },
73
+ {
74
+ name: "agent_list",
75
+ description: "List all active agents with their metrics",
76
+ inputSchema: { type: "object", properties: {} },
77
+ handler: async () => {
78
+ const agents = loadStore().filter((a) => a.status !== "stopped");
79
+ return json(agents);
80
+ },
81
+ },
82
+ {
83
+ name: "agent_status",
84
+ description: "Get status and metrics of a specific agent",
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: { id: { type: "string", description: "Agent ID" } },
88
+ required: ["id"],
89
+ },
90
+ handler: async (input) => {
91
+ const agent = loadStore().find((a) => a.id === input.id);
92
+ return agent ? json(agent) : text(`Agent not found: ${input.id}`);
93
+ },
94
+ },
95
+ {
96
+ name: "agent_stop",
97
+ description: "Stop an agent by ID",
98
+ inputSchema: {
99
+ type: "object",
100
+ properties: { id: { type: "string", description: "Agent ID" } },
101
+ required: ["id"],
102
+ },
103
+ handler: async (input) => {
104
+ const agents = loadStore();
105
+ const agent = agents.find((a) => a.id === input.id);
106
+ if (!agent)
107
+ return text(`Agent not found: ${input.id}`);
108
+ agent.status = "stopped";
109
+ saveStore(agents);
110
+ return text(`Stopped agent: ${agent.name} (${agent.id})`);
111
+ },
112
+ },
113
+ {
114
+ name: "agent_record",
115
+ description: "Record a task outcome for an agent (updates metrics: success/fail count, duration)",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {
119
+ id: { type: "string", description: "Agent ID" },
120
+ success: { type: "boolean", description: "Whether the task succeeded" },
121
+ duration_ms: { type: "number", description: "Task duration in milliseconds" },
122
+ },
123
+ required: ["id", "success"],
124
+ },
125
+ handler: async (input) => {
126
+ const agents = loadStore();
127
+ const agent = agents.find((a) => a.id === input.id);
128
+ if (!agent)
129
+ return text(`Agent not found: ${input.id}`);
130
+ const success = input.success;
131
+ const durationMs = input.duration_ms ?? 0;
132
+ agent.metrics.tasksCompleted++;
133
+ if (success) {
134
+ agent.metrics.tasksSucceeded++;
135
+ }
136
+ else {
137
+ agent.metrics.tasksFailed++;
138
+ }
139
+ agent.metrics.totalDurationMs += durationMs;
140
+ agent.metrics.avgDurationMs = Math.round(agent.metrics.totalDurationMs / agent.metrics.tasksCompleted);
141
+ agent.metrics.lastActiveAt = Date.now();
142
+ saveStore(agents);
143
+ const rate = agent.metrics.tasksCompleted > 0
144
+ ? Math.round((agent.metrics.tasksSucceeded / agent.metrics.tasksCompleted) * 100)
145
+ : 0;
146
+ return json({
147
+ agent: agent.name,
148
+ tasksCompleted: agent.metrics.tasksCompleted,
149
+ successRate: `${rate}%`,
150
+ avgDurationMs: agent.metrics.avgDurationMs,
151
+ });
152
+ },
153
+ },
154
+ {
155
+ name: "agent_metrics",
156
+ description: "Get aggregated metrics across all agents",
157
+ inputSchema: { type: "object", properties: {} },
158
+ handler: async () => {
159
+ const agents = loadStore().filter((a) => a.status !== "stopped");
160
+ const summary = {
161
+ totalAgents: agents.length,
162
+ totalTasks: 0,
163
+ totalSucceeded: 0,
164
+ totalFailed: 0,
165
+ overallSuccessRate: "0%",
166
+ byType: {},
167
+ };
168
+ for (const agent of agents) {
169
+ summary.totalTasks += agent.metrics.tasksCompleted;
170
+ summary.totalSucceeded += agent.metrics.tasksSucceeded;
171
+ summary.totalFailed += agent.metrics.tasksFailed;
172
+ const entry = summary.byType[agent.type] ??= {
173
+ count: 0, tasks: 0, successRate: "0%", avgDurationMs: 0,
174
+ };
175
+ entry.count++;
176
+ entry.tasks += agent.metrics.tasksCompleted;
177
+ entry.avgDurationMs += agent.metrics.avgDurationMs;
178
+ }
179
+ if (summary.totalTasks > 0) {
180
+ summary.overallSuccessRate = `${Math.round((summary.totalSucceeded / summary.totalTasks) * 100)}%`;
181
+ }
182
+ for (const [, entry] of Object.entries(summary.byType)) {
183
+ if (entry.count > 0)
184
+ entry.avgDurationMs = Math.round(entry.avgDurationMs / entry.count);
185
+ if (entry.tasks > 0) {
186
+ const succeeded = agents
187
+ .filter((a) => a.type === Object.keys(summary.byType).find((k) => summary.byType[k] === entry))
188
+ .reduce((s, a) => s + a.metrics.tasksSucceeded, 0);
189
+ entry.successRate = `${Math.round((succeeded / entry.tasks) * 100)}%`;
190
+ }
191
+ }
192
+ return json(summary);
193
+ },
194
+ },
195
+ ];
196
+ //# sourceMappingURL=agent-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/agent-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Analysis tools — diff classification, complexity scoring via NAPI.
3
+ */
4
+ import type { MCPTool } from "../../types.js";
5
+ export declare const analyzeTools: MCPTool[];
6
+ //# sourceMappingURL=analyze-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/analyze-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAQ7D,eAAO,MAAM,YAAY,EAAE,OAAO,EAwCjC,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Analysis tools — diff classification, complexity scoring via NAPI.
3
+ */
4
+ import { createAnalysisEngine } from "../../napi/index.js";
5
+ const engine = createAnalysisEngine();
6
+ function text(t) { return { content: [{ type: "text", text: t }] }; }
7
+ function json(d) { return { content: [{ type: "text", text: JSON.stringify(d, null, 2) }] }; }
8
+ export const analyzeTools = [
9
+ {
10
+ name: "analyze_diff",
11
+ description: "Classify a git diff — returns file-level classification, impact, risk factors",
12
+ inputSchema: {
13
+ type: "object",
14
+ properties: {
15
+ diff: { type: "string", description: "Git diff content (from `git diff`)" },
16
+ },
17
+ required: ["diff"],
18
+ },
19
+ handler: async (input) => json(engine.classifyDiff(input.diff)),
20
+ },
21
+ {
22
+ name: "analyze_commit",
23
+ description: "Classify a commit message (conventional commit detection)",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ message: { type: "string", description: "Commit message" },
28
+ },
29
+ required: ["message"],
30
+ },
31
+ handler: async (input) => text(engine.classifyCommit(input.message)),
32
+ },
33
+ {
34
+ name: "analyze_complexity",
35
+ description: "Score code complexity (0.0 = simple, 1.0 = very complex)",
36
+ inputSchema: {
37
+ type: "object",
38
+ properties: {
39
+ source: { type: "string", description: "Source code content" },
40
+ },
41
+ required: ["source"],
42
+ },
43
+ handler: async (input) => {
44
+ const score = engine.complexityScore(input.source);
45
+ return json({ score, level: score < 0.3 ? "low" : score < 0.6 ? "medium" : "high" });
46
+ },
47
+ },
48
+ ];
49
+ //# sourceMappingURL=analyze-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/analyze-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;AAEtC,SAAS,IAAI,CAAC,CAAS,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,SAAS,IAAI,CAAC,CAAU,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;aAC5E;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;KAC1E;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;aAC3D;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC;KAC/E;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAC/D;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAgB,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Config tools — configuration get/set/list.
3
+ */
4
+ import type { MCPTool } from "../../types.js";
5
+ export declare const configTools: MCPTool[];
6
+ //# sourceMappingURL=config-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/config-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAQ7D,eAAO,MAAM,WAAW,EAAE,OAAO,EAwDhC,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Config tools — configuration get/set/list.
3
+ */
4
+ import { loadConfig } from "../../config.js";
5
+ import { writeFileSync, mkdirSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ function text(t) { return { content: [{ type: "text", text: t }] }; }
8
+ function json(d) { return { content: [{ type: "text", text: JSON.stringify(d, null, 2) }] }; }
9
+ export const configTools = [
10
+ {
11
+ name: "config_get",
12
+ description: "Get current configuration",
13
+ inputSchema: {
14
+ type: "object",
15
+ properties: {
16
+ key: { type: "string", description: "Config key path (e.g. 'memory.dimensions'). Omit for full config." },
17
+ },
18
+ },
19
+ handler: async (input) => {
20
+ const config = loadConfig();
21
+ if (!input.key)
22
+ return json(config);
23
+ const keys = input.key.split(".");
24
+ let val = config;
25
+ for (const k of keys) {
26
+ if (val && typeof val === "object" && k in val) {
27
+ val = val[k];
28
+ }
29
+ else {
30
+ return text(`Key not found: ${input.key}`);
31
+ }
32
+ }
33
+ return json(val);
34
+ },
35
+ },
36
+ {
37
+ name: "config_set",
38
+ description: "Set a configuration value and save to file",
39
+ inputSchema: {
40
+ type: "object",
41
+ properties: {
42
+ key: { type: "string", description: "Config key path" },
43
+ value: { description: "New value" },
44
+ },
45
+ required: ["key", "value"],
46
+ },
47
+ handler: async (input) => {
48
+ const BANNED_KEYS = new Set(["__proto__", "constructor", "prototype"]);
49
+ const config = loadConfig();
50
+ const keys = input.key.split(".");
51
+ for (const k of keys) {
52
+ if (BANNED_KEYS.has(k))
53
+ throw new Error(`Forbidden key segment: ${k}`);
54
+ }
55
+ let obj = config;
56
+ for (let i = 0; i < keys.length - 1; i++) {
57
+ if (!(keys[i] in obj))
58
+ obj[keys[i]] = {};
59
+ obj = obj[keys[i]];
60
+ }
61
+ obj[keys[keys.length - 1]] = input.value;
62
+ const dir = join(process.cwd(), ".aiyoucli");
63
+ mkdirSync(dir, { recursive: true });
64
+ writeFileSync(join(dir, "config.json"), JSON.stringify(config, null, 2));
65
+ return text(`Set ${input.key} = ${JSON.stringify(input.value)}`);
66
+ },
67
+ },
68
+ ];
69
+ //# sourceMappingURL=config-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/config-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Coordination tools — swarm coordination status.
3
+ */
4
+ import type { MCPTool } from "../../types.js";
5
+ export declare const coordinationTools: MCPTool[];
6
+ //# sourceMappingURL=coordination-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/coordination-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAM7D,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAiCtC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Coordination tools — swarm coordination status.
3
+ */
4
+ import { existsSync, readFileSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ function json(d) { return { content: [{ type: "text", text: JSON.stringify(d, null, 2) }] }; }
7
+ export const coordinationTools = [
8
+ {
9
+ name: "coordination_status",
10
+ description: "Get coordination status — swarm state, active agents, tasks",
11
+ inputSchema: { type: "object", properties: {} },
12
+ handler: async () => {
13
+ const cwd = process.cwd();
14
+ const base = join(cwd, ".aiyoucli");
15
+ const loadJson = (path) => {
16
+ if (!existsSync(path))
17
+ return null;
18
+ try {
19
+ return JSON.parse(readFileSync(path, "utf-8"));
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ };
25
+ const swarm = loadJson(join(base, "swarm", "state.json"));
26
+ const agents = loadJson(join(base, "agents", "store.json")) || [];
27
+ const tasks = loadJson(join(base, "tasks", "store.json")) || [];
28
+ return json({
29
+ swarm: swarm ? { id: swarm.id, topology: swarm.topology, status: swarm.status } : null,
30
+ agents: {
31
+ total: agents.length,
32
+ active: agents.filter((a) => a.status !== "stopped").length,
33
+ },
34
+ tasks: {
35
+ total: tasks.length,
36
+ pending: tasks.filter((t) => t.status === "pending").length,
37
+ in_progress: tasks.filter((t) => t.status === "in_progress").length,
38
+ completed: tasks.filter((t) => t.status === "completed").length,
39
+ },
40
+ });
41
+ },
42
+ },
43
+ ];
44
+ //# sourceMappingURL=coordination-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/coordination-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,SAAS,IAAI,CAAC,CAAU,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAEpC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACnC,IAAI,CAAC;oBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;YAChF,CAAC,CAAC;YAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhE,OAAO,IAAI,CAAC;gBACV,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBACtF,MAAM,EAAE;oBACN,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;iBAChF;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,MAAM;oBACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;oBAC/E,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM;oBACvF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;iBACpF;aACF,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Distiller tools — convert Markdown to TOON (Dense Structured Instructions).
3
+ * ~52% fewer tokens for the same semantic content.
4
+ */
5
+ import type { MCPTool } from "../../types.js";
6
+ export declare const distillerTools: MCPTool[];
7
+ //# sourceMappingURL=distiller-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/distiller-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAe7D,eAAO,MAAM,cAAc,EAAE,OAAO,EAiCnC,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Distiller tools — convert Markdown to TOON (Dense Structured Instructions).
3
+ * ~52% fewer tokens for the same semantic content.
4
+ */
5
+ import { distillMarkdown, distillFile } from "../../napi/index.js";
6
+ import { resolve } from "node:path";
7
+ import { realpathSync, existsSync } from "node:fs";
8
+ function assertWithinCwd(filePath) {
9
+ const resolved = existsSync(filePath) ? realpathSync(resolve(filePath)) : resolve(filePath);
10
+ const cwd = realpathSync(process.cwd());
11
+ if (!resolved.startsWith(cwd + "/") && resolved !== cwd) {
12
+ throw new Error(`Path must be within project root: ${resolved}`);
13
+ }
14
+ }
15
+ function text(t) { return { content: [{ type: "text", text: t }] }; }
16
+ export const distillerTools = [
17
+ {
18
+ name: "distill_markdown",
19
+ description: "Convert Markdown to TOON format (Dense Structured Instructions). ~52% fewer tokens.",
20
+ inputSchema: {
21
+ type: "object",
22
+ properties: {
23
+ markdown: { type: "string", description: "Markdown content to distill" },
24
+ },
25
+ required: ["markdown"],
26
+ },
27
+ handler: async (input) => {
28
+ const result = distillMarkdown(input.markdown);
29
+ return text(result);
30
+ },
31
+ },
32
+ {
33
+ name: "distill_file",
34
+ description: "Distill a Markdown file to TOON format. Reads the file and returns dense instructions.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ path: { type: "string", description: "Path to the .md file" },
39
+ },
40
+ required: ["path"],
41
+ },
42
+ handler: async (input) => {
43
+ const path = input.path;
44
+ assertWithinCwd(path);
45
+ const result = distillFile(path);
46
+ return text(result);
47
+ },
48
+ },
49
+ ];
50
+ //# sourceMappingURL=distiller-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/distiller-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEnD,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,CAAS,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aACzE;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,QAAkB,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,wFAAwF;QACrG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAClC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * GCC tools — Git Context Controller.
3
+ */
4
+ import type { MCPTool } from "../../types.js";
5
+ export declare const gccTools: MCPTool[];
6
+ //# sourceMappingURL=gcc-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcc-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/gcc-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AAc7D,eAAO,MAAM,QAAQ,EAAE,OAAO,EAsB7B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * GCC tools — Git Context Controller.
3
+ */
4
+ import { execSync } from "node:child_process";
5
+ function text(t) { return { content: [{ type: "text", text: t }] }; }
6
+ function json(d) { return { content: [{ type: "text", text: JSON.stringify(d, null, 2) }] }; }
7
+ function git(cmd) {
8
+ try {
9
+ return execSync(`git ${cmd}`, { encoding: "utf-8", timeout: 10000 }).trim();
10
+ }
11
+ catch {
12
+ return "";
13
+ }
14
+ }
15
+ export const gccTools = [
16
+ {
17
+ name: "git_context",
18
+ description: "Get current git context — branch, status, recent commits, staged changes",
19
+ inputSchema: { type: "object", properties: {} },
20
+ handler: async () => {
21
+ const branch = git("rev-parse --abbrev-ref HEAD");
22
+ const status = git("status --porcelain");
23
+ const log = git("log --oneline -10");
24
+ const diff = git("diff --stat");
25
+ const staged = git("diff --cached --stat");
26
+ return json({
27
+ branch,
28
+ modified_files: status.split("\n").filter(Boolean).length,
29
+ status: status || "(clean)",
30
+ recent_commits: log.split("\n").filter(Boolean),
31
+ unstaged_changes: diff || "(none)",
32
+ staged_changes: staged || "(none)",
33
+ });
34
+ },
35
+ },
36
+ ];
37
+ //# sourceMappingURL=gcc-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcc-tools.js","sourceRoot":"","sources":["../../../src/mcp/tools/gcc-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,SAAS,IAAI,CAAC,CAAS,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,SAAS,IAAI,CAAC,CAAU,IAAmB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtH,SAAS,GAAG,CAAC,GAAW;IACtB,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAE3C,OAAO,IAAI,CAAC;gBACV,MAAM;gBACN,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;gBACzD,MAAM,EAAE,MAAM,IAAI,SAAS;gBAC3B,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC/C,gBAAgB,EAAE,IAAI,IAAI,QAAQ;gBAClC,cAAc,EAAE,MAAM,IAAI,QAAQ;aACnC,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC"}